MySQL常见约束条件「建议收藏」

MySQL常见约束条件「建议收藏」约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败!约束条件在创建表时可以使用,也可以修改表的时候添加约束条件1、约束条件分类:1)notnull:非空约束,保证字段的值不能为空s_nameVARCHAR(10)NOTNULL,#非空2)default:默认约束,保证字段总会有值,即使没有插入值,都会有默认值!…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败!
约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件

1、约束条件分类:
1)not null :非空约束,保证字段的值不能为空
     s_name VARCHAR(10) NOT NULL, #非空

2)default:默认约束,保证字段总会有值,即使没有插入值,都会有默认值!
     age INT DEFAULT 18, #默认约束

3)unique:唯一,保证唯一性但是可以为空,比如座位号
     s_seat INT UNIQUE,#唯一约束

4)check:检查性约束【MySQL不支持,语法不报错,但无效】
     s_sex CHAR(1) CHECK(s_sex=’男’ OR s_sex=’女’),#检查约束(Mysql无效)

5)primary key :主建约束,同时保证唯一性和非空
     id INT PRIMARY KEY,#主建约束(唯一性,非空)

6)foreign key:外键约束,用于限制两个表的关系,保证从表该字段的值来自于主表相关联的字段的值!
     teacher_id INT REFERENCES teacher(id)   #这是外键,写在列级,Mysql无效

注意
1. 列级约束
    上面6种约束都可以写,语法都支持,不报错,但外键约束写了mysql无效不起作用
2. 表级约束
    非空、默认不支持,其他都可以!

    语法:

      其他: 【constraint 约束名】 约束类型(字段名称) ,

      外键:  【constraint 约束名】 约束类型(字段名称) foreign key(字段名称) references 关联表名(其字段名),

DROP TABLE IF EXISTS students;
CREATE TABLE students(
id INT ,
s_name VARCHAR(10) not null,# 非空约束
s_sex CHAR(1) default '男',  # 默认约束
s_seat INT,
age INT ,
teacher_id INT , 

#上面是列级约束,下面有表级约束

CONSTRAINT pk PRIMARY KEY(id), #主建约束,pk是起的名,后面一样
CONSTRAINT uq UNIQUE(s_seat),  #唯一约束
CONSTRAINT ck CHECK(s_sex='男' OR s_sex='女'), #检查约束
CONSTRAINT fk_students_teacher FOREIGN KEY(teacher_id) REFERENCES teacher(id)  #外键约束
);

 

2、MySQL修改表时添加或删除约束

     即修改表字段的数据类型或约束

    外键删除约束: ALTER TABLE 表名 DROP CONSTRAINT 约束名称

1) 非空约束
alter table students modify column s_name varchar(20) not null; # 添加 
alter table students modify column s_name varchar(20) ;             # 删除 不写约束条件

2)默认约束
alter table students modify column age int default 18; #添加
alter table students modify column age;                      #删除

3)唯一键约束
alter table students modify column seat int unique; #添加
alter table students drop index seat;                       #删除
show index from students;                                  #查看唯一约束

4)主键约束
alter table students modify column id int primary key; #添加
alter table students drop primary key;                         #删除 约束名称

5)外键约束
alter table students add foreign key(major_id) references majors(id); #添加
alter table students drop foreign key fk_students_teacher;                #删除 约束名称

 

3、自增长列 auto_increment

id int primary key auto_increment,

一个表中有且只能有一个自增长列,自增长列一般和主键搭配

修改表的时候添加自增长列:
alter table t_indentity modify column id int primary key auto_increment;

删除自增长列:
alter table t_indentity modify column id int;

修改自增id的初始值:

ALTER TABLE 表名  AUTO_INCREMENT=6;

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182278.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • PathFileExists用法--使用#include <shlwapi.h>

    PathFileExists用法--使用#include <shlwapi.h>BOOLPathFileExists(LPCTSTRpszPath);Determinesifafileexists.—经检测,该函数可以检测文件或目录是否存在!RemarksThisfunctionteststhevalidityofthefileandpath.Itworksonlyonthelocal…

  • SQL Server 2005 安装图解教程(Windows)

    SQL Server 2005 安装图解教程(Windows)安装SQLServer2005详解

  • Mybatis 的常见面试题「建议收藏」

    Mybatis 的常见面试题「建议收藏」1、#{}和${}的区别是什么?#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。2、当实体类中的属性名和表中的字段名不一样,怎么办?第1种:通过在查询的sql语句中定

  • word2vec原理及实现

    word2vec原理及实现word2vec的两种计算方式CBOW模型原理图如下代码见github:word2vec_CBOW.pyskip-gram原理图如下:代码见github:word2vec_skip-gram运行结果随机抽取16个词,分别计算与这些词最接近的8个词…

  • dp3003打印机怎么清零_打印机接口叫什么

    dp3003打印机怎么清零_打印机接口叫什么有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由 同一个字符 组成的序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。示例 1:输入:s = “aaabbb”输出:2解释:首先打印 “aaa” 然后打印 “bbb”。示例 2:输入:s = “aba”输出:2解释:首先打印 “aaa” 然后在第二个位置打印 “b” 覆盖掉原来的字符 ‘a’。 提示:1 <= s.le

  • OpenCV 人脸识别LBPH算法分析

    OpenCV 人脸识别LBPH算法分析一、背景及理论基础人脸识别是指将一个需要识别的人脸和人脸库中的某个人脸对应起来(类似于指纹识别),目的是完成识别功能,该术语需要和人脸检测进行区分,人脸检测是在一张图片中把人脸定位出来,完成的是搜寻的功能。从OpenCV2.4开始,加入了新的类FaceRecognizer,该类用于人脸识别,使用它可以方便地进行相关识别实验。原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号