Oracle数据库学习笔记3

select * from stuent;
alter table student add stu_card char(18)

--主键约束:非空,唯一 primary key
alter table student add constraint
pk_stuid primary key(stu_id)

--检查约束 check ck_xxx
alter table student add constraint
ck_stusex check(stu_sex='男' or stu_sex='女')

--唯一约束:不重复(只能允许一个为空) unique
alter table student add constraint
up_stucard unique(stu_card)

--默认约束 default
alter table student modify
stu_birth default sysdate

--非空约束 not all
alter table student modify(stu_name not null)

-主外键约束

alter table stu_score add constanint fk_stuid
foreign key(stu_id) references student(stu_id);


create table stu_score(
stu_id number,
stu_score number(5,1)
);

--删除表 (先删除外键表,再删除主键表)
drop table student;

1.每张表必须有主键,且为原子列(每个字段不可再分)
2.非主键列完全依赖与主键列
3.非主键列不能依赖与非主键列

DML语句:
--增加数据 insert into table_name
insert into student
(stu_id,stu_name,stu_birth,stu_card)
values
(1,'张三丰','1-10月-1990','123');

insert into student
values(2,'梅超风',default,'123456','男');

select * from student;
commit;

--修改数据 update table_name set 字段名=值;
update student set stu_sex = '女' where stu_id = 2;

--删除数据 delete 表明
delete from student where stu_id = 1;

--查询数据 select
select
from
group by
having
order by
select * from emp
select * from dept

--复制表
create table emp_temp as select * from emp;
select * from emp_temp

--查询员工的编号,姓名,工作岗位
select empno,ename,job from emp_temp;
--查询20部门的员工信息
select * from emp_temp where deptno = 20;

select empno as 员工编号,ename 员工姓名
from emp_temp;

--查询员工工资大于3000的员工信息
select * from emp_temp where sal > 3000;
--查询不是30部门的员工信息
select * from emp_temp where deptno <> 30;

--查询20部门的员工信息,以下列格式显示
XXX的薪水是XXX
selsect ename || ‘的薪水是;’|| sal
from emp_temp;

--查询所有员工的月收入
select empno,ename,sal,comm,
sal+nvl(comm,0) 月收入
from emp_temp;

--模糊查询
select * from emp_temp
where ename like '%A%'; %是可出现可不出现的,可出现多个

--查询第二个字符是A的,_是占位符,一定出现的
select * from emp_temp
where ename like '_A%';

--查询员工的薪水在3000-5000之间的[]
select * from emp_temp
where sal between 3000 and 5000;

不在3000和5000的
select * from emp_temp
where sal not between 3000 and 5000;

--in
selsect * from emp_temp
where deptno not in (20,30);

--查询那些员工没有奖金
select * from emp_temp
where comm is null;

select * from emp_temp
where comm is not null

posted @ 2017-07-14 21:27  Lawliet__zmz  阅读(144)  评论(0编辑  收藏  举报