数据约束

1.默认值:

作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值。

注意:

1)对默认值字段插入null是可以的。

2)对默认值字段可以插入非null

 

CREATE TABLE student(

id INT,

NAME VARCHAR(20),

address VARCHAR(20) DEFAULT '自定义'  -- 默认值

)

当字段没有插入值的时候,自动分配该字段的默认值

Demo:

INSERT INTO student(uid,uname) VALUES(2,'大灰狼');

注意:默认值的字段允许为null

INSERT INTO student(uid,uname,address) VALUE(3,'熊大',NULL);

INSERT INTO student(uid,uname,address) VALUE(1,'熊二','淄川');

2.非空

作用: 限制字段必须赋值

注意:

1)非空字符必须赋值

2)非空字符不能赋null

gender字段必须有值(不为null)

CREATE TABLE student(

id INT,

NAME VARCHAR(20),

gender VARCHAR(2) NOT NULL -- 非空

)

-- 非空字段必须赋值

INSERT INTO emp (eid,ename) VALUES (1,'笨鸡')

-- 非空字符不能插入null

INSERT INTO emp (eid,ename,address) VALUES (1,'笨鸡','')

3.唯一

作用: 对字段的值不能重复

注意:

1)唯一字段可以插入null

2)唯一字段可以插入多个null

 

CREATE TABLE student(

id INT UNIQUE, -- 唯一

NAME VARCHAR(20)

)

Demo

INSERT INTO emp (eid,ename) VALUES (1,'李湘赫')

 

INSERT INTO emp (eid,ename) VALUES (1,'笨鸡')

/*键'eid'重复输入'1'*/

INSERT INTO emp (eid,ename) VALUES (2,'笨鸡')

4.主键(非空+唯一)

作用: 非空+唯一

注意:

1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。

2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。

CREATE TABLE student(

id INT PRIMARY(主要) KEY, -- 主键 唯一非空

NAME VARCHAR(20)

)

Demo

INSERT INTO emp (eid,ename) VALUES (1,'李湘赫')

INSERT INTO emp (eid,ename) VALUES (2,'马大头')

INSERT INTO emp (eid,ename) VALUES (1,'马大头')

违反唯一约束:

/*键'PRIMARY'重复输入'1'*/

 

违反非空约束

5.自增长

作用: 自动递增

CREATE TABLE student(

id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, -- 自增长,从0开始  ZEROFILL 零填充

NAME VARCHAR(20)

)

INSERT INTO emp (ename) VALUES ('李湘赫');

INSERT INTO emp (ename) VALUES ('李湘赫');

INSERT INTO emp (ename) VALUES ('李湘赫');

INSERT INTO emp (ename) VALUES ('李湘赫');

-- 不能影响自增长约束

DELETE FROM student;

--可以影响自增长约束

TRUNCATE TABLE student;

外键

作用:约束两种表的数据

出现两种表的情况:

解决数据冗余高问题: 独立出一张表

例如: 员工表  和  部门表

问题出现:在插入员工表数据的时候,员工表的部门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(声明定义)

CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES {dept(id)部门表里的id}

--           外键名称                  外键               参考表(参考字段)

)

注意

1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!

2)主表的参考字段通用为主键!

         3)添加数据: 先添加主表,再添加副表

                            4)修改数据: 先修改副表,再修改主表

                            5)删除数据: 先删除副表,再删除主表

 

-- 1)当有了外键约束,添加数据的顺序: 先添加主表,再添加副表数据

-- 2)当有了外键约束,修改数据的顺序: 先修改副表,再修改主表数据

-- 3)当有了外键约束,删除数据的顺序: 先删除副表,再删除主表数据

-- 修改部门(不能直接修改主表)

Mysql数据约束 整理的更多相关文章

  1. astgo经常死机变慢?试试mysql数据碎片整理吧

    使用SSH之类的工具或navicat链接数据库后(注意:是链接数据库后哦,不是直接SSH后就弄,这样提示命令错误的) 执行下面命令(目的是对ASTGO的数据库内除话单之外的所有表进行数据碎片整理,特别 ...

  2. Java基础87 MySQL数据约束

    1.默认值 -- 创建表student1,设置address字段有默认值 create table student1 ( id int, name ), address ) default '广东省深 ...

  3. MySQl数据约束练习

    默认值约束   1 CREATE TABLE USER( 2 uid INT, 3 uname VARCHAR(10), 4 address VARCHAR(30) DEFAULT '山东省' 5 ) ...

  4. MySQL数据约束

    定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束. 代码: 1.默认值  :   default ' ' 作用:当用户对使用默认值的字段不插入值的时候,就使用默认值(自动填充). 注意: ...

  5. MySQL数据约束和关联查询

    1 默认值deafult:在建表的时候字段后使用 default ,默认值字段允许为null. 2 非空 not null:在建表的时候字段后使用  not null. 非空字段必须赋值,并且不能是n ...

  6. mysql数据字段整理

    <?php header('content-type:text/html;charset=utf-8'); define('DB_HOST','127.0.01'); define('DB_US ...

  7. MYSQL中约束及修改数据表

    MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括:    NOT NULL(非空约束)    PRIMARY KEY(主键约束)    UNI ...

  8. mysql 数据操作 单表查询 where 约束 目录

    mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...

  9. mysql之约束以及修改数据表

    数据约束的分类: ———————————————————————————————————————————————————— 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ...

随机推荐

  1. Django restframe 视图函数以及ModelSerializer的使用

    建立model数据库 from django.db import models __all__ = ['Book', 'Publisher', 'Author'] # Create your mode ...

  2. HTML查漏补缺 【未完】

    1.命名锚 HTML 链接 - name 属性 name 属性规定锚(anchor)的名称. 您可以使用 name 属性创建 HTML 页面中的书签. 书签不会以任何特殊方式显示,它对读者是不可见的. ...

  3. 浅析Android Dialog中setContentView()方法

    2017-05-15 概述 Dialog在Android中是一个很优秀的工具.在使用Dialog时,我们一般都会自定义要显示的内容布局.Dialog自带了三个方法来支持自定义内容布局. public ...

  4. 第五十六 css选择器和盒模型

    1.组合选择器 群组选择器 #每个选择为可以位三种基础选择器任意一个,用逗号隔开,控制多个. div,#div,.div{ color:red } 后代(子代)选择器 .sup .sub{ 后代 } ...

  5. Windows server 2012 卸载iis 黑屏

    转载:https://jingyan.baidu.com/article/ff42efa9fb6f16c19e2202dc.html 1 按  ctrl+alt+end 键,新建运行任务 ,输入cmd ...

  6. springboot使用redis

    1.pom文件中引入 spring-boot-starter-redis <dependency> <groupId>org.springframework.boot</ ...

  7. Marriage Match II HDU - 3081(二分权值建边)

    题意: 有编号为1~n的女生和1~n的男生配对 首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 然后输入f组,c,d表示编号为c的女生和编号为d的女生是朋友 进行配对的要求满足其一即 ...

  8. 解决sublime text3 中文字符乱码

    前言 由于系统编码问题导致的中文乱码解决,linux和windows解决方式都一样. 流程 linux下两步都需要,windows下只需要第二步. 1.在package install中搜索安装:co ...

  9. SpringMVC把后台文件打印到前台

    实现效果如下: 代码为: @RequestMapping(value = "/tools/printContract") public void cell(HttpServletR ...

  10. 「CodeForces - 717E」Paint it really, really dark gray (dfs)

    BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时 ...