【MySQL约束】数据管理实用指南

这篇具有很好参考价值的文章主要介绍了【MySQL约束】数据管理实用指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、数据库约束的认识

数据库约束的概念:数据库的约束是关系型数据库的一个重要的功能,它提供了一种“校验数据”合法性的机制,能够保证数据的“完整性”、“准确性”和“正确性”

数据库的约束:

  • not null:不能存储 null 值

  • unique:保证某列的每行必须有唯一值

  • default:规定没有给列赋值时的默认值

  • primary key:主键,相当于 not null 和 unique 的结合,每条记录的身份标识

  • aoto_increment:自动添加主键值,也可以手动添加

  • foreign key:外键,多个表的关联关系,要求某个记录必须在另外一个表里存在

2、not null 约束

创建一个student表,表中有两列,分别是: id 类型为 int 约束为 not null,name 类型为varchar 最大存储 20 字符

-- 如果已有student表,请先删除,因为同一个库里面不能存在相同名的表
create table student(id int not null,name varchar(20));

id 的约束为not null,说明 id 列不能为空

desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

查看student表的结构也就可以发现 id 行 Null 列为 NO,也就说明 id 列不能为 NULL

3、unique 约束

创建一个student表,表中有两列,分别是: id 类型为 int 约束为 unique,name 类型为varchar 最大存储 20 字符

-- 如果已有student表,请先删除,因为同一个库里面不能存在相同名的表
create table student(id int unique,name varchar(20));

id 的约束为 unique ,必须是唯一的、不能重复

desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  | UNI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

查看student表的结构也就可以发现 id 行 key 列的为 UNI,也就说明 id 必须唯一不能重复

4、default 约束

创建一个student表,表中有两列,分别是: id 类型为 int ,name 类型为varchar 最大存储 20 字符约束为 default

-- 如果已有student表,请先删除,因为同一个库里面不能存在相同名的表
create table student(id int,name varchar(20) default 'unkown');

name 的约束为 default ,当不给 name 添加内容的时候,默认为 unkown

desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | unkown  |       |
+-------+-------------+------+-----+---------+-------+

查看student表的结构也就可以发现 name 行 Default 列的为 unkown,也就说明当不给 name 添加内容的时候默认为 unkown

5、primary key 约束

创建一个student表,表中有两列,分别是: id 类型为 int 约束为 primary ,name 类型为varchar 最大存储 20 字符

-- 如果已有student表,请先删除,因为同一个库里面不能存在相同名的表
create table student(id int primary key,name varchar(20));

id 的约束为 primary key,说明id为主键,主键就相当于 not null 和 unique 的结合,不能为空、不能重复

desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

查看student 表的结构也就可以发现 id 行 Null 列为 NO,id 行 Key 列为 PRI,说明 id 不能为空、不能重复

当我们创建 student 表的时候,将 id 设置为 not null 和 unique 的时候,也就等于 primary key

-- 如果已有student表,请先删除,因为同一个库里面不能存在相同名的表
create table student(id int not null unique,name varchar(20));
desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

当把 id 的约束设置为 not null 和 unique 的时候,查看student 表结构的时候,发现跟约束为primary key的结构一样

6、auto_increment 约束

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大 值+1

create table student(id int primary key auto_increment,name varchar(20));
desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

当把 id 的约束设置为 primary key 和 auto_increment 的时候,不给 id 添加内容时默认是最大值+1

当我们光给这个表中的name列添加内容时

create table student(id int primary key auto_increment,name varchar(20));
select * from student;
+----+------+
| id | name |
+----+------+
|  1 | 张三 |
|  2 | 李四 |
+----+------+

id 列会默认添加值,且是最大值+1

7、foreign key 约束

外键用于关联其他表的主键和唯一值,让两个表之间产生约束,语法:

foreign key (字段名) references 主表(列)

先创建一个class班级表:

create table class(id int primary key auto_increment,className varchar(20));

class 表中有两个列,分别为:

  • id 列,类型为 int,约束为 primary key 和 auto increment

  • className 列,类型为 varchar 最多存储 20字符

先创建一个 student 学生表:

create table student(id int primary key auto_increment,
 classId int ,
name varchar(20),
foreign key (classId) references class (id));

student 表中有三个列,分别为:

  • id 列,类型为 int,约束为 primary key 和 auto increment

  • classId 列,类型为 int

  • name 列,类型为 varchar 最多存储 20字符

  • classId为外键与class表中的id 产生约束

学生表中的数据,要依赖班级表的数据,班级表的数据要对学生表产生约束力

此处起到约束作用的班级表,就叫做“父表”;被约束的这个表,就叫做“子表”

给class表添加一些内容:

insert into class (className) values('Java'),('C'),('python');

给student表添加一些内容:文章来源地址https://www.toymoban.com/news/detail-430961.html

insert into student (classId,name) values(1,'张三'),(1,'李四'),(2,'王五'),(3,'赵六');
【MySQL约束】数据管理实用指南

到了这里,关于【MySQL约束】数据管理实用指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql数据库管理

    ` 创建一个新库wujian并展示库 查看数据库信息 查看数据库中包含的表及表结构 展示表 常用的数据库类型 SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。 SQL语言分类: DDL:数据定义语言,用于创建数据库对象,如库、表、索引等 DML:数

    2024年02月02日
    浏览(42)
  • 【学生成绩管理】数据库示例数据(MySQL代码)

    1、创建表结构 2、添加示例数据 3、查看表中数据 1、创建表结构 2、添加示例数据 3、查看表中数据 1、创建表结构 2、添加示例数据 3、查看表中数据 1、创建表结构 2、添加示例数据 3、查看表中的数据如下

    2024年02月05日
    浏览(50)
  • 【Golang星辰图】数据管理利器:Go编程语言中的数据库和搜索引擎综合指南

    Go编程语言是一种强大、类型安全且高效的编程语言,它在处理数据库和搜索引擎方面有着广泛的应用。本篇文章将详细介绍几个Go编程语言中常用的数据库和全文搜索引擎,包括Go-bleve、Go-pgx、Go-leveldb/leveldb、Go-xorm、Go-mysql-driver和Go-bbolt/bbolt。对于每个工具,我们将介绍其功

    2024年03月26日
    浏览(72)
  • Mysql数据库表管理和用户管理与授权

    1)方式一:创建新表,导入数据  2)复制表(直接复制表不能保证原有的表结构)  创建方式与创建表完全一致,最大的区别是,临时表只在当前的数据库连接生效,当数据库连接断开或重新连接终端时,该临时表均失效,无法查看。 方式一:delete清空   方式二:truncat

    2024年02月09日
    浏览(49)
  • 更安全,更省心丨DolphinDB 数据库权限管理系统使用指南

    在数据库产品使用过程中,为保证数据不被窃取、不遭破坏,我们需要通过用户权限来限制用户对数据库、数据表、视图等功能的操作范围,以保证数据库安全性。为此,DolphinDB 提供了具备以下主要功能的权限管理系统: 提供用户和组角色,方便权限控制 提供19种权限控制

    2024年02月15日
    浏览(42)
  • MySQL数据库用户管理

    primary key主键约束:字段的值不能重复,不能为null,一个表只能有一个主键 unique key唯一性约束:字段的值不能重复,能为null,一个表可有多个唯一键 not null非空约束:字段的值不能为null default默认值约束: 字段的值如果没有设置则使用默认值自动填充 auto_increment自增约束:

    2024年02月08日
    浏览(57)
  • MySql数据库的初步安装与数据表结构数据管理

    目录 一、数据库的相关了解 1)数据库的概念  数据(Data) 表 数据库系统 2)数据库系统发展史 第一代数据库 第二代数据库 第三代数据库 当今主流数据库介绍 2)数据库的分类  关系数据库 非关系型数据库 非关系型数据库的优点 二、mysql的yum安装与源码编译安装   1)源

    2024年02月08日
    浏览(443)
  • 【MySQL】使用DBeaver数据库管理工具进行MySQL数据库连接

    一、数据库连接信息填写 1、服务器地址:填写服务器部署的地址,以及端口号 2、数据库:sys 3、用户名:root 4、密码:服务器上面设置的具体密码 以上信息填写错误的报错提示 :Access denied for user ‘XXX’@’%’ to database ‘10.42.67.22’ 二、数据库说明 1、数据库连接时选择的

    2024年02月09日
    浏览(91)
  • 数据库应用:数据库管理系统与安装MySQL数据库

    目录 一、理论 1.数据库管理系统 2.关系型数据库 3.数据库 4.MySQL数据库 5.MySQL部署 二、实验 1.yum安装MySQL 2.编译安装MySQL 3.配置MySQL数据库的Tab补全  三、问题 1.数据库登录报错 2.数据库密码复杂度报错 3.数据库连接报错 四、总结 (1)概念 数据库管理系统(Database Management

    2024年02月13日
    浏览(57)
  • k8s创建数据库mysql MySQL数据库之日志管理

     本文使用的是本机挂载数据,这样存在一个弊端没有pvc挂载好  重点来了: 这种共享宿主机存储的方法似乎可以解决Mysql数据库数据恢复的场景,我们似乎可以万事大吉了! But ,有的老铁会问:如果我得宿主机挂了怎么办?或者Pod没有在上一次节点上拉起,而是在新的节点

    2023年04月27日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包