MySQL_约束条件
八个约束条件
只有唯一约束才有约束名
1.非空约束:NOT NULL
2.主键约束:
PRIMARY KEY
3.多字段联合主键(复合主键)
4.唯一约束:
UNIQUE
5.默认约束:
DEFAULT
6.外键约束:
FOREIGN KEY
7.自增约束:
auto_increment
8.检查约束:
auto_increment
1.非空约束NOT NULL
- 非空约束___创建表时添加约束
create table 表名
(
a int not null,
b int not null,
);
- 非空约束___修改表时添加约束
alter table 表名
modify 字段名 类型 not null;
- 非空约束___删除约束
alter table 表名
modify 字段名 类型;
2.主键约束PRIMARY KEY
- 主键约束___创建表时添加约束.
create table 表名
(
a int,
b int,
c int,
primary key(字段1,字段2)
);
create table 表名
(
a int,
b int,
c int,
constraint 约束名 primary key(字段1,...)
);
create table 表名
(
a int primary key,
b int,
c int
);
- 主键约束___修改表时添加约束
alter tbale 表名
modify 字段名 类型 primary key;
alter table 表名
primary key(字段1,字段2);
alter table 表名
add constraint 约束名 primary key(字段1,字段2);
- 主键约束___删除约束
alter table 表名
drop primary key;
3.多字段联合主键(复合主键)
- 多字段联合约束___创建多字段联合主键
create table 表名
(
a int,
b int,
primary key(字段1,字段2)
);
4.唯一约束UNIQUE
- 唯一约束___创建表时添加约束
create table 表名
(
a int unqiue,
b int,
c int
);
create table 表名
(
a int,
b int,
c int,
constraint usfz unique(字段名,...)
);
create table 表名
(
a int,
b int,
c int,
unique(字段名,...)
);
- 唯一约束___修改表时添加约束
alter tbale 表名
modify 字段名 类型 unique;
alter table 表名
add unique(字段1,字段2);
alter table 表名
add constraint 约束名 unique(字段1,字段2);
- 唯一约束___删除约束
alter table 表名
drop index 约束名;
alter table 表名
drop key 约束名称;
5.默认约束DEFAULT
- 默认约束___创建表时添加约束
create table 表名
(
a int primary key,
b int default '123456'
);
- 默认约束___修改表时添加约束
alter table 表名
modify 字段名 类型 default '1234';
alter table 表名
alter column 字段名 set default '1234';
- 默认约束___删除约束
alter table 表名
modify 字段名 类型;
alter table 表名
alter column 字段 drop default;
6.外键约束FOREIGN KEY
有外键的表称之为从表或者子表,相关联的表称之为主表或者父表
- 外键约束___创建表时添加约束
create table 从表名
(
a int,
b int,
constraint 外键约束名 foreign key (从表字段名)
references 主表名 (主表主键)
);
- 外键约束___修改表时添加约束
alter table 从表名
add foreign key(从表字段名)
references 主表名(主表字段);
- 外键约束___删除约束
alter table 从表名
drop foreign key 从表字段名;
- 从父表删除或更新且自动删除或更新子表中匹配的行
create able 从表名
(
a int,
b int,
consteraint fk_cid
foreign key(从表字段名)
references 主表表名(主表字段名) on delete cascade
);
7.自增约束 auto_increment
https://www.cnblogs.com/iforever/p/10071733.html
- 自增列___创建表时添加约束
如果想一个自增列,则该字段必须为主键
create tbale 表名
(
a int primary key auto_increment,
b int
);
create table 表名
(
a int primary key auto_increment,
b int
)auto_increment=9;
- 自增列___修改表时添加约束
alter table 表名
modify 字段名 字段类型 auto_increment;
alter table 表名
auto_increment=9;
- 自增列___删除约束
alter table 表名
modify 字段名 字段类型;
就算是把自增列给删除了也会给原自增列一个值,这个值为0
8.检查约束
经过上网查看发现,MySQL只是可以使用check约束,但不会强制的遵循check约束!
官方推荐使用枚举类型(ENUM)来替代以上的使用check约束的情况原文
- 检查约束___创建表时添加约束
create table 表名
(
a int,
b int check(字段名>0 and 字段名<100)
);
create table 表名
(
a int,
check(字段名>100)
);
- 检查约束___修改表时添加约束
alter table 表名
add constraint 约束名 check(字段名>100);
- 检查约束___删除约束
alter table 表名
drop constraint 检查约束名;
MySQL_约束条件的更多相关文章
- oracle数据库出现“批处理中出现错误: ORA-00001: 违反唯一约束条件”解决方法
最近使用oraclede impdp工具全库导入数据库时,在数据库里面使用出现如下情况. SQL state : 违反唯一约束条件 (GDXAORCL.SYS_C0055359) ; nested e ...
- oracle违反完整约束条件
oracle违反完整约束条件 Oracle ORA-02292: 违反完整约束条件 (UNITELE.TA_SUB_REFERENCE3) - 已找到子记录 A表被B表引用,删除A表的时候提示ORA- ...
- SQL server 的约束条件【转】
SQLServer - 约束 一.约束的分类 在SQLServer中,有3种不同类型的约束. 1.实体约束 实体约束是关于行的,比如某一行出现的值就不允许出现在其他行,例如主键. 2.域约束 域约束是 ...
- 纯代码添加约束条件(Auto Layout)
Auto Layout 是一种基于约束的.描述性的布局系统.也就是使用约束条件来描述布局,View的Frame会根据这些描述来进行计算. 在iOS6.0以后加入了一个新类: NSLayoutConst ...
- 1 - SQL Server 2008 之 使用SQL语句创建具有约束条件的表
约束条件分为以下几种: 1)非空约束,使用NOT NULL关键字: 2)默认值约束,使用DEFAULT关键字: 3)检查约束,使用CHECK关键字: 4)唯一约束,使用UNIQUE关键字: 5)主键约 ...
- 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)
0.表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user ...
- 一些不熟悉的SQL脚本--约束条件
1.根据表名查询主键的SQL语句 SELECT D.COLUMN_NAME AS COLNAME FROM USER_CONS_COLUMNS D, USER_CONSTRAINTS M WHERE ...
- MySQL中的完整性约束条件(主键、外键、唯一、非空)
数据库的完整性约束用来防止对数据的意外破坏,来保证数据的安全性和一致性. 主键 1.创建表时候指定主键 创建表user(id, username, age),并且id字段非空自增. CREATE TA ...
- ORACLE之莫名---ORA-02290: 违反检查约束条件
最近碰到一个十分棘手的问题,Java程序插入空数据到oracle时报ORA-02290: 违反检查约束条件(XXXX.×××××),这明显是在设置不可为空的字段上插入为空内容导致,但是检查数据库表后发 ...
随机推荐
- Can't load Microsoft.ReportViewer.ProcessingObjectModel.dll
本机的时候是能正常看到report,但deploy到别的机器上却不行,按说从本机拷个dll过去就可以,但怎么也找不到. 原来要在cmd那里输入C:\WINDOWS\assembly\GAC_MSIL ...
- web+下载文件夹
文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端,所以文件下载需要IO技术将服务器端的文件读取到,然后写到response缓冲区中,然后再下载到个人客户端. "> <m ...
- oracle基本使用
一.数据库 1.1 主流数据库 微软: sql server .access 瑞典MySQL: AB公司mysql IBM公司: db2 美国Sybase公司:sybase 美国oracle公司: o ...
- c++学习之单链表以及常用的操作
新学数据结构,上我写的代码. #include <iostream> #include <cstdlib> using namespace std; typedef int E ...
- Django-cookie-sesson
一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器 ...
- Linux设备驱动程序 之 休眠
休眠简介 当一个进程被置入休眠时,它会被标记为一种特殊状态,并从调度器的运行队列中移走:直到某些情况下修改了这个状态,进程才会在任意cpu上调度,即运行该进程:休眠中的进程会被搁置在一边,等待将来的某 ...
- 数据结构之队列(Queue)
1,队列的定义 队列:是一种先进先出的数据结构,如下图所示,现进去的数据在队列前面(front),先出队列,后进入队列的数据在后面(rear),后出队列. 队列常用操作: q=Queue() #创建队 ...
- Android中的asserts和res/raw资源目录
1.assets目录 assets目录下称为原生文件,无法通过R资源清单类访问,这类文件在被打包成apk文件时是不会进行压缩的: (1)使用方法 AssetManager assets = this. ...
- redis多实例与主从同步及高级特性(数据过期机制,持久化存储)
redis多实例 创建redis的存储目录 vim /usr/local/redis/conf/redis.conf #修改redis的配置文件 dir /data/redis/ #将存储路径配置修改 ...
- SSH整合入门案例
package loaderman.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import ...