7、表链接的应用
//求部门平均薪水的等级 select deptno,avg_sal,grade from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on(t.avg_sal between s.losal and s.hisal); //求部门平均的薪水等级 select deptno,avg(grade) from (select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal)) t group by deptno; //雇员中有哪些人是经理人 select ename from emp where empno in (select distinict mgr from emp); //不用组函数求薪水的最高值 select disinict sal from emp where sal not in (select distinict e1.sal from emp e1 join emp e2 on (e1.sal(select max(sal) from emp empno not in (select distinct mgr from emp where mgr is not null ) )
六、Oracle中的分页
# 薪水最高的第六个人到第十个人 select ename,sal from ( select enmae,sal,rownum r from ( select ename,sal from emp order by sal desc; ) ) where r>=6 and r<=10;
七、其他
7.1创建新用户
1、backup scott
进入到一个目录下(cd temp),将目录里的文件全部删掉(del *.*),
然后敲exp,输入用户名和密码 scott/tiger 回车 回车 U yes yes yes 成功导出
在temp里有一个expdat.dmp
2、create user
create user liuchao identified by liuchao default tablespace users quota 10M on users;
(users表空间上分配10兆空间)
grant create session,create table,create view to liuchao
3、import the data
imp 回车 liuchao/liuchao scott(只导入scott用户的东西)
4、验证:
conn liuchao/liuchao
7.2DML语句
DML语句就是insert delete update语句,实例略。
7.3一些术语
1、主键:可以唯一标识整条记录的,(非空唯一),逻辑意义代表不同的记录
2、外键:一张表的两个字段,两张表的两个字段上,被参考的字段必须是主键
3、事务:一系列的操作,要么同时完成,要么都不完成,碰到rollback,(commit,DDL语句,正常断开连接)
事务结束
4、索引:相当字典里的索引,读起来更快。索引的用途是访问量特别大,因此不要轻易的建立索引(耗费
的空间大)
5、视图:视图就是子查询,视图的优点是简化查询,保护私有数据。缺点是表结构改了,视图得跟着改,
增加了维护的支出。
6、三范式:数据库设计的规则
(1)不存在冗余数据 主键 , 设计任何表都要有主键,(要有主键,列不可分,不能重复)
(2)多对多设计时所要遵循的东西,当一张表有多个字段作为主键的时候,(非主键的不能依赖于
部分主键,不能存在部分依赖。)
(3)存在传递依赖 。
7.4DDL语句
DDL语句就是create、alert语句。
#create语句 create table stu ( id number(6), name varchar2(20) constraint stu_namenn not null, sex number(1), age number(3), sdate date, grade number(2) default 1 class number(4) references class(id), email varchar2(50), constraint stu_class_fk foreign key (class) references class(id) constraint stu_id_pk primary key (id), constraint stu_name_email_uni unique(email,name) ); #alert语句 alter table stu add(addr varchar2(100)); alter table stu drop (addr); alter table stu add(addr varchar2(100)) ; alter table stu modify (addr varchar2(50)); alter table stu drop constraint stu_class_fk;//一般不需要修改 alter table stu add constraint stu_class_fk foreign key (class) references class(id);