首页 > 数据库 >只讲干货!!数据库的裤腰带!!今天拿下:MySQL中的约束!!

只讲干货!!数据库的裤腰带!!今天拿下:MySQL中的约束!!

时间:2024-07-30 09:24:23浏览次数:14  
标签:删除 约束 裤腰带 干货 emp MySQL id table 主键

MySQL中的约束

约束概述

        数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性

主键约束(Primary Key) PK

        主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。         主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。

外键约束(Foreign Key) FK

        外键约束经常和主键约束一起使用,用来确保数据的一致性。

唯一性约束(Unique)

        唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。

非空约束(Not Null)

        非空约束用来约束表中的字段不能为空

检查约束(Check)

        检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前MySQL 数据库不支持检查约束。

添加主键约束(Primary Key)

        单一主键

        使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。

        联合主键

        使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。

修改表添加主键约束

        使用DDL语句添加主键约束

        ALTER TABLE 表名 ADD PRIMARY KEY(列名)

示例:         将 emp 表中的 employee_id 修改为主键。         alter table emp add primary key ( employee_id ) ;

主键自增长

        MySQL 中的自动增长类型要求:         一个表中只能有一个列为自动增长。         自动增长的列的类型必须是整数类型。         自动增长只能添加到具备主键约束与唯一性约束的列上。         删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束

        alter table 表名 modify 主键 类型 auto_increment;

示例:         将 emp 表中的 employee_id 主键修改为自增。         alter table emp modify employee_id int auto_increment ;

        使用Navicat添加主键约束

删除主键

        使用DDL语句删除主键

        ALTER TABLE 表名 DROP PRIMARY KEY;

注意:         删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除主键。
示例:         ALTER TABLE 表名 DROP PRIMARY KEY ; 删除 emp 表中的 employee_id 主键约束。 去掉自动增长:         alter table emp modify employee_id int;

删除主键:

      

          alter table emp drop primary key;

使用Navicat删除主键

添加外键约束(Foreign Key)

        修改表添加外键约束

                使用DDL语句添加外键约束
        ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY ( 列 名 ) REFERENCES 参照的表名 ( 参照的列名 ) ;
示例一:         创建 departments 表包含 department_id 、 department_name , location_id 。
        create table departments ( department_id int,department_namevarchar ( 30 ) ,location_id int ) ;
示例二:         修改departments 表,向 department_id 列添加主键约束与自动递增。
        alter table departments add primary key ( department_id ) ;         alter table departments modify department_id int auto_increment ;
                使用Navicat添加外键约束

删除外键约束

        使用DDL语句删除外键约束

        ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

示例:         删除 dept_id 的外键约束         alter table emp drop foreign key emp_fk;

        使用Navicat删除外键约束

添加唯一性约束(Unique)

        修改表添加唯一性约束

                使用DDL语句加唯一性约束

        ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);

示例:         向 emp 表中的 name 添加唯一约束。         alter table emp add constraint emp_uk unique ( name ) ;
                使用Navicat添加唯一性约束

删除唯一性约束

        使用DDL语句删除唯一性约束。

        ALTER TABLE 表名 DROP KEY 约束名

示例:         删除 name 的唯一约束。

        alter table emp drop key emp_uk;

        Navicat删除唯一性约束

非空约束(Not Null)

        修改表添加非空约束

                        用DDL语句添加非空约束

        ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;

示例:         向 emp 表中的 salary 添加非空约束。

        alter table emp modify salary float(8,2) not NULL;

                        使用Navicat添加非空约束

删除非空约束

        用DDL语句删除非空约束

        ALTER TABLE 表名 MODIFY 列名 类型 NULL ;
示例:         删除emp 表中 salary 的非空约束。         alter table emp modify salary float ( 8 , 2 ) NULL ;

        使用Navicat删除非空约束

创建表时添加约束

示例:                  创建 depts 表包含 department_id 该列为主键且自动增长, department_name 列不 允许重复,location_id 列不允含有空值。
        create table depts ( department_id int primary key auto_increment ,department_name varchar ( 30 ) unique ,location_id int not null ) ;

只讲干货

#有什么错误的地方大家多多担待,欢迎大家留下意见共同努力。


#需要什么技术的内容大家也可以积极留言。


#有升本的伙伴也可留言,后序也可更新升本内容C 和数据结构。


#有需要的伙伴或有什么问题直接联留下wx或联系邮箱2821835676qq.com

标签:删除,约束,裤腰带,干货,emp,MySQL,id,table,主键
From: https://blog.csdn.net/2201_75777992/article/details/140726105

相关文章

  • mysql中substring_index类似split分组功能
     这条MySQL语句中使用了substring_index函数来处理training_pictures列的数据。下面是该函数的具体用法:substring_index(str,delim,count):这个函数会返回字符串str中第count个出现的分隔符delim之前的所有字符,或者之后的所有字符(取决于count的正负)。具体到你提供的查询:s......
  • python三天速成记(看完你就会)day3 满满干货~
    续上文啦~EXCEL表的操作上一篇文章讲了怎么读取和操作txt和csv文档,但其实我们生活中还有一个常用的文本格式那就是excel文件,特别是在对大量数据进行处理的时候。excel文件的用处和广泛。其实在python中有很多库可以处理excel文件,但是本文主要介绍使用最实用最广泛的库pan......
  • mysql的主从复制和读写分离
    目录主从复制主从复制的模式1.异步模式2.全同步模式3.半同步模式主从复制的延迟主从复制的延迟的原因解决方案双一设置性能化设置主从复制如何实现安装步骤读写分离实验步骤面试题主从复制主从复制的模式1.异步模式mysql的默认模式:主库在更新完事务之后会......
  • mysql的MHA以及故障模拟
    目录MHA概念MHA的组件MHA的特点实验:搭建完成MHA的架构实验:主备切换实验结果实验:故障切换实验:故障恢复MHA概念MHA:高可用模式下的故障切换,基于主从复制。它解决的是单点故障和主从复制不能切换的问题。它至少需要3台。故障切换过程0-30秒。它能根据VIP地址所在的主机......
  • MySQL 性能调优
    文章目录一.MySQL调优金字塔1.架构调优2.MySQL调优3.硬件和OS调优4.小结二.查询性能调优三.慢查询1.概念2.优化数据访问3.请求了不需要数据,怎么做4.是否在扫描额外的记录5.慢查询相关配置&日志位置6.小结四.查询优化器五.实现调优手段一.MySQL调......
  • Windows11安装MySQL8.4.2版本详细过程记录
    下载地址:https://dev.mysql.com/downloads/mysql/8.0.html我选择下载zip版本:点击下载需要登录:于是我登录:接着点下载:被迅雷拦截了,直接使用迅雷下载:下载好了:复制到C盘的dev目录:安装解压:这个看上去需要一些基础命令才能操作:于是我重新下载了这个msi版本......
  • MySQL数据库基础操作与概念详解(三)
    DML和DQL语句1.新增–INSERTINTO表名(字段名,字段名,…字段名)values/value(值,值,…值)–日期使用字符串的形式进行书写日期格式(yyyy-MM-ddHH-dd)1.全字段的输入(1)方式一INSERTINTOstudent(sid,sname,birthday,ssex,classid)VALUES(9,‘张三’,‘2002-9-23’,‘......
  • MySQL数据库基础操作与概念详解(二)
    二、数据库的操作1.--表结构修改–ALTERTABLE表名关键词数据;–ALTERTABLE旧表名renameas新表名;修改表名例:ALTERTABLEstudentrenameasstudents;SHOWTABLES;2.–添加字段ALTERTABLE表名ADD新字段名类型属性;ALTERTABLEstudentsADDstu_......
  • mysql授权
    mysql连接的两种方式mysql服务端10.0.0.51:3306mysql-uroot-p密码-h该账户允许登录的网段-P实例端口第一种基于ip:port的网络链接形式,入口一,链接参数,-hlocahost-P3306端口,窗口提供服务的入口windows机器,去链接mysql服务端......
  • Python操作MySQL数据库的5种方式
    不管你是做数据分析,还是网络爬虫,Web开发、亦或是机器学习,你都离不开要和数据库打交道,而MySQL又是最流行的一种数据库,这篇文章介绍Python操作MySQL的5种方式,你可以在实际开发过程中根据实际情况合理选择。1、MySQLdbMySQLdb又叫MySQL-python,是Python连接MySQL最流行......