目录:
日期处理
唯一性约束和非空约束的列级实现
检查约束的列级约束
主键 唯一 和 检查的表级约束
级联删除和级联置空
1 日期处理
1.1 问题
给你一个日期 把这个日期处理成对应月的最后一天的最后一秒。
sysdate
1.2 步骤
本案例的完整代码如下所示:
select to_char(trunc
(last_day(sysdate))+1-1/(246060),
‘yyyy-mm-dd hh24:mi:ss’) from dual;
last_day(sysdate) 求sysdate这个月最后一天的时间点
trunc(last_day(sysdate))+1-1/(246060) 截取这个月的最后一天的最后一秒
2 唯一性约束和非空约束的列级实现
2.1 问题
建立一张表,有三个字段。
id number 设置成主键
fname varchar2(30) 设置成唯一
sname varchar2(30) 设置成非空
2.2 步骤
本案例的完整代码如下所示:
create table testcolumn9527(
id number constraint
testcolumn9527_id_pk primary key,
fname varchar2(30) constraint
testcolumn9527_fname_uk unique,
sname varchar2(30) constraint
testcolumn9527_sname_nn not null);
constraint testcolumn9527_id_pk primary key 设置成主键
constraint testcolumn9527_fname_uk unique 设置成唯一
constraint testcolumn9527_sname_nn not null 设置成非空
3 检查约束的列级约束
3.1 问题
建立一张表
id number 设置成主键
salary number 要求大于3500。
3.2 步骤
本案例的完整代码如下所示:
create table testcolumn9527(
id number constraint
testcolumn9527_id_pk primary key,
salary number constraint
testcolumn9527_salary_ck check(
salary>3500)
);
constraint testcolumn9527_id_pk primary key
设置id成主键
constraint testcolumn9527_salary_ck check(salary>3500)
要求工资必须大于3500
4 主键 唯一 和 检查的表级约束
4.1 问题
建立一张表
id numb
fname varchar2(30)
sname varchar2(30)
salary number
要求使用表级约束 规定id是主键
fname sname 联合唯一
salary 要求大于4000。
4.2 步骤
本案例的完整代码如下所示:
create table testtable9527(
id number ,
fname varchar2(30),
sname varchar2(30),
salary number,
constraint
testtable9527_id_pk primary key(id),
constraint
testtable9527_fname_sname_uk
unique(fname,sname),
constraint
testtable9527_salary_ck check(salary>4000)
);
create table testtable9527
创建一张名为testtable9527的表
constraint testtable9527_id_pk primary key(id)
设置id成主键
constraint testtable9527_fname_sname_uk unique(fname,sname)
设置fname和sname 联合唯一约束性
constraint testtable9527_salary_ck check(salary>4000)
要求工资必须大于4000
5 级联删除和级联置空
5.1 问题
建立这两张表 然后建立表级的外键关系。
5.2 步骤
本案例的完整代码如下所示:
create table dept9527(
id number primary key,
name varchar2(30)
);
insert into dept9527 values(1,'test');
insert into dept9527 values(2,'app');
commit;
create table emp9527(
id number primary key,
name varchar2(30),
dept_id number,constraint
emp9527_dept_id_dept9527_id_fk
foreign key(dept_id)
references dept9527(id) on delete set null
);
insert into emp9527 values(1,'x',1);
insert into emp9527 values(2,'y',1);
insert into emp9527 values(3,'z',2);
commit;
/*删除id=1的部门*/
delete from dept9527 where id=1;
上述代码以下代码:
create table dept9527(
id number primary key,
name varchar2(30)
);
insert into dept9527 values(1,‘test’);
insert into dept9527 values(2,‘app’);
commit;
创建一张名为dept9527的表,并使用insert添加两条数据。
commit命令用于把事务所做的修改保存到数据库。
上述代码以下代码:
create table emp9527(
id number primary key,
name varchar2(30),
dept_id number,constraint
emp9527_dept_id_dept9527_id_fk
foreign key(dept_id)
references dept9527(id) on delete set null
);
insert into emp9527 values(1,‘x’,1);
insert into emp9527 values(2,‘y’,1);
insert into emp9527 values(3,‘z’,2);
commit;
创建一张名为emp9527的表。
以下代码:
constraint emp9527_dept_id_dept9527_id_fk
foreign key(dept_id) references dept9527(id) on delete set null
建立表级的外键关系
insert into emp9527 values(1,‘x’,1);
insert into emp9527 values(2,‘y’,1);
insert into emp9527 values(3,‘z’,2);
commit;
使用insert添加三条数据。
commit命令用于把事务所做的修改保存到数据库 。