删除表
drop table student
char(ln) 和varcharto(ln)的区别
char会直接开辟ln的存储大小(面试相关)
varcharto根据实际数据长度动态开辟存储空间
char存储效率比varcharto高(面试相关)
小型数据写char 大型数据写varcharto
添加主键有三种方式
create table student(
--1.添加主键,限制内容非空
sno number(10) primary key,
sname varchar2(100),
sage number(3),
ssex varchar2(3),
sfav varchar2(500),
sbirth date,
sqq varchar2(30),
--2.添加主键另一种方式,可以设定报错信息 constraint pk_student_sno primary key(sno)
)
3.在创建表后也可以进行主键约束
alter table student add constraint pk_student_sno primary key(sno)
删除主键约束
constraint 后面是之前设定的主键名字
alter table student drop constraint pk_student_sno
设定非空
create table student(
sno number(10) primary key ,
--表后跟not null
sname varchar2(100)not null,
sage number(3),
ssex varchar2(3),
sfav varchar2(500),
sbirth date,
sqq varchar2(30),
--对应设定非空第二种方法,检查约束
constraint ck_student_sname check(sname is not null)
)
alter table student add constraint ck_student_sname check(sname is not null)
删除约束类比删除主键
example 检查约束限定年龄大小
create table student(
sno number(10) primary key ,
sname varchar2(100)not null,
--括号后面直接写条件语句
sage number(3)(sage>0 and sage<120),
ssex varchar2(3),
sfav varchar2(500),
sbirth date,
sqq varchar2(30),
)
另外两种方式和删除方式直接参照上面,检查约束一般是ck_表名…
唯一约束
create table student(
sno number(10) primary key ,
sname varchar2(100)not null,
sage number(3)(sage >0 and sage<120),
--直接在后面加unique
ssex varchar2(3) unique,
sfav varchar2(500),
sbirth date,
sqq varchar2(30),
)
一般是un_表名…
外键约束
开发中一般父表的主键作为子表的外键
如果使用了外键的这种约束关系,父表数据无法删除,除非级联删除(在创建外键约束时加上on delete cascade,删父表可以删除全部子表关联内容,这种删除无法保留原始数据,
稍微好一点的解决是on delete set null,将删除的内容值为空)
适用于 两张表有数据重叠的部分,其中一张表的这个字段依赖于另一张表,这张表里面有的字段数据另一张表一定要有
--需要依赖的这张表叫做子表,外键加在子表里面
create table student(
sno number(10) primary key ,
sname varchar2(100)not null,
sage number(3)(sage >0 and sage<120),
ssex varchar2(3) unique,
sfav varchar2(500),
sbirth date,
sqq varchar2(30),
--这张表中的cid依赖于clazz中的cno,如果clazz找不到加入的数据,就报错
cid number(10) references clazz(cno)
--第二种形式 constraint fk_student_cid foreign key(cid) references clazz(cno)
)
--被依赖的表叫做父表
create table clazz(
cno number(10) primary key,
cname varchar2(100) not null,
cdesc varchar2(300)
)
表外的外键约束 类比上面吧