前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle数据库(三)表操作,连接查询,分页

Oracle数据库(三)表操作,连接查询,分页

作者头像
二十三年蝉
发布2018-02-28 10:54:02
1.9K0
发布2018-02-28 10:54:02
举报
文章被收录于专栏:闻道于事

复制表

代码语言:javascript
复制
--复制表
create table new_table as select * from Product
代码语言:javascript
复制
--复制表结构不要数据
create table new_table as select * from Product where 1=2

在where后面跟一个不成立的条件,就会仅复制表的结构而不复制表的内容。

删除表

代码语言:javascript
复制
--删除表
delete table new_table
--删除表,无法找回
truncate table new_table

序列

序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以

通过查询检查当前值,或使序列增至下一个值。

 使用语句创建序列

代码语言:javascript
复制
----创建序列
create sequence user_seq
increment by 1 
start with 1
nomaxvalue
nominvalue
nocache

多表查询

代码语言:javascript
复制
select * from p_emp e ,p_dept d where e.deptno=d.deptno

笛卡尔积

 笛卡尔积在sql中实现的方式是交叉连接,所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数的一个概念,表示两个表中每一行数据任意组合。

简单来说,就是两个表不加条件限制的进行连接,出现的数据行数是两个表数据行数的乘积。

内连接

代码语言:javascript
复制
select * from p_emp e ,p_dept d where e.deptno=d.deptno

内连接的局限性:如果有空值,查询结果可能会有缺失。

解决办法:

以一个表为基准进行外链接:

代码语言:javascript
复制
--左外链接
select * from p_emp e left join p_dept d on e.deptno=d.deptno

或者使用 +  符号

代码语言:javascript
复制
select * from p_emp e, p_dept d where e.deptno=d.deptno(+)

 查询用户的表

代码语言:javascript
复制
--查询所有表
select * from user_tables

自连接

有些情况可能会遇到,将一个表的相同或者不同列的数据进行比较,需要将一个表来进行当做两个表进行自连接,进而比较其中的数据再进行查询

代码语言:javascript
复制
--自连接
select e1.ename,e2.ename from p_emp e1,p_emp e2 where e1.empno=e2.mgr

层次查询

oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:

代码语言:js
复制
select ... from <TableName>
where <Conditional-1>
start with <Conditional-2>
connect by <Conditional-3>
;

<Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。
<Conditional-2>:查询结果重起始根结点的限定条件。
<Conditional-3>:连接条件
代码语言:javascript
复制
--层次查询
select e.*,level from p_emp e connect by prior e.empno=e.mgr start with e.ename='KING' order by level

伪列: level rownum

rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,

而且rownum不能以任何表的名称作为前缀。

需要注意的是:如果按照主键排序,rownum的顺序会跟着变化,如果不是按照主键排序,rownum不会变。

代码语言:javascript
复制
--查询前十列数据
select e.*,rownum from p_emp e where rownum <=10
--6-10列数据,嵌套查询
select * from (select e.*,rownum rownu from p_emp e where rownum <=10) r where r.rownu >5 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档