SQL约束 + 一些MySQL命令

 一、实验环境:Ubuntu Linux 14.04 64位
1、约束的定义:
     约束是一种限制,他通过对表的行或列的数据做出限制确保表的完整性、唯一性
2、约束的分类:
SQL约束 + 一些MySQL命令
3、《1》建立数据库+建立表(看上一节)

SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令


《2》主键(PRIMARY KEY【primary key】):
        (1)用来约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行。
        (2)主键不能有重复且不能为空。
        (3)定义主键:
CREATE TABLE employee
 id INT(10)PRIMARY KEY,
 name CHAR(20)

SQL约束 + 一些MySQL命令

复合主键—主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识
SQL约束 + 一些MySQL命令


《3》默认值约束(DEFAULT):
        当有DEFAULT约束的列,插入数据为空时,将使用默认值。
       例:
SQL约束 + 一些MySQL命令

DEFAULT约束只会在使用INSERT语句时体现出来。INSERT语句中,如果被DEFAULT约束的位置没有值,那么这个位置就会被DEFAULT的值填充。
SQL约束 + 一些MySQL命令

《4》唯一约束(UNIQUE【unique】):
        规定一张表中指定的一列的值不能有重复值,即这一列每个值都是唯一的。
SQL约束 + 一些MySQL命令

当INSERT语句新插入的数据和已有数据重复时,如果有UNIQUE约束,则INSERT失败。
SQL约束 + 一些MySQL命令

《5》外键约束(FOREIGN KEY【foreign key】):
        外键既能确保数据完整性,也能表现表之间的关系。
        一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。
SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令

《6》非空约束(NOT NULL):
        被非空约束的列,在插入值时必须非空。
SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令

在MySQL中违反非空约束,会报错,插入数据失败
SQL约束 + 一些MySQL命令


4、删除表中数据:
(1)删除表中的某些数据:DELETE FROM 表名 WHERE 表达式;
                                        (delete from 表名 where 表达式)
  SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令


 (2)清除表中所有数据:DELETE FROM 表名;(delete from 表名;)
                                TRUNCATE TABLE 表名;(truncate table 表名;)
SQL约束 + 一些MySQL命令

        效率上truncate比delete快,但truncate删除后不计入MySQL日志,不可以恢复数据。delete的效果有点像将mysql表中所有记录一条一条删除到删完。而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

《1》清除具有外键约束的表:
 SQL约束 + 一些MySQL命令
如果直接删除department会报错:
SQL约束 + 一些MySQL命令

方法:《1》
SQL约束 + 一些MySQL命令

出现的后果:无法往表employee里面插入数据
SQL约束 + 一些MySQL命令

往department里面插入数据之后又可以往employee里插入数据:
SQL约束 + 一些MySQL命令

《2》先删除employee,再删除department:
SQL约束 + 一些MySQL命令

5、修改表中的字段类型、字段名字及指定为空或非空:
ALTER TABLE 表名字 CHANGE 字段原名字 字段新名字 字段类型  NULL/NOT NULL;
(alter table 表名字 change 字段原名字 字段新名字 字段类型  NULL/NOT NULL;)
【NULL/NOT NULL 可以省略】 
《1》
SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令

《2》只修改字段类型及指定为空或非空:
ALTER TABLE 表名 MODIFY 字段名称 字段类型 NULL/NOT NULL;
(alter table 表名 modify 字段名称 字段类型 NULL/NOT NULL)
SQL约束 + 一些MySQL命令

《3》
SQL约束 + 一些MySQL命令

SQL约束 + 一些MySQL命令

6、改变一个字段的默认值:
ALTER TABLE 表名 ALTER 字段名 SET DEFAULT value;
(alter table 表名 alter 字段名 set default 值;)
SQL约束 + 一些MySQL命令

参考:https://www.shiyanlou.com/courses/9/labs/73/document
http://www.jb51.net/article/55362.htm