免费建网站哪个模板多,众鱼深圳网站建设,滑县网站建设哪家便宜,上海城市建设大学网站约束用于确保数据库中的数据满足特定的商业规则。 MySQL约束包含五种#xff1a;not null、unique、primary key、foreign key、check 7.1 primary key 主键 字段名 字段类型 primary key 用于唯一的标识表的行数据#xff0c;当定义主键约束后#xff0c;该列不能重复。 pr… 约束用于确保数据库中的数据满足特定的商业规则。 MySQL约束包含五种not null、unique、primary key、foreign key、check 7.1 primary key 主键 字段名 字段类型 primary key 用于唯一的标识表的行数据当定义主键约束后该列不能重复。 primary key不能重复而且不能为null 一张表最多只能有一个主键但可以是复合主键同时重复才违反主键不可重复的原则 主键的指定方式有两种直接在字段后指定字段名 字段类型 primakry key 在表定义最后写 primary key(列名); 使用desc表名可以看到primary key的情况 在实际开发中每个表往往都会设计一个主键
CREATE TABLE tab(id INT PRIMARY KEY, -- 表示 id 列是主键name VARCHAR(32));CREATE TABLE tab(id INT,name VARCHAR(32),PRIMARY KEY(id));
# 复合主键 (id 和 name 做成复合主键)
# 当id和name同时重复才违反主键不可重复的原则
CREATE TABLE tab(id INT , name VARCHAR(32),email VARCHAR(32), PRIMARY KEY (id, name) -- 这里就是复合主键);
7.2 not null 非空 字段名 字段类型 not null 如果列上指定了not null插入数据时必须为列提供数据 7.3 unique 唯一 字段名 字段类型 unique 如果列上指定了unique该列数据不能重复 如果没有指定 not null则 unique 字段可以有多个null 与主键的区别是一张表可以有多个unique字段 unique not null 使用效果类似 primary key
7.3 foreign key 外键 FOREIGN KEY (本表字段名) REFERENCES 主表名(主键名或unique字段名) 用于定义主表和从表之间的关系 外键约束要定义在从表上主表则必须具有主键约束或是unique约束。当定义外键约束后要求外键列数据必须在主表的主键列存在或是为null。 由于主表中没有id300从表class_id300插入失败
如果要删除主表id200的记录会删除失败因为有从表与它有外键约束必须先删除从表class_id200的记录才能删除主表id200的记录。 外键指向的表的字段要求是primary key 或者是unique 表的类型是innodb这样的表才支持外键 外键字段的类型要和主键字段的类型一致(长度可以不同) 外键字段的值必须在主键字段中出现过或者为nul[前提是外键字段允许为null] 一旦建立主外键的关系数据不能随意删除了 -- 创建 主表 my_class
CREATE TABLE my_class (id INT PRIMARY KEY , -- 班级编号name VARCHAR(32) NOT NULL DEFAULT );-- 创建 从表 my_stu
CREATE TABLE my_stu (id INT PRIMARY KEY , -- 学生编号name VARCHAR(32) NOT NULL DEFAULT , class_id INT , -- 学生所在班级的编号-- 下面指定外键关系FOREIGN KEY (class_id) REFERENCES my_class(id));
7.4 check 列名 类型 check(check条件) 用于强制行数据必须满足的条件。 假定在sal列上定义了check约束要求sal列值在1000~2000之间如果不再1000~2000之间就会提示出错。 在mysql中实现check的功能一般是在程序中控制或者通过触发器完成。 CREATE TABLE tab (id INT PRIMARY KEY, name VARCHAR(32) , sex VARCHAR(6) CHECK (sex IN(man,woman)), sal DOUBLE CHECK ( sal 1000 AND sal 2000)); 自增长auto_increment 字段名 整型 primary key auto_increment 希望id列在添加记录的时候该列从1开始自动的增长 插入数据是可以给null或直接跳过该字段赋值
INSERT INTO tab VALUES(NULL, tomqq.com, tom);
INSERT INTO tab (email, name) VALUES(hspsohu.com, hsp); 一般来说自增长是和primary key 配合使用的 自增长也可以单独使用[但是需要配合一个unique] 自增长修饰的字段为整数型(虽然小数也可以但是非常少这样使用) 自增长默认从1开始也可以修改alter table 表名 auto increment 新的开始值; 如果你添加数据时给自增长字段(列)指定的有值则以指定的值为准如果指定了自增长,一般来说就按照自增长的规则来添加数据.