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

复制表

--复制表
create table new_table as select * from Product
--复制表结构不要数据
create table new_table as select * from Product where 1=2

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

删除表

--删除表
delete table new_table
--删除表,无法找回
truncate table new_table

序列

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

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

使用语句创建序列

----创建序列
create sequence user_seq
increment by 1
start with 1
nomaxvalue
nominvalue
nocache

多表查询

select * from p_emp e ,p_dept d where e.deptno=d.deptno

笛卡尔积

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

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

内连接

select * from p_emp e ,p_dept d where e.deptno=d.deptno

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

解决办法:

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

--左外链接
select * from p_emp e left join p_dept d on e.deptno=d.deptno

或者使用 +  符号

select * from p_emp e, p_dept d where e.deptno=d.deptno(+)

查询用户的表

--查询所有表
select * from user_tables

自连接

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

--自连接
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 是结构化查询中用到的,其基本语法是:

select ... from <TableName>

where <Conditional-1>

start with <Conditional-2>

connect by <Conditional-3>

;

<Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。

<Conditional-2>:查询结果重起始根结点的限定条件。

<Conditional-3>:连接条件

--层次查询
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不会变。

--查询前十列数据
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 
时间: 2024-11-09 18:32:43

Oracle数据库(三)表操作,连接查询,分页的相关文章

oracle系列(三)表操作基础

支持的数据类型: 字符型char 定长 最大2000varchar2() 变长 最大4000clob 字符型大对象 最大4G 数字型number范围 -10的38次方到10的+38次方;number(5,2) 一个小数,有效位5个,小数点后2个数字number(5) 表示一个5位的整数 日期类型datetimestamp 二进制数据blob 保密性较高,存入数据库/其他情况,保持在文件服务器,数据库只存文件路径 建表: create table student( stuId varchar2(1

sqlplus连接oracle数据库三种方式

方式一:命令提示符下敲入sqlplus,然后键入用户名和口令,测试查询 方式二:命令提示符下 敲入sqlplus 用户名/口令@数据库实例 方式三:命令提示符下敲入sqlplus /nolog,然后连接数据库connect scott/[email protected] sqlplus连接oracle数据库三种方式

Oracle数据库用EF操作的示例

Using EF Oracle Sample Provider with EDM Designer  (from msdn) Many people are asking if it is possible to use EFOracleProvider with EDM Designer in Visual Studio 2008 SP1. The answer is yes, but because the sample doesn't include a DDEX provider req

Oracle 数据库整理表碎片

Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎片.删除操作释放的空间不会被插入操作立即重用,甚至永远也不会被重用. 怎样确定是否有表碎片 -- 收集表统计信息 SQL> exec dbms_stats.gather_table_stats(ownname=>'SCHEMA_NAME',tabname=> 'TABLE_NAME'); -

Oracle数据库安装图文操作步骤

Oracle数据库安装图文操作步骤 一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地址: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html以下两网址来源此官方下载页网. win 32位操作系统 下载地址: http://download.oracle.com/otn

Oracle EBS-SQL (SYS-7):表单个性化查询.sql

animation-timing-function animation-timing-function 规定动画的速度曲线.速度曲线定义动画从一套 CSS 样式变为另一套所用的时间.在平常的取值中,主要有以下几个: 值 描述 linear 动画从头到尾的速度是相同的. ease 默认.动画以低速开始,然后加快,在结束前变慢. ease-in 动画以低速开始. ease-out 动画以低速结束. ease-in-out 动画以低速开始和结束. cubic-bezier(n,n,n,n) 在 cub

Oracle数据库创建表空间

--Oracle数据库创建表空间 create tablespace new_taspace --表空间名 DATAFILE 'D:\NEWTABLESPACE.DBF'   --表空间关联的数据文件和位置 size 200M --文件初始大小 autoextend on next 20MB MAXSIZE 400MB; --文件大小可自动扩展,每次扩展20MB,最大400MB --创建表空间 create tablespace new_taspace1 --表空间关联的数据文件和位置 DATA

oracle解决多表关联分组查询问题

做了一个功能需要分组查询,同时查询A表分组查询的ID需要关联B表的数据,本来想两个表关联查询,但是报group by 语法不正确.所以做了以下修改. select count(*), cindexid,(select vindexcode from comindex where pk_index =cindexid) as vindexcode ,iquesttype from rqt_examquest where pk_examquest in (    select cexamquesti

C#获取oracle数据库某表的列名和数据类型【转载】

C#获取oracle数据库某表的列名和数据类型的sql语句为: select column_name,data_type ,data_length,data_precision,data_scale from user_tab_columns [where table_name=表名] 关于此sql语句的说明: column_name:某表列名(varchar2(30)); data_type:某表列的数据类型(varchar2(106)); data_length:某表列的长度(number)

oracle数据库的表的操作

今天,学习oracle数据库中数据库的创建和表的创建删除修改等等操作.开始的时候,数据库一直连接不上,后来知道原来是几个服务没有开启:OracleXETNSListener,OracleXEClrAgent,OracleServiceXE.参考网址:http://jingyan.baidu.com/article/3d69c5518f2de2f0ce02d747.html 我发现有些大学时候学习sql语句,有的并不适用oracle数据库.下面是我实践中用到的: --创建外键1 CREATE TA