oracle学习笔记(三)---分页处理,CRUD,集合操作,连接,DDL

10.Oraclemysql中的分页处理

Mysql分页通过关键字 limit

Oracle中的分页通过:rownum,但是不能使用>  >= ,而且当rownumorderby一起使用时,会首先选出符合rownum条件的记录,然后在进行排序。

我们将rownum转化为普通字段就能使用>>=

Oracle是按照效率来编写的,不考虑到用户的体验。

11.表连接全外连接

笛卡尔积--->把两张表拼接出来,列出所有的可能。两张表的行数相乘,是虚表。

然后我们在用where子句进行过滤,得到我们所需要的字段。Where子句是表连接的条件。

自连接的效率比子查询要快,尽可能不要用子查询,子查询效率较低。

求编号30部门的雇员的名字和所在的部门名称。

select ename,dname from emp,dept

where emp.deptno=dept.deptno and emp.deptno=30;

或者

select ename,dname from emp join dept on

emp.deptno=dept.deptno where emp.deptno=30;

12.oracle的集合操作

union:并集

minus:交集,前一个结果集减去后一个结果集,差集。

select ename,empno,deptno from emp where deptno in (10,20)

minus

      selectename,empno,deptno from emp where sal<1500;

结果集中的对应列之间的数据类型必须相同,才能进行合并,否则会出现异常。

13.DML语句insertupdatedelete

CRUD---增删改查

从一个表复制到另一个表

Create table empcopy as select * from emp;

empcopy---表名

Desc 表名 ----查看一个表的结构

插入--insert into 表名(1,列2...)values(1的值,列2的值...)

Insert intoempcopy(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1111,’creep’,’clerk’,7902,sysdate,10000,3000,40);

或者

Insert into empcopy(empno,ename)values(2222,’nsz’);

更新--update 表名 set 字段1,字段2...where子句

如果不写where子句的话,就把表中所有的行都改变了

 Update empcopy setsal=sal+800;

如果写where子句的话,就只更新满足条件的行

Update empcopy set sal=sal+800 where empno=1111;

删除---delete from 表名 where子句

Delete从表中删除行,甚至是表中的所有行,但不删除表本身,表还在,也就是不删除表结构。

Delete from empcopy where sal < 5000;

Delete from empcopy; ----删除empcopy表中的所以数据

Truncate table empcopy----清空表,但表结构还在,速度比delete更快

Drop table empcopy---删除表,包括表结构

14.DDL操作

Oracle的约束:

Not null: 非空 unique:唯一 check:自定义约束

Primary key:主键约束 foreign key: 外键约束

你可能感兴趣的:(oracle,分页,DDL,crud,连接)