标题: 学了忘 忘了学 学了还得忘 [打印本页] 作者: zz1997203 时间: 2019-7-14 14:49 标题: 学了忘 忘了学 学了还得忘 非空约束 ---> not null
1.创建表时添加
create table 表名(
字段的名称 字段类型 not null
);
2.创建表后添加
alter table 表名 modify 字段名称 字段类型 not null; -- 要求这一列里面不能有null的数据
3.移除非空约束
alter table 表名 modify 字段名称 字段类型;
*/
-- 修改表将sname和class添加非空约束
ALTER TABLE stu_score MODIFY sname VARCHAR(10) NOT NULL;
ALTER TABLE stu_score MODIFY class VARCHAR(10) NOT NULL;
-- 修改表将class的非空约束去掉
ALTER TABLE stu_score MODIFY sname VARCHAR(10);
/*
唯一约束UNIQUE ----> 注意:唯一对null是没有效果的
1.创建表时添加
create table 表名(
字段的名称 字段类型 UNIQUE
);
2.创建表后添加
alter table 表名 modify 字段名称 字段类型 UNIQUE; -- 要求这一列里面不能有重复的数据
3.移除唯一约束
alter table 表名 drop index 字段名
*/
-- 修改id类,添加唯一约束
ALTER TABLE stu_score MODIFY id INT UNIQUE;
-- 移除id的唯一约束
ALTER TABLE stu_score DROP INDEX id;
/*
主键:PRIMARY KEY 非空且唯一,注意: 一张只能有一个主键
1.创建表时添加
create table 表名(
id int primary key,
name varchar(20)
);
2.创建表后添加
alter table 表名 modify 列名 类型 primary key;
3.移除主键约束
alter table 表名 drop primary key;
注意:因为主键非空且唯一, 在插入数据时候,不能重复, 在书写起来很不方便,我们必须在检查主键
需要一个东西管理我们的主键
1.主键是整数类型---->一般和auto_increment结合,让自动增长管理主键
2.字符串类型---> 会通过随机生成一个永远不会重复的字符串来作为主键
*/
SELECT * FROM stu_score;
-- 添加主键
ALTER TABLE stu_score MODIFY id INT PRIMARY KEY;
-- 移除主键
ALTER TABLE stu_score DROP PRIMARY KEY;
-- 给主键列添加自动增长
ALTER TABLE stu_score MODIFY id INT AUTO_INCREMENT;
-- 将主键的自动增长去掉
ALTER TABLE stu_score MODIFY id INT;
/*
外键约束:FOREIGN KEY 作用---->用来约束"表"和"表"之间的数据,能够保证数据的完整性,安全性
1.创建表时添加
create table 表名(
id int primary key auto_increment,
name varchar(20),
tid int, -- 希望tid作为外键关联另外一张表
[contraint 外键的名字] foreign key(tid) references 另外一张表(字段名字)
);
2.创建表后添加
alter table 表名 add [contraint 外键的名字] foreign key(tid) references 另外一张表(字段名字);
3.移除外键约束
alter table 表名 drop foreign key 外键名;
4. 级联操作
级联更新 on update cascade
级联删除 on delete cascade
例如:
alter table 表名 add [contraint 外键的名字] foreign key(tid) references 另外一张表(字段名字) on update cascade
INSERT INTO student VALUES(NULL,'杜傲德',1);
INSERT INTO student VALUES(NULL,'贾倩稳',1);
INSERT INTO student VALUES(NULL,'刘子豪',2);
INSERT INTO student VALUES(NULL,'赵放',2);
SELECT * FROM classroom;
SELECT * FROM student;
-- 删除外键约束, 需要外键的名字才可以删除
ALTER TABLE student DROP FOREIGN KEY student_ibfk_1;
-- 添加外键约束时给名字
ALTER TABLE student ADD CONSTRAINT stu_class_fk FOREIGN KEY(cid) REFERENCES classroom(cid);
-- 添加外键约束时不给名字
ALTER TABLE student ADD FOREIGN KEY(cid) REFERENCES classroom(cid);
-- 查找表的创建语句,其实为了找到外键名!!!!!如果在创建外键的时候没有给外键起名字,系统会自动生成一个,需要这个语句查询
SHOW CREATE TABLE student;
INSERT INTO restrant VALUES(NULL,'沙县小吃','广安大街302号');
INSERT INTO restrant VALUES(NULL,'铁锅焖面','广安大街303号');
INSERT INTO restrant VALUES(NULL,'幸福大锅菜','广安大街304号');
INSERT INTO dish VALUES(NULL,'酸辣土豆丝',8);
INSERT INTO dish VALUES(NULL,'红烧排骨饭',12);
INSERT INTO dish VALUES(NULL,'红烧鲤鱼',20);
INSERT INTO dish VALUES(NULL,'焖面',20);
INSERT INTO dish VALUES(NULL,'大锅菜',10);
INSERT INTO dish VALUES(NULL,'飘香拌面',5);
INSERT INTO rest_dish_mid VALUES(1,6);
INSERT INTO rest_dish_mid VALUES(1,1);
INSERT INTO rest_dish_mid VALUES(1,1);
INSERT INTO rest_dish_mid VALUES(2,4);
INSERT INTO rest_dish_mid VALUES(2,1);
INSERT INTO rest_dish_mid VALUES(2,2);
INSERT INTO rest_dish_mid VALUES(3,5);
INSERT INTO rest_dish_mid VALUES(3,1);
INSERT INTO rest_dish_mid VALUES(3,2);
INSERT INTO rest_dish_mid VALUES(3,3);
/*
一对一: 在任何一方建议唯一外键方式来去关联(很少见!!!!!)
*/
/*数据库的备份