数据约束

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. [NOIp2016] 蚯蚓

    类型:单调队列 传送门:>Here< 题意:有$N$只蚯蚓,每秒都会伸长$q$.每一次都会有人选出最长的一条切成两半,长度分别是$\left \lfloor px \right \rflo ...

  2. Jeesite 代码生成

    1.mysql数据库建表 参考自带的sys_area 的创表SQL复制来修修改改即可 2.配置代码生成文件覆盖路径 打开eclipse 按ctrl+shift+R  找到jeesite.propert ...

  3. Django的Hello World

    Django安装 yum -y install python #安装python yum -y install epel-release #安装扩展源 yum -y install python-pi ...

  4. Linux 通过Shell 查找问题进程 [转]

    背景介绍: 最近公司服务器不太稳定,总是在凌晨某个时段突发高负载情况,因为客观环境比较复杂,所以很难猜测出到底是哪个进程出现了问题,加之故障发生时,通常我在睡觉,等我被报警短信吵醒,通过公司 VPN ...

  5. shell getopts用法

    eg:sh test.sh -u tom -p 123456: getopts的使用形式:getopts OPTION_STRING VAR: OPTION_STRING:-u,-p这种自定义选项: ...

  6. 【BZOJ4419】[SHOI2013]发微博(???)

    [BZOJ4419][SHOI2013]发微博(???) 题面 BZOJ 洛谷 题解 一道\(easy\),每个点维护一下要给周围的点加上多上,如果额外连了一个点进来就给他把标记减掉,如果删掉了一条边 ...

  7. 自写juqery插件实现左右循环滚动效果图

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  8. 【bfs】1252 走迷宫

    [题目描述] 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走. 给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到).只能在水平方向或垂直方向走,不 ...

  9. luogu1484 种树 (优先队列)

    我每次都想选那个最大的.或者是它旁边的两个一起选,如果这两个一起选会大于那个最大的的话 那我就先把那个最大的选了,再提供一个反悔的选项(类似于网络流的思路?),就是我可以再把种的树换成它旁边那两个,也 ...

  10. HDU 6336 Matrix from Arrays (杭电多校4E)

    遇事不决先打表. 然后会发现(个屁)大的矩形是由一个2L*2L的矩形重复出现组成的然后我们就可以这个矩形分成四个点到(0, 0)点的矩形,这样问题就变成了求四个到顶点(0, 0)的矩形的面积,然后就先 ...