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

    一. 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. 使用mysql事件定时执行岗位七天下线任务

    最近做了一个招聘的项目,在项目中有一个定时下线的需求.在做之前我一直在考虑到底使用window 服务,还是使用调度,最终我选择使用mysql定时事件,因为这样简单方便. 思路:首先创建一个存储过程,通 ...

  2. vue2.0 配置环境总结(都是泪啊)

    最近有点空闲时间,终于把一直想学的vue提上了日程,以下是收集的一些帮助入门的链接 1:https://vuefe.cn/v2/guide/ vue2.0中文官网 2:https://router.v ...

  3. tcp/ip协议详解

    1. 概念介绍 互联网协议(Internet Protocol Suite)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构.它常被通称为 TCP/IP 协议族(英语:TCP/I ...

  4. Pytorch中torch.autograd ---backward函数的使用方法详细解析,具体例子分析

    backward函数 官方定义: torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph ...

  5. 【社群话题分享】你的网站 HTTPS 了吗?

    每周三下午的话题活动是又拍云技术社群的优良传统-大家一起来看看这周都聊了些啥吧! 推荐阅读: 当 “HTTP” 先生遇上“S”小姐 了解 HTTPS,读这篇文章就够了 HTTPS 是什么? HTTPS ...

  6. 【朝花夕拾】Android性能篇之(八)ANR篇--草稿

    1.ANR概念 2.ANR发生场景 Android开发者官网 上说到了两个原因:(1)点击按键或者触摸屏幕等输入事件在5s内没有响应:(2)10s内没有完成广播事件.如下所示: Android wil ...

  7. 【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在从Android Studio3.0.0版本升级到Android Studio3.0.1版本的时候,出现了一个问题,需要升级Gra ...

  8. Celery异步调度框架(一)基本使用

    介绍 之前部门开发一个项目我们需要实现一个定时任务用于收集每天DUBBO接口.域名以及TOMCAT(核心应用)的访问量,这个后面的逻辑就是使用定时任务去ES接口抓取数据存储在数据库中然后前台进行展示. ...

  9. 如何让vue自定义组件可以包裹内容,并且渲染出来,以及组件的组合使用

    当我们用vue一开始写项目时,按需求文档自定义了一个公用组件,这个组件很多地方都用到了,然后随着项目的推进,又有了新的需求要在里面加东西,但又不是所有的地方都要加 这时候我们想这样往里面塞内容↓    ...

  10. Linux用户和权限管理看了你就会用啦

    前言 只有光头才能变强 回顾前面: 看完这篇Linux基本的操作就会了 没想到上一篇能在知乎获得千赞呀,Linux也快期末考试了,也有半个月没有写文章了.这篇主要将Linux下的用户和权限知识点再整理 ...