mysql表相关的约束,主键外键。

来源:互联网 发布:js 滚动加载更多 编辑:程序博客网 时间:2024/06/05 21:56
-- mysql 表的约束
-- 
-- 1 主键约束  PRIMARY KEY(主键都会自带索引)
-- 关系型数据库要求一个表只有一个主键




-- 3 非空约束  NOT NULL
-- 4 外键约束  foreign key referenc 要求使用外键的表,必须是InnDB存储引擎
USE AAA;
-- 根据一个表 克隆一个表,没有数据,但是结构一样
CREATE TABLE TTT LIKE TEACHER;


-- 存储引擎 目前两种最常用  MYISAM 速度快,INNODB(默认)事务 外键。
CREATE TABLE T1(
TID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
TNAME VARCHAR(20)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;


-- 复合主键   是一个主键  必须tid和tname有一个不同。相同则不行因为是一个主键
CREATE TABLE T2(
TID INT UNSIGNED NOT NULL AUTO_INCREMENT,
TNAME VARCHAR(20),
PRIMARY KEY(TID,TNAME)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;




-- 2 默认约束  DEFAULT  
CREATE TABLE T3(
TID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
TNAME VARCHAR(30) NOT NULL,
TAGE TINYINT UNSIGNED DEFAULT 18 -- 默认年龄
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;


INSERT INTO T3  VALUES(NULL,'张老师','20');
INSERT INTO T3(TNAME)  VALUES('李老师');
SELECT * FROM T3;


-- 3 非空约束  NOT NULL
-- 4 外键约束  foreign key referenc 要求使用外键的表,必须是InnDB存储




USE AAA;
DROP TABLE teacher,stu;




-- 演示外键使用


CREATE TABLE teacher(
TID INT UNSIGNED  NOT NULL AUTO_INCREMENT PRIMARY KEY,
TNAME VARCHAR(30) NOT NULL,
KEY(TNAME) -- 建立表的时候,同时在tname列上建立索引
)ENGINE=INNODB AUTO_INCREMENT=1 CHARSET=UTF8;


insert INTO teacher VALUES(NULL,'张老师'),(NULL,'李老师'),(NULL,'王老师');


SELECT * FROM student;


CREATE TABLE student(
SID INT UNSIGNED  NOT NULL AUTO_INCREMENT PRIMARY KEY,
SNAME VARCHAR(30) NOT NULL,
TID INT UNSIGNED,
CONSTRAINT FK FOREIGN KEY(TID) REFERENCES teacher(TID) ON DELETE CASCADE -- 级联删除
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;


-- CONSTRAINT FK FOREIGN KEY(TID) REFERENCES TEACHER(TID)  -- 创建外键 关联到teacher表


-- 级联删除  与想要删除的字段有关的全部删除 但是不能删除表
-- CONSTRAINT FK FOREIGN KEY(TID) REFERENCES teacher(TID) ON DELETE CASCADE 


-- 删除之后  自动设置成null
-- CONSTRAINT FK FOREIGN KEY(TID) REFERENCES teacher(TID) ON DELETE SET NULL


DELETE FROM teacher WHERE TID =2;


DELETE FROM student WHERE SID = 2;


INSERT INTO student VALUES(NULL,'张三',1),(NULL,'李四',2),
(NULL,'张三疯',1),(NULL,'赵六',1);





原创粉丝点击