为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目。

    一. unique 唯一性约束

      值不可重复;

    二. not null 非空约束

      值不可为空;

    三. default  默认值约束

      当增加数据时没有插⼊值时,会自动插⼊默认值;

    四. check 检查约束

      mysql不支持该约束,但写入语句不会报错;

    五. primary key 主键约束

      主键约束 = 唯一性约束 + 非空约束,是一张表的代表性字段,

      一张表只能有一个主键,

      主键可以是一个字段,也可以是多个字段(联合主键,复合主键),

      整形主键字段可以使用auto_increment(自动增长)修饰,

      插入时不写主键字段值,值 = 上一列值 + 1;

    六. foreign key 外键约束

      外键是另一表的主键,常用来和其他表建立联系

      外键与主键的引用类型必须一致,如果主键是int外键是char则不行

      一定要匹配主表中 引用的列 ( 所要创建的外键是主表中的主键 )

      主键和外键的字符编码必须一致,如果主表为utf8,则此表也要为utf8 


     --添加方式
      (注:文中添加方式仅为示例,实际同时对一个字段同
       时添加多个约束会有bug,具体原因可以参见约束原理)
     --第一种,创建表时在修饰字段末直接添加,不支持添加foreign key
     create table stu(sid int unique,sname char(20));
     create table stu(sid int not null,sname char(20));
     create table stu(sid int default 0,sname char(20));
     create table stu(sid int primary key,sname char(20));      --第二种,创建表时单独添加,constraint表示起别名,不支持添加default
     create table stu(sid int,
               sname char(20),
               constraint unique_stu unique(sid),
               constraint notnull_stu not null(sid),
               constraint pk_stu primary key(sid),
               constraint fk_stu foreign key(sid) references s(sid)
               );
     --第三种,表已经存在,且字段下的所有值符合约束条件
     alter table stu add constraint unique_stu unique(sid);
     alter table stu add constraint notnull_stu not null(sid);
     alter table stu add constraint pk_stu primary key(sid);
     alter table stu add constraint fk_stu foreign key(sid) references s(sid);
      --查询约束信息,可查看约束名,table表示表名
  show keys from table;
   
     --删除约束,index表示约束名,table表示表名
     drop index on table;

 

mysql字段约束的更多相关文章

  1. 2-16 MySQL字段约束-索引-外键

    一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) ...

  2. mysql字段约束-索引-外键---3

    本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符   我们通过这个例子来看看 mysql> create table wo ...

  3. 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法

    1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...

  4. MySQL:字段约束与索引

    字段约束 MySQL的字段约束共四种: 约束名 关键字 描述 主键约束 PRIMARY KEY 字段值唯一,且不能为NULL 非空约束 NOT NULL 字段值不能为NULL 唯一约束 UNIQUE ...

  5. mysql 在已存在的表中添加/删除字段约束AUTO_INCREMENT遇到的问题

    1. 在已存在的表中添加字段约束AUTO_INCREMENT修饰符 mysql> alter table user modify uid int auto_increment primary k ...

  6. 【MySQL】MySQL的约束

    在开始之前,笔者介绍一下笔者使用的数据库版本为5.7.所有的关系型数据库都支持对数据表使用约束,通过约束可以更好的保证数据表里数据的完整性.约束是在表上强制执行的数据校验,约束主要用于保证数据库里数据 ...

  7. mysql的约束

    SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). (1)NOT NULL约 ...

  8. [转]mysql的约束

    转自:http://blog.csdn.net/kqygww/article/details/8882990 MySQL中约束保存在information_schema数据库的table_constr ...

  9. MYSQL数据库约束类型

    07.14自我总结 MYSQL数据库约束类型 一.主键约束(primary key) 主键约束要求主键列的数据唯一,并且不能为空.主键分为两种类型:单字段主键和多字段联合主键. 1.单字段主键 写法 ...

随机推荐

  1. 学习笔记—HTML基础标签

    HTML的概念 概念: HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 ( ...

  2. UiPath实践经验总结(二)

    1.       UI操作容易受到各种意外的干扰,因此应该缩短UI操作阶段的总体时间.而为了缩短UI操作阶段的总体时间,应该将UI操作尽量放在一起,将后台的各种操作尽量放在UI操作的前后.例如,现在有 ...

  3. 关于a[i]++和a[i++]说明

    1.a[i]++:表示对当前数组元素值自增,此时可以把a[i]简单看做一个变量x,操作后,x的值加1: int main() { ]; ; a[i] = ; a[i]++; printf(" ...

  4. Vim中设置括号自动补全

    1.打开用户Vim配置文件:~/.vimrc vim ~/.vimrc 2.输入以下配置: set tabstop=4 inoremap " ""<ESC>i ...

  5. 理解Device Tree Usage

    英语原文地址: htttp://devicetree.org/Device_Tree_Usage 本文介绍如何为新的机器或板卡编写设备树(Device Tree), 它旨在概要性的介绍设备树概念,以及 ...

  6. July 02nd. 2018, Week 27th. Monday

    Bad times make a good man. 艰难困苦出能人. Bad times make a good man, and hard times create strong men, but ...

  7. 使用 Node.js 搭建 Web 服务器

    使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ...

  8. Python编程Day1——计算机组成与操作系统

    一..计算机基础 二.编程与编程的目的 1.什么是语言? 一种事物与另外一种事物沟通的介质 编程语言是程序员与计算机沟通的介质 2.什么是编程? 程序员把自己想要让计算机做的事用编程语言表达出来,编程 ...

  9. WebApi生成在线API文档--Swagger

    1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON 配置显示API. 项目本身仅仅也只依赖 ...

  10. 强化学习(七)时序差分离线控制算法Q-Learning

    在强化学习(六)时序差分在线控制算法SARSA中我们讨论了时序差分的在线控制算法SARSA,而另一类时序差分的离线控制算法还没有讨论,因此本文我们关注于时序差分离线控制算法,主要是经典的Q-Learn ...