目录
1.数据库约束
1.1约束类型
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
DEFAULT - 规定没有给列赋值时的默认值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略 CHECK子句。
1.2.NULL约束
CREATE TABLE student1 (
id INT NOT NULL,
sn INT,
name VARCHAR(20),
qq_mail VARCHAR(20)
);
1.3UNIQUE:唯一约束
指定列唯一约束列的值,在列中是唯一,相当于身份证号
CREATE TABLE student1(
id INT NOT NULL,
sn INT UNIQUE,
name VARCHAR(20),
qq_mail VARCHAR(20)
);
1.4DEFAULT:默认值约束
CREATE TABLE student1 (
id INT NOT NULL,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20)
);
1.5PRIMARY KEY:主键约束
具备非空和唯一的特性
CREATE TABLE student1 (
id INT PRIMARY KEY auto_increment,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20)
);
写入数据时,只要满足非空唯一即可,不指定主键的值时,自增主键会自动完成自增操作,新写入的值时以当前最大值+1。
一个表中只能有一个主键,不能有多个,但是可以用多个列合并成一个主键(复合主键),多个列组成的组合是不能重复的。
1.6FOREIGN KEY:外键约束
主外键关系是两个表之间的关系
CREATE TABLE classes (
id INT PRIMARY KEY auto_increment,
name VARCHAR(20),
`desc` VARCHAR(100)
);
CREATE TABLE student1 (
id INT PRIMARY KEY auto_increment,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20),
classes_id int,
FOREIGN KEY (classes_id) REFERENCES classes(id)
);
删除主表数据时,必须先把子表中关联数据删除掉
2.表的设计
2.1一对一关系
用一张表把所有字段全部包含起来
按义务把相关的字段拆分出两张表,再为两张表建立主外键关系
2.2一对多关系
对于多的一方,可以和主表建立主外键关系
2.3多对多关系
对于多对多关系,可以新建一张关系记录每条数据的关联关系