MySQL语言之约束(constraint)

约束:CONSTRAINT:
   对插入表中字段的数据起到一定的条件限制。
约束分五种:
  主键约束:PRIMARY KEY
      要求作为主键的字段非空且唯一。

主键约束
1、创建表t_01 字段tid INT 设置为主键约束,tname varchat(20)
CREATE TABLE t_01 (tid INT PRIMARY KEY,tname VARCHAR(20));
INSERT INTO t_01 VALUES (1001,'betty');
INSERT INTO t_01 VALUES (1001,'zh');  !错误
INSERT INTO t_01 VALUES (1002,'sweeney');非空约束

运行结果如下:


  非空约束:NOT NULL
      要求有非空约束的字段不可为NULL值

非空约束
CREATE TABLE t_02(tid INT PRIMARY KEY,tname VARCHAR(20) NOT NULL);
INSERT INTO t_02 VALUES(1001,'betty');
INSERT INTO t_02 VALUES(1002,'sweeney');
INSERT INTO t_01 VALUES (1003,NULL);  !错误
SELECT * FROM t_02;

运行结果如下:


  唯一性约束:UNIQUE
      要求有唯一性约束的字段不可重复可为NULL

唯一性约束
CREATE TABLE t_03 (tid INT PRIMARY KEY,tname VARCHAR(20) NOT NULL,idcard VARCHAR(18) UNIQUE);
INSERT INTO t_03 VALUES (1001,'zhonghui',NULL);
INSERT INTO t_03 VALUES (1002,'sweeney','123');
INSERT INTO t_03 VALUES (1003,'sween','123'); !错误

运行结果如下:


 检查性约束:ENUM('f','m')
      要求在插入数据时必须符合字段的检查条件

检查性约束
CREATE TABLE t_04(
tid INT PRIMARY KEY,
tname VARCHAR(20) NOT NULL,
idcard VARCHAR(18) UNIQUE,
gender ENUM('f','m')
);
INSERT INTO t_04 VALUES(1001,'zhangsan','12345','f');
INSERT INTO t_04 VALUES(1002,'张三','123456','m');
INSERT INTO t_04 VALUES(1003,'张','12','女'); !错
INSERT INTO t_04 VALUES(1004,'张','123','a'); !错

运行结果如下:


  外键约束:FOREIGN KEY(将要设置为外键的字段) REFERENCES  表名(要依赖的主键)
      要求有外键约束的字段a,必须依赖于另外一个字段b,字段b必须为主键约束,否则不成立。
      字段a的值可以是空,要么是字段b里的值。

外键约束
CREATE TABLE t_05 (
empno INT PRIMARY KEY,
ename VARCHAR(20) NOT NULL,
idcard VARCHAR(18) UNIQUE,
gender ENUM('f','m'),
mgr INT,
FOREIGN KEY(mgr) REFERENCES t_05(empno)
);

INSERT INTO t_05 VALUES (1001,'张三','123','m',NULL);
INSERT INTO t_05 VALUES (1002,'李四','124','f',1008); !错误,此时还没有1008这个员工
INSERT INTO t_05 VALUES (1002,'李四','124','f',1001);

运行结果如下:


  序列:作为主键的字段通常不是表中主要信息,可以用来当成信息记录的序号,序号最好是有序的序列。
        AUTO_INCREMENT 关键字,用来对有主键约束的字段做自增操作
        用法:CREATE TABLE tname(tid INT PRIMARY KEY AUTO_INCREMENT,....);

  函数LAST_INSERT_ID();获取序列最后一次的值。SELECT LAST_INSERT_ID();

序列
CREATE TABLE t_06 (
tid INT PRIMARY KEY AUTO_INCREMENT,
tname VARCHAR(20) NOT NULL);
INSERT INTO t_06 VALUES(1001,'张三');
INSERT INTO t_06 VALUES(NULL,'ls');
INSERT INTO t_06 (tname) VALUES('ww');
INSERT INTO t_06 VALUES(LAST_INSERT_ID()+1,'aa');

运行结果如下:


 

猜你喜欢

转载自blog.csdn.net/Betty_betty_betty/article/details/82556534