常用五类约束:
primary key:主键约束,指定某列的数据不能有重复、并且是唯一的 
not null:非空约束,指定某列不能为空 
unique: 唯一约束,确保唯一,不可重复(如电话号码)
foreign key:外键,指定该列记录属于主表中的一条记录,参照的是另一条数据 
check:检查,指定一个表达式,用于检验指定数据 

注意:

一、主键约束→ primary key

主键约束相当于唯一约束+非空约束的结合、主键约束不允许数据重复,不能为空,且一张表中只能有一个主键约束。

-- 创建方式一:建表时直接设置主键列
CREATE TABLE tbl_student(
		stuid INT PRIMARY KEY,
		...
);
-- 创建方式二:在创建表之后,给表添加主键约束
ALTER TABLE tbl_student ADD constraint pk_stuId PRIMARY KEY(stuid);

联合主键约束:列A有数字1,列B有数字1,则联合之后的主键约束为 A+B的组合即('11')

--创建方式一:建表时直接设置联合主键列
CREATE TABLE stInfo(
	stuName varchar(20),
	stClass varchar(10),
	stGedner int,
	constraint pk_stname_stclass primary key(stuname,stclass)
);
--创建方式二:在创建表之后,给表添加联合主键约束
ALTER TABLE stInfo ADD CONSTRAINT pk_stName_stClass primary key(stuname,stclass);

二、非空约束→ not null

非空约束是确保某列的数据不能为null值的约束,一张表中可以有多个非空约束

--建表时直接设置非空约束
CREATE TABLE tbl_student(
		stuid INT AUTO_INCREMENT PRIMARY KEY ,
		stuno CHAR(10) NOT NULL,
		stuname VARCHAR(10) NOT NULL,
		stugender INT,
		stubirth DATE,
		stutel CHAR(11)
	);

三、唯一约束→ unique

--创建表的同时增加唯一约束
CREATE TABLE tbl_student(
		...
		stutel CHAR(11) unique
	);
--创建表的同时增加唯一约束
CREATE TABLE tbl_student(
		...
		stutel CHAR(11),
		CONSTRAINT uq_stutel UNIQUE(stutel)
	);
--通过修改表的方式增加唯一约束
ALTER TABLE tbl_student ADD CONSTRAINT uq_stutel UNIQUE(stutel);

四、默认约束→ default

--创建表的同时设置默认约束
CREATE TABLE tbl_student(
		stuid INT AUTO_INCREMENT PRIMARY KEY ,
		stuno CHAR(10) NOT NULL,
		stuname VARCHAR(10) NOT NULL,
		stugender INT default 1,
		stubirth DATE,
		stutel CHAR(11)
	);
--插入数据时可以直接使用默认值
INSERT INTO tbl_student(stuno,stuname,stugender,stubirth,stutel) VALUES ('001','施瓦辛格',DEFAULT,'1995-1-1','13813813838');

五、外键约束

在子表中的某一列引用了主表中的某一列数据,则子表中列称之为外键;是一种参照关系。   主表中的列要求:必须唯一。

--主表
CREATE TABLE tbl_class(
	classid INT PRIMARY KEY AUTO_INCREMENT,
	classname VARCHAR(10) NOT NULL
);
--子表
CREATE TABLE tbl_student(
	stuid INT,
	stuno CHAR(10),
	stuname VARCHAR(10),
	s_classid INT,
	CONSTRAINT fk_s_classid FOREIGN KEY(s_classid) references tbl_class(classid)  -- 约束 外键名称 外键关键字(子表外键列)参照 主表(主表列)
);
--方式二:在创建子表之后,给子表添加外键约束
ALTER TABLE tbl_student ADD CONSTRAINT fk_s_classid FOREIGN KEY(s_classid) references tbl_class(classid);

六、检查约束→check 

--创建表的同时设置检查约束
CREATE TABLE SCORE(
	STUNO INT AUTO_INCREMENT PRIMARY KEY,
	STUSCORE INT,
	CONSTRAINT CK_STUSCORE CHECK(STUSCORE BETWEEN 0 AND 100)
);
--在创建表之后,给表添加检查约束
ALTER TABLE SCORE ADD CONSTRAINT CK_STUSCORE CHECK(STUSCORE BETWEEN 0 AND 100);


另:

面试题:MySQL数据库中的主键约束和唯一约束有什么异同?

个人见解:

主键约束和唯一约束都不能含有重复的数据。

主键约束不能为null,唯一约束可以有一个null。

一张表中只能有一个主键约束,但却可以有多个唯一约束。