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:约束?添加约束?删除约束?以及一些其他修饰?相关推荐

  1. ylb:使用sql语句实现添加、删除约束

    ylbtech-SQL Server:SQL Server-使用sql语句实现添加.删除约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. -- ...

  2. MySQL约束——添加主键约束(联合主键)、删除主键约束

    目录 主键约束 添加单列主键 添加多列主键(联合主键) 修改表结构添加主键 删除主键约束 文末资源推荐 每文一语 概念: 约束英文:constraint 约束实际上就是表中数据的限制条件 作用: 表在 ...

  3. 使用SQL语句添加和删除约束

    --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值. ...

  4. mysql之添加和删除字段

    内容描述:分别在表的最后一列.第一列和指定列后添加新的字段,并删除表中的指定字段. 相关知识 为了完成本关任务,你需要掌握: 1.如何在指定位置添加新的字段, 2.如何删除指定的字段. 添加字段 因为 ...

  5. MySql中添加用户/删除用户

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...

  6. mysql语句添加、删除索引(转)

    转自:mysql语句添加索引 参考: mysql索引学习----2----创建索引.修改索引.删除索引的命令语句 mysql语句添加索引 创建或添加索引可以使用如下语句. 一.使用ALTER TABL ...

  7. mysql 中添加和删除字段

    在设计数据库的时候,字段的添加和删除操作要经常使用,在这里记录一下. 添加字段: alter table 表名 add 新字段名 数据类型 [约束条件 ] [first]| after] 已存在的字段 ...

  8. python对MySQL进行添加修改删除以及字符串的操作

    # coding=UTF-8import MySQLdb def dbDperate(sql,param):"定义数据库的添加,修改和删除操作"#获取数据库的连接对象conn=My ...

  9. ssm框架+MySQL批量添加和删除

    1.批量添加 jsp <form id="form1" action="${pageContext.request.contextPath}/order/addOr ...

  10. mysql怎么添加约束成绩_mysql怎么添加约束?

    在MYSQL数据库中,建表时就可以进行对表的各项进行一些操作,例如添加主键约束或者非空约束:也可以在建表后进行添加约束和删除约束的操作.下面本篇文章就来带大家具体了解一下,希望对大家有所帮助. 什么是 ...

最新文章

  1. 错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制...
  2. 深度学习上的又一重点发现——利用MSCNN实现人群密度监测
  3. Grafana文档(升级Grafana)
  4. 学python数学要好吗_学习Python数学英语基础重要吗?
  5. android双击返回键退出程序的实现
  6. springboot jar服务器运行后无法请求_Spring boot、微服务、OAuth、OpenID的爱恨情仇!...
  7. boost::rational用法的测试程序
  8. 详解Python的内置函数eval()
  9. Spring boot Scheduled 配置
  10. 【iOS系列】-xib封装使用
  11. UVA - 207 PGA Tour Prize Money
  12. 几个常用的Oracle函数及实例运用
  13. 转帖:一份不错的游戏程序书单(比较全面,但都是英文的。。)
  14. android 编程w3c,w3cschool手机版app下载-w3cschool-编程学院 安卓版v3.4.73-PC6安卓网
  15. java 解析josn数组
  16. android怎样连接指定wifi,手机连接指定WiFi的实现
  17. 华为荣耀3c手机语言设置在哪个文件夹,(科普)详解Android系统SD卡各类文件夹名称...
  18. 计算机面试专业英语词汇,英语面试中常用高频词汇
  19. 关于计算机的小故事英语作文,简单的英语小故事精选【六篇】
  20. ROS小车实践记录(一)

热门文章

  1. IOS开发之sqlite封装
  2. SQLBackupAndFTP The server principal NT AUTHORITY\SYSTEM is not able to access the database xxxx
  3. 问题 “cell 出栈 selectBox 已选的图标,被释放掉,再次进入屏幕时,没有了已选图标 ” 解决方案...
  4. MinGW下静态编译、链接Qt 5.0
  5. Ice笔记--C++线程与并发(二)
  6. select into from 与 insert into select 区别鉴赏
  7. python多线程信息提示
  8. 易语言逐条读access数据_易语言对ACCESS数据库基础(适合新手)
  9. sql server 2008 r2 没有维护计划_坚果R2发布,骁龙865+1亿像素+90Hz,4499元起
  10. google gperf tool【cpu】