oracle数据库学习总结(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle数据库———学习总结
基础:
一、ORACLE中字段的数据类型
1、字符型
1)char 范围最大2000个字节定长
char(10) '张三' 后添空格6个把10个字节补满'张三'
性别char(2) '男'
2)varchar2 范围最大4000个字节变长
varchar2(10) '张三' 在数据库中'张三'
2、数字number 范围10的-38次方到10的38次方
可以表示小数也可以表示整数
number(4) 最大表示4位整数-9999 到9999
number(5,2) 表示5位有效数字2位小数的一个小数-999.99 到999.99
3、日期date 包含年月日和时分秒7个字节
4、图片blob 二进制大对象图像/声音4G
二、如何建表
学生表student
create table student( --学生表
xh number(4), --学号
xm varchar2(10), --姓名
sex char(2), --性别
birthday date, --日期
sal number(7,2) --奖学金
);
三、字段的添加、删除、修改
1、添加字段(学生所在班级classid)
alter table student add (classid number(2));
2、修改字段的长度
alter table student modify (xm varchar2(12)) ;
3、修改字段的类型(不能有记录的)
alter table student modify (xh varchar2(5));
4、删除一个字段
alter table student drop column sal;
5、删除表
drop table student;
6、表的名字修改
rename student to stu;
7、字段如何改名字
--先删除
a)alter table student drop column sal;
--再添加
b)alter table student add (salary number(7,2));
四、插入字段(values是insert语句的一个关键词,后面跟要插入的一组字段值。)
1、所有字段都插入
insert into student values ('A001','张三','男','01-5月-05',10);
2、部分字段插入
insert into student(xh,xm,sex) values ('A003','JOHN','女');
3、插入空值
insert into student(xh,xm,sex,birthday) values ('A004','MARTIN','男',null);
五、删除语句
1、删除delete
delete from student; 删除所有记录,表结构还在,写日志,可以恢复的,速度慢
drop table student; 删除表的结构和数据
delete from student where xh='A001'; 删除一条记录
truncate table student; 删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快
六、查询语句
1、查询select
select * from student;
select xh,xm,sex from student;
select * from student where xh like 'A%1'; %任意多个字符
select * from student where xh like 'A__1'; _1个字符
七、混合函数
1、求最大值
select greatest(100,90,80,101,01,19) from dual;
2、求最小值
select least(100,0,-9,10) from dual;
八、空值转换函数
nvl(comm,0) 字段为空值那么就返回0 否则返回本身
select comm,nvl(comm,0) from emp;
comm 类型和值的类型是一致的
九、复杂的函数
1、decode 选择结构(if ... elseif .... elesif ... else结构)
例、要求:
sal=800 显示低工资
sal=3000 正常工资
sal=5000 高工资
只能做等值比较
解决:select sal,decode(sal,800,'低工资',3000,'正常工资',5000,'高工资','没判断')
from emp;
表示如下的if else 结构
if sal=800 then
'低工资'
else if sal =3000 then
'正常工资'
else if sal = 5000 then
'高工资'
else
'没判断'
end if
sal > 800 sal -800 > 0
十、分组函数
分组函数返回值是多条记录或计算后的结果
group by、sum、avg
1、计算记录的条数count
select count(comm) from emp; 字段上count 会忽略空值
comm不为空值的记录的条数
2、group by 分组统计
--有分组函数的时候
--分组统计的功能
统计每种工作的工资总额是多少??
select job,sum(sal) from emp
group by job; --行之间的数据相加
select sum(sal) from emp; --公司的工资总额
3、显示平均工资>2000的工作???
<1>统计每种工作的平均工资是多少
<2>塞选出平均工资>2000的工作
从分组的结果中筛选having
select job,avg(sal) from emp
group by job
having avg(sal) > 2000;
group by 经常和having搭配来筛选
十一、约束
主键约束--每个表要有主键,唯一的标识一行数据
非空约束
唯一性
外键约束
检查约束
1、建立表的同时使用约束
create table student( --学生表
xh number(4) primary key, --学号主键
xm varchar2(10) not null, --姓名不能为空
sex char(2) check (sex in ('男','女')), --性别
birthday date unique, --日期
sal number(7,2) check (sal between 500 and 1000),--奖学金sal >=500 and sal <=1000
classid number(2) references cla(id)