本博文源于mysql,对约束进行一系列实战练习,具体内容请点击,涉及:检查约束/主键/外键/默认值/非空/查看表中约束 解决数据冗余,一个信息存两遍。学术定义:解决数据的一致性与正确性 每个表只有一个主键,但可以有复合主键,所谓复合主键就是多列组合的主键 如果大家没有这个数据库,直接用 创建,下面是对例题的解答 格式 格式: 格式 更换主键 外键用来在两个表的数据之间建立连接的。 为做实验先创建这样一个表结构的一张表tb_dept1,在数据库test_db中哦! 了解表结构,添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id 格式 格式 本身作用是可以确保一列或者几列不出现重复值。 格式 格式 这个用于指定需要检查的限定条件 格式 格式 格式 换个名字叫叫,可以理解给字段设置默认值。 格式 格式 格式 格式 表格式: 格式 格式 格式 在“删除外键约束”标题里介绍过来了,可以往上查看相应的命令约束的作用
主键约束
设置主键格式
<字段名> <数据类型> PRIMARY KEY [默认值]
例子:在test_db数据库中创建tb_emp3数据表,其主键为id,格式如下表
字段名称
数据类型
备注
id
INT(11)
员工编号
name
VARCHAR(25)
员工名称
deptId
INT(11)
所在部门编号
salary
FLOAT
工资
CREATE DATABASE test_db;
CREATE TABLE tb_emp3 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> );
创建完列指定主键
PRIMARY KEY [字段名]
例子:在test_db数据库中创建tb_emp4,使其主键为id
字段名称
数据类型
备注
id
INT(11)
员工编号
name
VARCHAR(25)
员工名称
deptId
INT(11)
所在部门编号
salary
FLOAT
工资
CREATE TABLE tb_emp4(id INT(11), name VARCHAR(25),deptId INT(11),salary FLOAT,primary key(id));
设置复合主键
PRIMARY KEY [字段1、字段2、....、字段3]
例子:创建数据表tb_emp5,假设表中没有主键id,设置name与deptId为联合主键
字段名称
数据类型
备注
name
VARCHAR(25)
员工名称
deptId
INT(11)
所在部门编号
salary
FLOAT
工资
CREATE TABLE tb_emp5(name VARCHAR(25), deptId INT(11),salary FLOAT,primary key(name,deptId));
在修改表时添加主键约束
ALTER TABLE <数据表名> ADD PRIMARY KEY(<列名>);
例子:创建无主键tb_emp2,并用ALTER修改id为主键
字段名称
数据类型
备注
id
INT(11)
员工编号
name
VARCHAR(25)
员工名称
deptId
INT(11)
所在部门编号
salary
FLOAT
工资
mysql> use test_db; Database changed mysql> create table tb_emp1 -> ( -> id INT(11), -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> );
ALTER TABLE tb_emp2 ADD primary key(id);
大家在敲代码的时候忽略col3,这是我在这篇博文遗留下来的
mysql|表的(创建/修改/删除)[含实战练习]
这是博主上一篇写的博文。外键约束
在创建表时设置外键约束
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,...] REFERENCES <主表名> 主键列1 [,主键列2,...]
例子:外键约束关联到id
字段名称
数据类型
备注
id
INT(11)
部门编号
name
VARCHAR(22)
部门名称
location
VARCHAR(22)
部门位置
CREATE TABLE tb_dept1(id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL,location VARCHAR(50));
创建数据表tb_emp6,并在表tb_emp6上创建外键约束,让它的键deptId作为外键关联到表tb_dept1的主键id,下表为表结构
字段名称
数据类型
备注
id
INT(11)
员工编号
name
VARCHAR(25)
员工名称
deptId
INT(11)
所在部门编号
salary
FLOAT
工资
CREATE TABLE tb_emp6(id INT(11) PRIMARY KEY,name VARCHAR(25), deptId INT(11),salary FLOAT, CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id));
在修改表时添加外键约束
ALTER TABLE <数据表名> ADD CONSTRAINT <索引名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
例子:修改数据表tb_emp2,将字段deptId设置为外键,与数据表tb_dept1的主键进行关联
mysql> ALTER TABLE tb_emp2 -> ADD CONSTRAINT fk_tb_dept1 -> FOREIGN KEY(deptId) -> REFERENCES tb_dept1(id);
删除外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
例子:删除数据表tb_emp2中的外键约束fk_tb_dept1
ALTER TABLE tb_emp2 -> DROP FOREIGN KEY fk_tb_dept1;
唯一约束
在创建表时设置唯一约束
<字段名> <数据类型> UNIQUE
例子:创建数据表tb_dept2格式如下,指定部门的名称唯一
字段名称
数据类型
备注
id
INT(11)
部门编号
name
VARCHAR(22)
部门名称
location
VARCHAR(50)
部门位置
CREATE TABLE tb_dept2(id INT(11) PRIMARY KEY, name VARCHAR(22) UNIQUE,location VARCHAR(50));
在修改表时添加唯一约束
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE (<列名>);
例子:修改数据表tb_dept1,指定部门的名称唯一
ALTER TABLE tb_dept1 ADD CONSTRAINT unique_name UNIQUE(name);
删除唯一约束
ALTER TABLE <表名> DROP INDEX <唯一约束名>;
例子:删除数据表tb_dept1中的唯一约束unique_name
ALTER TABLE tb_dept1 DROP INDEX unique_name;
检查约束
在创建表时设置检查约束
CHECK (<检查约束>)
例子:在test_db数据库中创建tb_emp7数据表格式如下,要求salary字段值大于0且小于10000
字段名称
数据类型
备注
id
INT(11)
员工编号
name
VARCHAR(25)
员工名称
deptId
INT(11)
所在部门编号
salary
FLOAT
工资
CREATE TABLE tb_emp7(id INT(11) PRIMARY KEY,name VARCHAR(25),deptId INT(11), salary FLOAT,CHECK(salary>0 and salary <100), FOREIGN KEY(deptId) REFERENCES tb_dept1(id));
在修改表时添加检查约束
ALTER TABLE tb_emp6 ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)
例子:修改tb_emp7数据表,要求id字段值大于0
ALTER TABLE tb_emp7 ADD CONSTRAINT check_id CHECK(id>0);
删除检查约束
ALTER TABLE <数据表名> DROP CONSTRAINT <检查约束名>;
默认值约束
在创建表时设置默认值约束
<字段名> <数据类型> DEFAULT <默认值>;
例子:创建数据表tb_dept3,指定部门位置默认为Beijing
字段名称
数据类型
备注
id
INT(11)
部门编号
name
VARCHAR(22)
部门名称
location
VARCHAR(50)
部门位置
CREATE TABLE tb_dept3(id INT(11) PRIMARY KEY, name VARCHAR(22),location VARCHAR(50) DEFAULT 'Beijing');
在修改表时添加默认值约束
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <数据类型> DEFAULT <默认值>;
例子:修改数据表tb_dept3,将部门默认值改为Shanghai
ALTER TABLE tb_dept3 -> CHANGE COLUMN location -> location VARCHAR(50) DEFAULT 'Shanghai';
删除默认值约束
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <字段名> <数据类型> DEFAULT NULL;
例子:修改数据表tb_dept3,将部门位置的默认值约束删除
ALTER TABLE tb_dept3 CHANGE COLUMN location location VARCHAR(50) DEFAULT NULL;
非空约束
创建表时设置非空约束
<字段名> 数据类型 NOT NULL;
例子:创建数据表tb_dept4,指定部门名称不能为空
字段名称
数据类型
备注
id
INT(11)
部门编号
name
VARCHAR(22)
部门名称
location
VARCHAR(50)
部门位置
CREATE TABLE tb_dept4(id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL,location VARCHAR(50));
修改表时添加非空约束
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <字段名> <数据类型> NOT NULL;
例子:修改数据表tb_dept4,指定部门位置不能为空
ALTER TABLE tb_dept4 CHANGE COLUMN location location VARCHAR(50) NOT NULL;
删除非空约束
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <字段名> <数据类型> NULL;
例子:修改数据表tb_dept4,指定部门位置非空约束删除
ALTER TABLE tb_dept4 CHANGE COLUMN location location VARCHAR(50) NULL;
查看表中的约束
SHOW CREATE TABLE (数据表名)G;
05-27 84
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算