MySql(二):常见的那些个约束
今天总结一下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(二):常见的那些个约束的更多相关文章
- python Mysql (二)
Mysql (二) 一. 事务 a.数据库开启事务命令 1 2 3 4 #start transaction 开启事务 #Rollback 回滚事务,即撤销指定的sql语句(只能回退insert de ...
- Python全栈开发:Mysql(二)
视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT *FROM (SELEC ...
- Mysql的常见几种错误:1045,1044
Mysql的常见几种错误: 一.在进入 mysql 数据库时出错 # mysql -u root -p Enter password: ERROR 1045 (28000): Access den ...
- linux运维、架构之路-MySQL(二)
一.SQL语句实战 1.DDL语句——库管理 ①查看数据库 show databases; show databases like 'word%';#模糊查询数据库 ②创建数据库 create dat ...
- MySQL基础(6) | check约束
MySQL基础(6) | check约束 前言 在一些情况下,我们需要字段在指定范围的输入, 例如:性别只能输入 '男'或者'女',余额只能大于0等条件, 我们除了在程序上控制以外,我们还能使用 CH ...
- MySQL同步常见问题解答(自己的小心得)
前几天刚刚注册了博客园,我想写一些技巧性的教程,今天给大家分享一个MySQL同步常见问题解答. Q:如果主服务器正在运行并且不想停止主服务器,怎样配置一个从服务器? A:有多种方法.如果你在某时间点做 ...
- 转载:Centos7 从零编译Nginx+PHP+MySql 二
序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...
- MySQL二进预编译制安装
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL二进预编译制安装时间:2019年2月25日内容:MySQL二进制预编译安装重点:MySQL二进制预 ...
- 查询执行成本高(查询访问表数据行数多)而导致实例 CPU 使用率高是 MySQL 非常常见的问题
MySQL CPU 使用率高的原因和解决方法_产品性能_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/51587.html ...
随机推荐
- IIS部署网站只有首页能访问,其他链接失效/运行.net+Access网站-可能原因:IIS未启用32位应用程序模式
在64位的机子上IIS运行32位的.NET程序 由于64位操作系统不支持Microsoft OLE DB Provider for Jet驱动程 也不支持更早的Microsoft Access Dri ...
- zoj 3812 状压dp
转载:http://blog.csdn.net/qian99/article/details/39138329 题意:给出n个物品,每个物品有两种属性Wi,Ti,有q组查询,每组查询要求在n个物品中选 ...
- [Usaco2015 dec]Max Flow
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 204 Solved: 129[Submit][Status][Discuss] Descriptio ...
- Linux/windows查看设置环境变量指令
一.Linux: 1.查看所有环境变量的指令 方法1:$:export (export命令作用是显示.设置或删除linux环境变量:) 方法2:$:env 2.查看某个指定的环境变量 方法1:$:ex ...
- Angularjs中比较实用的DateFormat库
angular.module('newApp') .factory('dateUtil', function() { var symbolMap = { 'MM': function(date) { ...
- ubuntu16.04 卸载 php7并安装php5.6记录
ubuntu16.04版本从默认源安装的php版本为7.x版本,我们都知道php7.0已经舍弃了很多旧版本的函数等内容,这对旧系统来说是致命的,那么,我们就有了安装旧版php的需求,而同一主机安装两个 ...
- go语言使用官方的 log package 来记录日志
原文:https://www.goinggo.net/2013/11/using-log-package-in-go.html ------------------------------------ ...
- 你不知道的JavaScript--Item34 大白话解说Promise
去年6月份. ES2015正式公布(也就是ES6.ES6是它的乳名),当中Promise被列为正式规范.作为ES6中最重要的特性之中的一个,我们有必要掌握并理解透彻.本文将由浅到深,解说Promise ...
- Android自己定义提示框
在开发中,假设感觉系统自带的提示框不好看,开发人员能够自定义提示框的样式.主要是继承Dialog 程序文件夹结构 关键代码 package com.dzt.custom.dialog; import ...
- docker(1):virtualbox 安装CoreOS系统,配置registry-mirror
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/51093850 未经博主同意不得转载. 博主地址是:http://blog.csd ...