Oracle_DAY 03操作语句(二)
ect to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon'),to_char(trunc(sysdate,'mm'),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon'),to_char(trunc(sysdate,'y'),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
在一个月的任何时间执行一条语句,得到的都是下一个月的开始的时间
to_char()
trunc(add_months(sysdate,1),'mm')
trunc(last_day(sysdate)+1)
----------------------------------------------
SQL约束的种类
主键 ------primary key
唯一 ------unique
非空 ------not null
检查 ------check
外键 ------foreign key references
表上建立约束:对数据的最后一道屏障
主键 ------唯一 且 非空,一个表最多只能有一个主键
唯一 -----------不能有重复的
非空 -----------不能有NULL值
检查 ------字段要符合检查条件
外键 ------------涉及到两张表
s_dept -----id (主表)
s_emp -----dept_id(子表)
定义了外键的表就是子表
s_dept -----region_id
s_region ----id(主键)
外键:引用主表的字段,必须有唯一性限制。外键的取值只能是主表字段的值,要么是NULL,这样能保证子表数据的完整性,一旦违反外键约束,就会报数据完整性约束。
约束的语法:
列级约束:在定义表的列的时候 直接定义的约束
1.主键-------列级
create table testconstraint_pk(
id number,
name varchar(30)
);
insert into testconstraint_pk values(1,'aobama');
drop table testconstraint_pk;
create table testconstraint_pk1(
id number primary key,
name varchar(30)
);
insert into testconstraint_pk1 values(1,'aobama');
如果违法约束 会出现系统的约束名
create table testconstraint_pk2(
id number constraint
testconstraint_pk2_id_pk primary key,
name varchar(30)
);
insert into testconstraint_pk2 values(1,'aobama');
要求大家建立一张表 有两个字段
id number
name varchar2(20)
要求id 设置列级的主键约束
name 设置列级别的唯一性约束
create table test_c_pkuk(
id number constraint
test_c_pkuk_id_pk primary key,
name varchar(30) constraint
test_c_pkuk_name_uk unique
);
insert into test_c_pkuk values(211,'abc');
0001: 违反唯一约束条件 (OPENLAB.TEST_C_PKUK_NAME_UK)
not null 的列级约束和主键语言相同
检查约束
要求大家建立一张表 有两个字段
id number
salary number
要求id 设置列级的主键约束
salary 设置列级别的检查约束 要求工资
大于3500
create table test_c_pkck(
id number constraint
test_c_pkck_id_cpk primary key,
salary number constraint
test_c_pkck_salary_ck check(salary>3500)
);
insert into test_c_pkck values(10087,3500);
表级约束:在所有的列定义完成后 对表的某些
列加的约束
为什么要有表级约束?
建立一张表 有三个字段
fid number
sid number
name varchar2(30)
要求 fid 和 sid 联合做主键
要求 fid 和 sid 联合唯一
解决联合约束
not null 这个约束 不可能出现联合非空
所有not null 没有表级约束
语法形式如下:
create table test_table_pk(
id number,
name varchar2(30),
salary number,
constraint test_table_pk_id_pk
primary key(id)
);
使用表级别约束建立表
fid number
sid number
name varchar2(20)
salary number
fid sid 要联合做主键
name 唯一
salary 要求大于8000
create table test_table_con1001(
fid number,
sid number,
name varchar2(20),
salary number,
constraint test_table_con1001_fsid_pk
primary key(fid,sid),
constraint test_table_con1001_name_uk
unique(name),
constraint test_table_con1001_salary_ck
check(salary>8000)
);
--------------------------------
外键:
--主表:部门表
drop table myemp;