今天总结一下mysql当中的常见约束吧!

  那什么是约束呢?通俗点讲,约束就是限定指定字段的存放规则!

● 主键约束(Primary Key)

● 外键约束(Foreign Key)

● 非空约束(Not Null)

● 唯一约束(Unique)

● 默认约束(Default)


主键约束 Primary Key

​ 主键约束要求主键列的数据唯一且不允许为空, 可分为单字段主键和多字段联合主键.

添加主键

# 建表时在字段后设置主键并自增
create table demo(
id int primary key auto_increment);
# 建表时在约束区设置主键(多字段联合主键)
# 约束区不能设置自增即:auto_incremen
create table demo(
id int ,
age int,
primary key(id)); # 联合主键为:primary key(id,age));
# 在已有的表中添加主键
alter table demo add primary key(id);
# 在已有表中添加自增主键
alter table demo modify id int primary key auto_increment;
# 设置表的已有主键自增
alter table demo modify id int auto_increment;
# 设置主键自增起始值(默认是1)
alter table demo auto_increment=2;

删除主键

# 注意:若指定了主键自增则此法删除不了主键(约束)
alter table demo drop primary key;
# 若主键指定了自增,则用只能从定义来删除主键了
alter table demo modify id int;

外键约束 Primary Key

​ 外键用来在两个表之间建立链接,它可以是一列或多列,一个表可以有一个或多个外键.

添加外键

# 创建表时添加
# demo1 为主表,外键引用主表的id字段
create table demo(
id int,
price double,
user_id int,
foreign key(user_id) references demo1(id))
# 修改现有表添加
# 先添加外键字段
alter table demo add user_id int;
# 再添加外键约束
alter table demo add foreign key(user_id) references demo1(id);

删除外键

# 一般不用(外键名称可在添加外键时指定,否则为默认的)
alter table demo drop foreign key 外键名称;

非空约束 Not Null

​ 非空约束要求该列字段值不能为空,否则会报错.(可配合默认约束)

# 在字段后面添加非空约束
create table demo(
id int not null);
# 在已有表添加非空约束
alter table demo change id id int not null;
# 删除非空约束
alter table demo change id id int;

唯一约束 Unique

​ 唯一约束要求改列字段值唯一,允许为null(多个null也可).

# 创建表时在字段后指定
create table demo(
id int unique);
# 创建表时在约束区添加
create table demo(
id int,
age int,
unique(id, age));
# 为已有表添加
alter table demo add unique(id);
# 删除约束
alter table demo drop index id;

默认约束 Default

​ 指定某列的默认值.

# 创建表时指定
create table demo(
id int,
age int default 1);

关注微信公众号,随时随地学习

MySql(二):常见的那些个约束的更多相关文章

  1. python Mysql (二)

    Mysql (二) 一. 事务 a.数据库开启事务命令 1 2 3 4 #start transaction 开启事务 #Rollback 回滚事务,即撤销指定的sql语句(只能回退insert de ...

  2. Python全栈开发:Mysql(二)

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT *FROM (SELEC ...

  3. Mysql的常见几种错误:1045,1044

    Mysql的常见几种错误: 一.在进入 mysql 数据库时出错   # mysql -u root -p Enter password: ERROR 1045 (28000): Access den ...

  4. linux运维、架构之路-MySQL(二)

    一.SQL语句实战 1.DDL语句——库管理 ①查看数据库 show databases; show databases like 'word%';#模糊查询数据库 ②创建数据库 create dat ...

  5. MySQL基础(6) | check约束

    MySQL基础(6) | check约束 前言 在一些情况下,我们需要字段在指定范围的输入, 例如:性别只能输入 '男'或者'女',余额只能大于0等条件, 我们除了在程序上控制以外,我们还能使用 CH ...

  6. MySQL同步常见问题解答(自己的小心得)

    前几天刚刚注册了博客园,我想写一些技巧性的教程,今天给大家分享一个MySQL同步常见问题解答. Q:如果主服务器正在运行并且不想停止主服务器,怎样配置一个从服务器? A:有多种方法.如果你在某时间点做 ...

  7. 转载:Centos7 从零编译Nginx+PHP+MySql 二

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  8. MySQL二进预编译制安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL二进预编译制安装时间:2019年2月25日内容:MySQL二进制预编译安装重点:MySQL二进制预 ...

  9. 查询执行成本高(查询访问表数据行数多)而导致实例 CPU 使用率高是 MySQL 非常常见的问题

    MySQL CPU 使用率高的原因和解决方法_产品性能_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/51587.html ...

随机推荐

  1. Drools介绍与使用

    Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值.Drools 允许使用声明方式表达业务逻辑.可以使用非 XML 的本地语言编写规则,从而便于学习和理解 ...

  2. 根据View找控制器

    - (UIViewController*)viewController { for (UIView* next = [self superview]; next; next = next.superv ...

  3. MySQL语句给字段值加1

    update tbl_moment_like set like_count = like_count + #{addLikes} where mid = #{mid}

  4. Redis: Useful commands

    SELECT X - Select database (the X must be int) CONFIG GET databases - Get databases number INFO keys ...

  5. leetcode 114.Flatten Binary Tree to Linked List (将二叉树转换链表) 解题思路和方法

    Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5 / \ \ 3 4 6 ...

  6. 使用IDA破解TraceMe.exe

    我发现用IDA破解TraceMe.exe比ODeasy多了. 打开IDA 后.直接搜索"序列号".得到 双击跳转到反汇编窗体,按F5转换为类C++代码 signed int __s ...

  7. 用WebCollector爬取新浪微博数据

    教程已转移:http://datahref.com/archives/28 WebCollector爬取新浪微博等完整演示样例project可加群250108697或345054141从群文件里下载. ...

  8. BC - Zball in Tina Town (质数 + 找规律)

    Zball in Tina Town  Accepts: 541  Submissions: 2463  Time Limit: 3000/1500 MS (Java/Others)  Memory ...

  9. linux RHEL 修改hostname 不需要重启机器

    1. 修改/etc/sysconfig/network 中的hostname HOSTNAME=newhostname 运行命令起作用: /etc/rc.d/rc.sysinit 2. 修改/ect/ ...

  10. HDU 1159 Common Subsequence (动规+最长公共子序列)

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...