MySQL--数据约束
来源:互联网 发布:编程语言难度排行 编辑:程序博客网 时间:2024/06/04 17:53
数据约束
1.默认值
作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值。注意: 1)对默认值字段插入null是可以的。 2)对默认值字段可以插入非null
CREATE TABLE student( id INT, NAME VARCHAR(20), address VARCHAR(20) DEFAULT '中国' -- 默认值)
2.非空
作用: 限制字段必须赋值注意: 1)非空字符必须赋值 2)非空字符不能赋null
CREATE TABLE student( id INT, NAME VARCHAR(20), gender VARCHAR(2) NOT NULL -- 非空)
3.唯一
作用: 对字段的值不能重复注意: 1)唯一字段可以插入null 2)唯一字段可以插入多个null
CREATE TABLE student( id INT UNIQUE, -- 唯一 NAME VARCHAR(20))
4.主键
作用: 非空+唯一注意: 1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。 2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。
CREATE TABLE student( id INT PRIMARY KEY, -- 主键 NAME VARCHAR(20))
5.自增长
作用: 自动递增
CREATE TABLE student( id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, -- 自增长,从0开始 ZEROFILL 零填充 NAME VARCHAR(20))SELECT * FROM student;-- 不能影响自增长约束DELETE FROM student;-- 可以影响自增长约束TRUNCATE TABLE student;
6.外键
作用:约束两种表的数据 出现两种表的情况: 解决数据冗余高问题: 独立出一张表 例如: 员工表 和 部门表 问题出现:在插入员工表数据的时候,员工表的部门ID字段可以随便插入!!!!! 使用外键约束:约束插入员工表的部门ID字段值 解决办法: 在员工表的部门ID字段添加一个外键约束
-- 部门表(主表)CREATE TABLE dept( id INT PRIMARY KEY, deptName VARCHAR(20))-- 修改员工表(副表/从表)CREATE TABLE employee( id INT PRIMARY KEY, empName VARCHAR(20), deptId INT,-- 把部门名称改为部门ID -- 声明一个外键约束 CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) -- 外键名称 外键 参考表(参考字段))
7.级联操作
问题: 当有了外键约束的时候,必须先修改或删除副表中的所有关联数据,才能修改或删除主表!但是,我们希望直接修改或删除主表数据,从而影响副表数据。可以使用级联操作实现!!! 级联修改: ON UPDATE CASCADE 级联删除: ON DELETE CASCADE
CREATE TABLE employee( id INT PRIMARY KEY, empName VARCHAR(20), deptId INT,-- 把部门名称改为部门ID -- 声明一个外键约束 CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE -- 外键名称 外键 参考表(参考字段))注意: 级联操作必须在外键基础上使用
CREATE TABLE department(id INT PRIMARY KEY,NAME VARCHAR(20))INSERT INTO department(id,NAME) VALUES(1,'组织部');INSERT INTO department(id,NAME) VALUES(2,'文体部');INSERT INTO department(id,NAME) VALUES(3,'宣传部');SELECT * FROM department;DROP TABLE employee;CREATE TABLE employee( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), deptId INT, CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE ) INSERT INTO employee(NAME,deptId) VALUES('狗娃',1); INSERT INTO employee(NAME,deptId) VALUES('美美',2); INSERT INTO employee(NAME,deptId) VALUES('狗剩',3); INSERT INTO employee(NAME,deptId) VALUES('铁蛋',2); SELECT * FROM employee; SELECT e.name,d.name FROM employee e ,department d WHERE e.deptId=d.id;--output:name name 狗娃 组织部 美美 文体部 狗剩 宣传部 铁蛋 文体部
0 0
- MySQL数据约束
- MySQL--数据约束
- mysql-(二)-数据约束
- mysql之数据约束
- MySQL数据约束
- MYSQL中数据约束
- mysql数据完整性和约束
- mysql数据完整性和约束
- MySQL(五)数据约束
- mysql(加强篇)---数据约束
- mysql对无效数据的约束
- mysql基础---数据约束(七)
- MySQL 删除有外键约束的数据
- 【Mysql】Navicat数据导出和Mysql唯一约束的坑
- Mysql约束
- Mysql约束
- mysql约束
- MySQL约束
- 1、(知识篇)泛型Generic
- 结对编程
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- CSS3 媒体类型和响应式设计
- 机器学习之组合算法总结
- MySQL--数据约束
- tarjan学习笔记(poj2186&&bzoj1051受欢迎的牛)
- STM32F10xx复位和时钟控制(RCC)一览
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- <string>和<string.h>
- CSS 4.3 样式-字体
- poj 1836 Alignment
- Windows 环境下构建 Mesa 12.0.3
- 2013 后苹果 MAC 安装 WINDOWS 教程