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 ...
随机推荐
- Spring使用DriverManagerDataSource和C3P0分别配置MySql6.0.6数据源
首先,看一下项目路径 先说spring配置文件吧,这个比较重要 <?xml version="1.0" encoding="UTF-8"?> < ...
- 关于Scrum 实战故事录播的感悟升级
昨晚与几位自组织的伙伴进行了<Scrum 实战> 第17 章 <富有成效的每日站会>录播Sprint 不断的优化和精进的感悟. 首先,D兄给予了如下的建议: 1. 将段落 分得 ...
- Codeforces 158B (数学)
B. Mushroom Scientists time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- hdu 2224 双调欧几里得旅行商问题tsp
/* 题意:平面上n个点,确定一条连接各点的最短闭合旅程且每个点仅用一次.这个解的一般形式为NP的(在多项式时间内可以求出) 建议通过只考虑双调旅程(bitonictour)来简化问题,这种旅程即为从 ...
- javamail中的 javax.mail.AuthenticationFailedException: failed to connect的解决
在163邮箱中开启POP3和SMTP服务,并设置客户端授权密码,用该密码登录.而不是用户的密码.
- Bootstrap基础教程:tutorialspoint-bootstrap
来自turorialspoint的Boostrap基础教程(英文),官网:https://www.tutorialspoint.com/bootstrap/index.htm 中文版:https:// ...
- 超简单的vue2.0分页组件
1.组件代码 <template> <div class="pagination_comment_style" style="width: 100%;o ...
- Python学习十四:filter()
Python 中内置了filter()函数用于过滤序列. 使用方法: filter()接收一个函数和一个序列. filter()把传入的函数依次作用于每一个元素,然后依据返回值是True还是False ...
- oc73--NSArray使用
// // main.m // NSArray和NSString之间转换 #import <Foundation/Foundation.h> int main(int argc, cons ...
- Android 自带Base64加密解密
Android项目引用不到以下两个java类 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; Android有自己的base ...