目录
1. null 约束
创建表时,可以指定某列不为空
-- 重新设置学生表结构DROP TABLE IF EXISTS student;CREATE TABLE student (id INT NOT NULL ,sn INT ,name VARCHAR ( 20 ),qq_mail VARCHAR ( 20 ));
2. unique :唯一约束
指定某列的每行必须与唯一的值。
注:一张表中可以有一个或者多个唯一约束。
-- 重新设置学生表结构DROP TABLE IF EXISTS student;CREATE TABLE student (id INT NOT NULL ,sn INT UNIQUE,name VARCHAR ( 20 ),qq_mail VARCHAR ( 20 ));
问题:给某个字段只创建了唯一约束,没有指定非空约束,那么这个字段能不能插入NULL值?能不能插入空值(' ')?能否重复插入NULL值?
答: 可以,可以,可以
唯一约束字段可以插入NULL(“没有”)。
唯一约束字段的NULL(“没有”)可以插入多个。
3. default :默认值约束
规定没有给列赋值时的默认值。
-- 重新设置学生表结构DROP TABLE IF EXISTS student;CREATE TABLE student (id INT NOT NULL ,sn INT UNIQUE,name VARCHAR ( 20 ) DEFAULT 'unkown' ,qq_mail VARCHAR ( 20 ));
4. primary key :主键约束
NOT NULL
和
UNIQUE
的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
注:一张表里面只能有一个主键,但一个主键可以有一个或多个字段。
-- 重新设置学生表结构DROP TABLE IF EXISTS student;CREATE TABLE student (id INT NOT NULL PRIMARY KEY,sn INT UNIQUE,name VARCHAR ( 20 ) DEFAULT 'unkown' ,qq_mail VARCHAR ( 20 ));
主键约束 VS唯一约束:
1. 一个表中主键约束只能有一个,而唯一约束可以有多个。
2. 唯一约束可以插入一个或多个NULL,而主键约束不允许插入NULL。
5. foreign key :外键约束
外键用于关联其他表的
主键
或
唯一键,保证一个表中的数据匹配另一个表中的值的参照完整性。
语法:
foreign key (字段名) references 主表(列)
创建班级表classes,id为主键:
DROP TABLE IF EXISTS classes;CREATE TABLE classes (id INT PRIMARY KEY auto_increment,name VARCHAR ( 20 ),`desc` VARCHAR ( 100 ));
创建学生表
student
,一个学生对应一个班级,一个班级对应多个学生。使用
id
为主键,
classes_id
为外键,关联班级表
id
-- 重新设置学生表结构DROP TABLE IF EXISTS student;CREATE TABLE student (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));
6. check 约束
保证列中的值符合指定的条件。对于
MySQL
数据库,对
CHECK
子句进行分析,但是忽略
CHECK
子句。
drop table if exists test_user;create table test_user (id int ,name varchar ( 20 ),sex varchar ( 1 ),check (sex = ' 男 ' or sex= ' 女 ' ));
7.自增约束 auto_increment
对于整数类型的主键,常配搭自增长
auto_increment
来使用。插入数据对应字段不给值时,使用最大值+1
。
-- 主键是 NOT NULL 和 UNIQUE 的结合,可以不用 NOT NULLid INT PRIMARY KEY auto_increment,
注:
1. auto_increment 必须配合key进行使用。
2. auto_increment 必须配合整数数值使用。
3. 一张表中只能有一个auto_increment自增约束。