一.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';

引用:https://blog.csdn.net/a909301740/article/details/62887992

MySQL中的约束,添加约束,删除约束,以及其他修饰的更多相关文章

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

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

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

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

  3. MySQL中添加、删除约束

    MySQL中6种常见的约束:主键约束(primary key).外键约束(foreign key).非空约束(not null).唯一性约束(unique).默认值约束(defualt).自增约束(a ...

  4. LINUX中查看、添加、删除PATH以及永久添加PATH

    1.查看PATH变量 echo $PATH 会出现: 路径1:路径2:路径3 2.添加PATH变量 export PATH=$PATH:新添加的路径 用此方法添加的PATH,在关闭或者重启LINUX后 ...

  5. viewpager中彻底性动态添加、删除Fragment

    为了解决彻底删除fragment,我们要做的是:1.将FragmentPagerAdapter 替换成FragmentStatePagerAdapter,因为前者只要加载过,fragment中的视图就 ...

  6. 为SQL Server表中的列添加/修改/删除注释属性(sp_addextendedproperty、sp_updateextendedproperty、sp_dropextendedproperty)

    本篇基本完全参考:sql--sp_addextendedproperty和sp_updateextendedproperty (Transact-SQL) 三个存储过程用法一样,以sp_addexte ...

  7. oracle表中字段的添加、删除

    在oracle数据库中为一张表添加一个字段: alter table tableName add ClIENT_OS varchar2(20) default '0' not null ; 在orac ...

  8. jquery中找到元素在数组中位置,添加或者删除元素的新方法

    一:查找元素在数组中的位置 jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值.如果数组中不存在该值,则返回 -1. jQuery.inArray( value, array ...

  9. Dom4j向XML中指定位置添加、删除、修改节点——(五)

    需求: 在第一本书作者后面增加描述 <描述>好书</描述>  思路:获取书下面下的所有节点(一个list集合),在list集合指定位置添加一个元素(list.add(index ...

  10. js中cookie的添加,删除,查询总结

    function addCookie(objName,objValue,objHours){//添加cookie var str = objName + "=" + escape( ...

随机推荐

  1. Python+selenium自动循环发邮件

    Python源代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...

  2. docker下安装nginx,启动ngixn,修改nginx配置等--超详细

    1.获取nginx版本 docker中nginx版本信息:https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_up ...

  3. bi工具是什么,如何选择?

    ​商业智能使用的一套方法和技术根据解决方案的目的而广泛多样化.有些工具专注于数据准备方面,可能包括ETL(提取,转换,加载)层,以更好地组织和利用数据.有些工具专注于更广泛的企业使用,可能专注于数据混 ...

  4. Vue 源码解读(9)—— 编译器 之 优化

    前言 上一篇文章 Vue 源码解读(8)-- 编译器 之 解析 详细详解了编译器的第一部分,如何将 html 模版字符串编译成 AST.今天带来编译器的第二部分,优化 AST,也是大家常说的静态标记. ...

  5. 在shell中变量的赋值有五种方法!

    转至:https://blog.csdn.net/weibo1230123/article/details/82085226 在shell中变量的赋值有五种 :使用 read 命令,直接赋值,使用命令 ...

  6. Qt:Qt资源系统

    学习自 Qt 资源系统(Qt Resource System) - 知乎 1.什么是Qt 资源系统 Qt资源系统是一种将图片.数据存储于二进制文件中的一套系统.这些图片.数据会被我们的程序使用,它们称 ...

  7. 无法cin一个string 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)

    头文件#include<string>不能写成#include<string.h>

  8. 洛谷训练P1008(循环+暴力)

    1 #include<stdio.h> 2 #include<string.h> 3 int a[10]; 4 int main(){ 5 for (int x=123;x&l ...

  9. (转载)C 中static 和inline

    https://www.cnblogs.com/lxlx1798/articles/9996521.html

  10. JAVA——类与对象

    目录 类与对象 一.类 二.对象 2.1对象的内存布局形式 三.类与对象 3.1如何创建 3.2如何访问属性 3.2类与对象的分配机制 3.2.1Java内存的结构分析 注意事项和细节 类与对象 为什 ...