Oracle进过两天的培训以后终于是结束了,回顾这两天也确实觉得不爽,整天写那些SQL也会觉得无趣。但是基本知识还是需要掌握的.下面就来总结一下今天学习的内容吧!
1、Oracle的数据类型
1.1 char(size)-- 当需要固定长度的字符串是,使用char数据类型,char数据类型可以存储字母和数字,可以存储1-2000个字节
1.2 varchar2(size)--varchar2数据类型支持可变长字符串
1.3 long--long数据类型存储可变长度字符数据,最多可以存储2GB数据
1.4 number--所有数字类型都称为number,number(n,m)--其中n小数点精度,m小数点后的位数
...还有一些不常用的数据类型就不写了...
2、表的建立
2.1 CREATE TABLE emp_hchen AS(SELECT * FROM emp)--将emp表结构及数据一起复制到一张emp_hchen表中
如果只需要复制emp表结构而不需要数据的话,可以使用SELECT TABLE emp_hchen AS(SELECT * FROM emp WHERE 1=0)
2.2 对表的DDL操作就不详细介绍了,介绍几个平时不常用的
对表重命名:RENAME 旧的表名 TO 新的表名--此语句只能在Oracle数据库中使用
3、约束
为了保证数据的唯一性,我们通常需要创建一些约束才实现.这里将约束大体上分为了5类:
3.1、主键约束:主键表示唯一的标识,本身不能为空且不能重复--primary key(pk)
3.2、唯一约束:在一张表中只允许建立一个主键约束,而其他列如果不希望出现重复值可以使用唯一性约束--unique key(uk)
3.3、检查约束:检查一个列的值是否合法,比如:性别只能取男女--default '男' check(sex in('男','女'),年龄只可以在0~150之间not null check(age between 0 and 150) ...
3.4、非空约束:很简单not null
3.5、外键约束:在两张表之间进行约束
这里有几点需要注意的是:对于主键约束我们知道在一张表中只允许有一个主键,但这个主键可以是一个或多个字段的组合值.当然除了在创建表时在字段的后面添加约束条件外,我们还可以用下面的方式创建约束条件
CONSTRAINT person_name_uk UNIQUE(name)
1、此列经常被放到WHERE字段或JOIN来作条件查询。
2、此列含有大量的数据。
3、此列含有大量的空值。
4、两个或几个列经常同时放到WHERE字段进行组合查询
表很大而且只有少于2-4% 的ROW可能被查询的时候
表很小或是表被更新频繁,这样的情况不建议使用
from (select ROWNUM rn, temp.*
from (select e.ename, e.sal
from emp e
where rownum <= 10
order by e.sal desc) temp)
where rn > 5
习题二、不用组函数求最高工资
from (select temp.*, ROWNUM rn
from (select * from emp e order by e.sal desc) temp)
where rn = 1
习题三、求平均薪水最高的部门名称
from dept d,
(select *
from (select ROWNUM rn, t.*
from (select round(avg(e.sal)) avgSal, e.deptno
from emp e
group by e.deptno
order by avgSal desc) t)
where rn = 1
) temp