1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MySQL建表 DML DDL 约束 外键策略

MySQL建表 DML DDL 约束 外键策略

时间:2024-07-19 08:13:20

相关推荐

MySQL建表 DML DDL 约束 外键策略

创建数据库表

CREATE TABLE student(

sno int (6),

sname VARCHAR(10),

sex CHAR(1),

age INT(2),

enterdate date,

classname VARCHAR(10),

email VARCHAR(15)

);

– 查看表的结构

desc student

– 查看表的数据

SELECT * FROM student

DML

– 查询表的数据

SELECT * FROM student

– insert

insert into student values(1,‘张三’,‘男’,23,‘/2/27’,‘一班’,‘zhs@.com’);

insert into student values(2,‘李四’,‘男’,24,‘/2/27’,‘一班’,‘lis@.com’);

insert into student (sno,sname,sex,classname) values (3,‘王五’,‘男’,‘二班’)

– update

update student set sex = ‘女’ where sno = 2

update student set sex = ‘男’,age = 25,classname = null where sno = 2

– delete

delete FROM student WHERE classname = ‘二班’

– 删除表中的所有数据

delete FROM student

truncate table student – 速度快,无法回滚 DDL语言 效率高

DDL

– DDL creat alter drop

– DML insert update delete

– 查询数据

select * from student

– 查询表的结构

desc student

– 修改表的数据

– 增加一列

alter table student add score double(5,2);

alter table student add score double(5,2) first

alter table student add score double(5,2) after enterdate;

-- 修改一列

alter table student modify score float(4,1);

alter table student change score score1 double(4,1);

-- 删除一列

alter table student drop score;

– 删除表

drop table student

非外键约束

– 列级约束

CREATE TABLE student(

sno int (6) primary key auto_increment,

sname VARCHAR(10) not null,

sex CHAR(1) default ‘男’ check(sex = ‘男’ or sex = ‘女’),

age INT(2) check(age>=0 and age<=50),

enterdate date,

classname VARCHAR(10),

email VARCHAR(15)

);

– 表级约束

CREATE TABLE student(

sno int (6) auto_increment,

sname VARCHAR(10) not null,

sex CHAR(1) default’男’,

age INT(2),

enterdate date,

classname VARCHAR(10),

email VARCHAR(15),

constraint pk_stu primary key(sno),

constraint ck_stu_sex check(sex = ‘男’ or sex = ‘女’),

constraint ck_stu_age check(age>=0 and age<=50),

constraint ck_stu_email unique(email)

);

CREATE TABLE student(

sno int (6),

sname VARCHAR(10) not null,

sex CHAR(1) default ‘男’, – not null 和 default 只能使用列级约束

age INT(2),

enterdate date,

classname VARCHAR(10),

email VARCHAR(15)

);

alter table student add constraint pk_stu primary key(sno);

alter table student add constraint ck_stu_sex check(sex = ‘男’ or sex = ‘女’);

alter table student add constraint ck_stu_age check(age>=0 and age<=50);

alter table student add constraint ck_stu_email unique(email);

alter table student modify sno int(6) auto_increment

外键约束

create table t_student(

sno int(6)primary key auto_increment,

sname varchar(10) not null,

age int(3),

score double(4,1),

classno int(4)

– constraint fk_stu_classno foreign key(classno) references t_class(cno)

);

– 外键

alter table t_student add constraint fk_stu_classno foreign key(classno) references t_class(cno)

外键策略

– 1.NO Action:

delete from t_class cno=2

update t_student set classno = null where class =2

– 2.cascade级联

– 加外键alter table t_student add constraint fk_stu_classno foreign key(classno) references t_class(cno)

– 删外键alter table t_student drop FOREIGN KEY fk_stu_classno

– 级联

alter table t_student add constraint fk_stu_classno foreign key(classno) references t_class(cno) on update cascade on delete cascade

– 3.set null

alter table t_student add constraint fk_stu_classno foreign key(classno) references t_class(cno) on update set null on delete set null

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。