主键约束(Primay Key Coustraint) 唯一性,非空性,实体完整性约束主键不能为空
在一张表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(或主码),这里说"字段集"是因为主键可能用一个字段或者多个字段来表示。
唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个检查约束 (Check Counstraint) 对该列数据的范围、格式的限制(如:年龄、性别等)默认约束 (Default Counstraint) 该数据的默认值外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列
添加主键约束
alter table stuInfo
add constraint PK_stuNo primary key (stuNo)

添加唯一约束
alter table stuInfo
add constraint UQ_stuID unique(stuID)

添加默认约束
alter table stuInfo
add constraint DF_stuAddress default (‘地址不详’) for stuAddress

添加检查约束
alter table stuInfo
add constraint CK_stuAge check (stuAge between 15 and 40)

添加外键约束
alter table stuInfo
add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)

注:外键
一张表的非主属性是另一个表的主属性就是这个表的外键。(例:学生表中主键是学号,专业信息表中主键是专业编号。学生表中的非主属性专业编号恰好是专业信息表中的主键。我们就称这个专业编号是学生表的外键。)
有两张表A表和B表,表A中的一个字段id是外键,表B中的一个字段id是主键,那么称B为父表,A为子表。就是说一个表中外键字段(相当于这里的A表)是另一个表中(相当于这里的B表)的主键。(例:学生表(学号, 姓名, 性别,专业编号),专业信息表(专业编号,专业名称,专业备注信息)。这里学生表是子表,专业信息表是父表)
例子:

/*数据约束*/    

CREATE TABLE user01 (

    uid INT NOT NULL,/*非空约束*/  
PRIMARY KEY  /*主键约束*/  AUTO_INCREMENT /*自增长*/

    uname VARCHAR(10) UNIQUE,/*唯一约束*/

    address VARCHAR(20) DEFAULT'张店'/*默认值约束*/

);            

INSERT INTO user01 VALUES(1,'小红帽','博山');

INSERT INTO user01(uname) VALUES('大灰狼');

SELECT * FROM user01;

DROP TABLE user01;


/*外键约束*/

CREATE TABLE emp1(    /*副表*/

    eid INT PRIMARY KEY AUTO_INCREMENT,

    ename VARCHAR(10),

    deptid INT,

    CONSTRAINT emp1_dept_fk FOREIGN KEY(deptid) REFERENCES
dept(id)/*添加外键约束*/

);

INSERT INTO emp1(ename,deptid) VALUES('张三',5);

INSERT INTO emp1(ename,deptid) VALUES('李四',4);

INSERT INTO emp1(ename,deptid) VALUES('王五',3);

INSERT INTO emp1(ename,deptid) VALUES('张五',2);

SELECT * FROM emp1;

DROP TABLE emp1;

CREATE TABLE dept(    /*主表*/

    id INT PRIMARY KEY AUTO_INCREMENT,

    dname VARCHAR(15)

);

INSERT INTO dept(dname) VALUES('研发部');

INSERT INTO dept(dname) VALUES('产品部');

INSERT INTO dept(dname) VALUES('销售部');

SELECT * FROM dept;

DROP TABLE dept;

/*修改数据(先改副表再改主表)*/

UPDATE emp SET deptid=1 WHERE eid=2;

UPDATE dept SET id=5 WHERE id=2;

/*删除数据(先删副表再删主表)*/

DELETE FROM emp WHERE eid=1;

DELETE FROM dept WHERE id=3;


/*两种全表删除的区别*/

CREATE TABLE test(

    id INT PRIMARY KEY AUTO_INCREMENT,

    tname VARCHAR(10)

);

INSERT INTO test(tname) VALUES('小红');

INSERT INTO test(tname) VALUES('小蓝');

INSERT INTO test(tname) VALUES('小绿');

SELECT * FROM test;

DELETE FROM test; /*不会删除约束*/

TRUNCATE TABLE test;/*会删除约束*/

DROP TABLE test;

/*先建表后添加外键约束*/

CREATE TABLE test(

    id INT PRIMARY KEY AUTO_INCREMENT,

    tname VARCHAR(10),

    empid INT

);

ALTER TABLE test

ADD CONSTRAINT test_emp1_fk FOREIGN KEY(empid)

REFERENCES emp1(eid);