10.Oracle和mysql中的分页处理
Mysql分页通过关键字 limit
Oracle中的分页通过:rownum,但是不能使用> >= ,而且当rownum和orderby一起使用时,会首先选出符合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语句insert和update和delete
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: 外键约束