MYSQL:约束?添加约束?删除约束?以及一些其他修饰?
MySQL中的约束,添加约束,删除约束,以及其他的一些修饰:
一.NOT NULL(非空约束)
添加非空约束
1)建表时直接添加
CREATE TABLE t_user(user_id INT(10) NOT NULL);
2)通过ALTER 语句
ALTER TABLE t_user MODIFY user_id INT(10) NOT NULL;
ALTER TABLE t_user CHANGE user_id user_id INT(10) NOT NULL;
删除非空约束
1)ALTER TABLE t_user MODIFY user_id INT(10);
2)ALTER TABLE t_user CHANGE user_id user_id INT(10);
二.UNIQUE(唯一约束)
添加唯一约束
1)建表时直接添加
CREATE TABLE t_user(user_id INT(10) UNIQUE);
CREATE TABLE t_user(
user_id INT(10),
user_name VARCHAR(30),
CONSTRAINT UN_PHONE_EMAIL UNIQUE(user_id,user_name)#复合约束
);
CREATE TABLE t_user(
user_id INT(10),
UNIQUE KEY(user_id)
);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) UNIQUE;
ALTER TABLE t_user CHANGE user_id user_id INT(10) UNIQUE;
ALTER TABLE t_user ADD UNIQUE(user_id);
ALTER TABLE t_user ADD UNIQUE KEY(user_id);
ALTER TABLE t_user ADD CONSTRAINT UN_ID UNIQUE(user_id);
ALTER TABLE t_user ADD CONSTRAINT UN_ID UNIQUE KEY(user_id);
删除唯一性约束
ALTER TABLE t_user DROP INDEX user_id;
注:唯一但是可以为空(空和空不相等)
三.PRIMARY KEY(主键约束)
添加主键约束
1)建表时直接添加
CREATE TABLE t_user(user_id INT(10) PRIMARY KEY);
CREATE TABLE t_user(
user_id INT(10),
user_name VARCHAR(30),
CONSTRAINT PK_ID_NAME PRIMARY KEY(user_id,user_name)#复合约束
);
CREATE TABLE t_user(
user_id INT(10),
PRIMARY KEY(user_id)
);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) PRIMARY KEY;
ALTER TABLE t_user CHANGE user_id user_id INT(10) PRIMARY KEY;
ALTER TABLE t_user ADD PRIMARY KEY(user_id);
ALTER TABLE t_user ADD CONSTRAINT PK_ID PRIMARY KEY(user_id);
删除主键约束
1)ALTER TABLE t_user DROP PRIMARY KEY;
注:主键约束相当于(唯一约束+非空约束)
一张表中最多有一个主键约束,如果设置多个主键,就会出现如下提示:
Multiple primary key defined!!!
删除主键约束前,如果有自增长需要先删除自增长,如果不删除自增长就无法删除主键约束
四.FOREIGN KEY(外键约束,对应的字段只能是主键或者唯一约束修饰的字段)
首先创建两张表:class,students
主表:
CREATE TABLE class(
cla_id INT(6) AUTO_INCREMENT PRIMARY KEY,
cla_name VARCHAR(30) NOT NULL UNIQUE
);
从表:
CREATE TABLE students(
stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,
stu_name VARCHAR(30) NOT NULL,
stu_score FLOAT(5,2) DEFAULT 0.0,
cla_id INT(10),
CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id)#添加外键约束
);
也可以这样添加:
ALTER TABLE students ADD CONSTRAINT FK_CLA_ID FROEIGN KEY(cla_id) REFERENCES class(cla_id);
删除外键约束
ALTER TABLE students DROP FOREIGN KEY FK_CLA_ID;
#外键中的级联关系有以下几种情况:
#ON DELETE CASCADE 删除主表中的数据时,从表中的数据随之删除
#ON UPDATE CASCADE 更新主表中的数据时,从表中的数据随之更新
#ON DELETE SET NULL 删除主表中的数据时,从表中的数据置为空
#默认 删除主表中的数据前需先删除从表中的数据,否则主表数据不会被删除
CREATE TABLE students(
stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,
stu_name VARCHAR(30) NOT NULL,
stu_score FLOAT(5,2) DEFAULT 0.0,
cla_id INT(10),
CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id) ON DELETE CASCADE
);
CREATE TABLE students(
stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,
stu_name VARCHAR(30) NOT NULL,
stu_score FLOAT(5,2) DEFAULT 0.0,
cla_id INT(10),
CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id) ON UPDATE CASCADE
);
CREATE TABLE students(
stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,
stu_name VARCHAR(30) NOT NULL,
stu_score FLOAT(5,2) DEFAULT 0.0,
cla_id INT(10),
CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id) ON DELETE SET NULL
);
注:插入数据时,先插入主表中的数据,再插入从表中的数据。
删除数据时,先删除从表中的数据,再删除主表中的数据。
五.CHECK(检查约束)
CREATE TABLE class(
cla_id INT(6) AUTO_INCREMENT PRIMARY KEY,
cla_name VARCHAR(30) NOT NULL UNIQUE,
CHECK(cla_id>0)
);
注:mysql不支持检查约束,但是写上检查约束不会报错
其他:
一.AUTO_INCREMENT(自增长)
添加自增长
1)在创建表的时候添加
CREATE TABLE t_user(user_id INT(10) AUTO_INCREMENT PRIMARY KEY);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) AUTO_INCREMENT;
ALTER TABLE t_user CHANGE user_id user_id INT(10) AUTO_INCREMENT;
删除自增长
ALTER TABLE t_user MODIFY user_id INT(10);
ALTER TABLE t_user CHANGE user_id user_id INT(10);
注:There can be only one auto column and it must be defined as a key.
一张表只能有一个自增长列,并且该列必须定义了约束(可以是主键约束,也可以是唯一约束,也可以是外键约束,但是不可以是非空和检查约束)
不过自增长一般配合主键使用,并且只能在数字类型中使用
二.ZEROFILL(零填充)
添加零填充
1)在创建表的时候添加
CREATE TABLE t_user(user_id INT(10) ZEROFILL);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) ZEROFILL;
ALTER TABLE t_user CHANGE user_id user_id INT(10) ZEROFILL;
删除零填充
ALTER TABLE t_user MODIFY user_id INT(10);
ALTER TABLE t_user CHANGE user_id user_id INT(10);
注:零填充会将未将有效位以外的位用零来显示,比如某字段数据类型为INT(5),而插入的值为2,那么零填充会显示00002
但是,这个效果在Navicat for MySQL中显示不出来,只有在DOS窗口下才能显示
三.DEFAULT(默认)
添加默认约束
1)在创建表的时候添加
CREATE TABLE t_user(user_id INT(10) DEFAULT 3);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) DEFAULT 2;
ALTER TABLE t_user CHANGE user_id user_id INT(10) DEFAULT 2;
删除默认约束
ALTER TABLE t_user MODIFY user_id INT(10);
ALTER TABLE t_user CHANGE user_id user_id INT(10);
四.UNSIGNED(无符号位)
添加无符号
1)在创建表的时候添加
CREATE TABLE t_user(user_id INT(10) UNSIGNED);
2)通过ALTER语句
ALTER TABLE t_user MODIFY user_id INT(10) UNSIGNED;
ALTER TABLE t_user CHANGE user_id user_id INT(10) UNSIGNED;
删除无符号
ALTER TABLE t_user MODIFY user_id INT(10);
ALTER TABLE t_user CHANGE user_id user_id INT(10);
注:无符号作用于数值类型
#从查询information_schema中查询指定表中的约束
USE INFORMATION_SCHEMA;
SELECT CONSTRAINT_NAME FROM TABLE_CONSTRAINTS WHERE TABLE_NAME='student';
MYSQL:约束?添加约束?删除约束?以及一些其他修饰?相关推荐
- ylb:使用sql语句实现添加、删除约束
ylbtech-SQL Server:SQL Server-使用sql语句实现添加.删除约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. -- ...
- MySQL约束——添加主键约束(联合主键)、删除主键约束
目录 主键约束 添加单列主键 添加多列主键(联合主键) 修改表结构添加主键 删除主键约束 文末资源推荐 每文一语 概念: 约束英文:constraint 约束实际上就是表中数据的限制条件 作用: 表在 ...
- 使用SQL语句添加和删除约束
--主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值. ...
- mysql之添加和删除字段
内容描述:分别在表的最后一列.第一列和指定列后添加新的字段,并删除表中的指定字段. 相关知识 为了完成本关任务,你需要掌握: 1.如何在指定位置添加新的字段, 2.如何删除指定的字段. 添加字段 因为 ...
- MySql中添加用户/删除用户
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...
- mysql语句添加、删除索引(转)
转自:mysql语句添加索引 参考: mysql索引学习----2----创建索引.修改索引.删除索引的命令语句 mysql语句添加索引 创建或添加索引可以使用如下语句. 一.使用ALTER TABL ...
- mysql 中添加和删除字段
在设计数据库的时候,字段的添加和删除操作要经常使用,在这里记录一下. 添加字段: alter table 表名 add 新字段名 数据类型 [约束条件 ] [first]| after] 已存在的字段 ...
- python对MySQL进行添加修改删除以及字符串的操作
# coding=UTF-8import MySQLdb def dbDperate(sql,param):"定义数据库的添加,修改和删除操作"#获取数据库的连接对象conn=My ...
- ssm框架+MySQL批量添加和删除
1.批量添加 jsp <form id="form1" action="${pageContext.request.contextPath}/order/addOr ...
- mysql怎么添加约束成绩_mysql怎么添加约束?
在MYSQL数据库中,建表时就可以进行对表的各项进行一些操作,例如添加主键约束或者非空约束:也可以在建表后进行添加约束和删除约束的操作.下面本篇文章就来带大家具体了解一下,希望对大家有所帮助. 什么是 ...
最新文章
- 错误	1	“System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制...
- 深度学习上的又一重点发现——利用MSCNN实现人群密度监测
- Grafana文档(升级Grafana)
- 学python数学要好吗_学习Python数学英语基础重要吗?
- android双击返回键退出程序的实现
- springboot jar服务器运行后无法请求_Spring boot、微服务、OAuth、OpenID的爱恨情仇!...
- boost::rational用法的测试程序
- 详解Python的内置函数eval()
- Spring boot Scheduled 配置
- 【iOS系列】-xib封装使用
- UVA - 207 PGA Tour Prize Money
- 几个常用的Oracle函数及实例运用
- 转帖:一份不错的游戏程序书单(比较全面,但都是英文的。。)
- android 编程w3c,w3cschool手机版app下载-w3cschool-编程学院 安卓版v3.4.73-PC6安卓网
- java 解析josn数组
- android怎样连接指定wifi,手机连接指定WiFi的实现
- 华为荣耀3c手机语言设置在哪个文件夹,(科普)详解Android系统SD卡各类文件夹名称...
- 计算机面试专业英语词汇,英语面试中常用高频词汇
- 关于计算机的小故事英语作文,简单的英语小故事精选【六篇】
- ROS小车实践记录(一)
热门文章
- IOS开发之sqlite封装
- SQLBackupAndFTP The server principal NT AUTHORITY\SYSTEM is not able to access the database xxxx
- 问题 “cell 出栈 selectBox 已选的图标,被释放掉,再次进入屏幕时,没有了已选图标 ” 解决方案...
- MinGW下静态编译、链接Qt 5.0
- Ice笔记--C++线程与并发(二)
- select into from 与 insert into select 区别鉴赏
- python多线程信息提示
- 易语言逐条读access数据_易语言对ACCESS数据库基础(适合新手)
- sql server 2008 r2 没有维护计划_坚果R2发布,骁龙865+1亿像素+90Hz,4499元起
- google gperf tool【cpu】