【MySQL】 MySQL的增删改查(进阶)--壹

这篇具有很好参考价值的文章主要介绍了【MySQL】 MySQL的增删改查(进阶)--壹。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本节目标:

  • 数据库约束
  • 表的关系

🛫数据库约束

🌴约束类型

  • NOT NULL - 指示某列不能存储 NULL 值。

  • UNIQUE - 保证某列的每行必须有唯一的值。

  • DEFAULT - 规定没有给列赋值时的默认值。

  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

  • CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句

🎋NOT NULL约束

创建表时,可以指定某列不为空

比如我们先创建一个student表,我们对里面的id列进行约束为不能为null;

创建如下:

DROP TABLE IF EXISTS student;
CREATE TABLE student (
	id INT NOT NULL,
	sn INT,
	name VARCHAR(20),
	qq_mail VARCHAR(20)
);

查看表结构如下:
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
我们可以看到id行列是显示不可为null的

接下来我们插入数据试一下
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
结果也是意料之中,插入null数据时就直接报错了

🎍UNIQUE:唯一约束

指定sn列为唯一的、不重复的

这里我们重新设置一下表结构,对sn进行约束为唯一约束

DROP TABLE IF EXISTS student;
CREATE TABLE student (
	id INT NOT NULL,
	sn INT UNIQUE,
	name VARCHAR(20),
	qq_mail VARCHAR(20)
);

我们对表结构进行查询可以看到,sn列发生了明显变化
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
接下来我们依旧插入数据进行测试
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
发现如果sn相同就会进行报错

🌳DEFAULT:默认值约束

指定插入数据时,若列为空,则为默认值

我们重新设置一下student表,对name进行默认值约束,若为null,则为默认值:遇事问春风乄

设置如下:

-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
	id INT NOT NULL,
	sn INT UNIQUE,
	name VARCHAR(20) DEFAULT '遇事问春风乄',
	qq_mail VARCHAR(20)
);

我们查看表结构后发现
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
Default列的name行不再为null,而为我们设置的默认值

我们来进行测试一下,插入一个name为null的数据
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
我们看到查询后name为默认值

注意事项:只适用于指定列插入数据,且该列不是受约束的列

🎄PRIMARY KEY:主键约束

指定列为主键

主键 是关系表中记录的唯一标识

使用主键应注意以下几点:

  • 每个表只能定义一个主键。

  • 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。

  • 一个字段名只能在联合主键字段表中出现一次。

  • 联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。这是最小化原则。

这里我创建以下student表

-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
	id INT PRIMARY KEY,
	sn INT UNIQUE,
	name VARCHAR(20) DEFAULT '遇事问春风乄',
	qq_mail VARCHAR(20)
);

表结构如下:
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
我们发现上述表格可以理解为:主键是 NOT NULL 和 UNIQUE 的结合

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

-- 主键是 NOT NULLUNIQUE 的结合,可以不用 NOT NULL
id INT PRIMARY KEY auto_increment

注意事项:是当前表里使用的最大值+1

🍀FOREIGN KEY:外键约束

外键用于关联其他表的主键或唯一键

语法如下:

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

MySQL 外键约束(FOREIGN KEY是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、桃子、李子、西瓜等 4 种水果,那么,你来到水果摊要买水果就只能选择苹果、桃子、李子和西瓜,其它的水果都是不能购买的。

主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

定义外键时,需要遵守下列规则:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。

  • 必须为主表定义主键。

  • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

  • 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

  • 外键中列的数目必须和主表的主键中列的数目相同。

  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

接下来我们设计一个案例如下:

  • 创建班级表classes,id为主键
DROP TABLE IF EXISTS classes;
CREATE TABLE classes (
	id INT PRIMARY KEY auto_increment,
	name VARCHAR(20),
	desc1 VARCHAR(100)
);
  • 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id

表结构如下:
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束

使用注意事项放在上面了,这里博主偷个懒,就不演示了;

🌲CHECK约束

CHECK约束添加规则

  1. CHECK 约束用于限制列中的值的范围。

  2. Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。

  3. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

  4. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

使用如下:

drop table if exists test_user;
create table test_user (
	id int,
	name varchar(20),
	sex varchar(1),
	check (sex ='男' or sex='女')
);

表结构如下:
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
表结构没有什么变化,我们再来看看添加数据吧

添加数据如下:
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
查询如下:
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
当我们输入其他值时
【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束
就会爆出错误!

🛬表的设计

大概可以分为以下三种

🚩一对一

【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束

🚩一对多

【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束

🚩多对多

【MySQL】 MySQL的增删改查(进阶)--壹,MySQL,mysql,android,数据库,约束

⭕总结

关于《【MySQL】 MySQL的增删改查(进阶)–壹》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!文章来源地址https://www.toymoban.com/news/detail-723543.html

到了这里,关于【MySQL】 MySQL的增删改查(进阶)--壹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【MySQL】数据库的增删改查、备份、还原等基本操作

    大写的表示 [] 是可选项 CHARACTER SET: 指定数据库采用的字符集 COLLATE: 指定数据库字符集的校验规则 创建数据库的时候,有两个编码集: 1.数据库编码集——数据库未来存储数据 2.数据库校验集——支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采

    2024年02月08日
    浏览(55)
  • MySql学习2:SQL分类、数据库操作、表操作、数据的增删改查

    SQL分类: DDL:数据定义语言,用来定义数据库对象(数据库、表、字段) DML:数据操作语言,用来对数据库表中的数据进行增删改 DQL:数据库查询语言,用来查询数据库表中的记录 DCL:数据控制语言,用来创建数据库用户、控制数据库的访问权限 查询所有数据库 查询当前

    2024年02月11日
    浏览(42)
  • Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

    数据库操作 MySQL数据库+pymysql Django开发操作数据库更简单,内部提供了ORM框架。 安装第三方模块 ORM可以做的事: 1、创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】 2、操作表中的数据(不用写SQL语句)。 1、自己创建数据库 1)启动MySQL服务 2)自带

    2024年02月14日
    浏览(43)
  • 【Mysql】数据库第四讲(表的增删改查操作 超全面 附实操案例)

    语法: 案例: 创建一个学生信息表 单行 多行 语法 案例 表达式不包含字段 表达式包含字段 表达式包含多个字段 比较运算符: 逻辑运算符: AND:多个条件必须都为 TRUE(1),结果才是 TRUE(1); OR:任意一个条件为 TRUE(1), 结果为 TRUE(1) NOT:条件为 TRUE(1),结果为 FALSE(0) 案例1 英语不

    2024年02月07日
    浏览(45)
  • 【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

         CURD是一个数据库技术中的缩写词,它代表Create(创建),Retrieve(读取),Update(更新),Delete(删除)操作。 这四个基本操作是数据库管理的基础,用于处理数据的基本原子操作。      在MySQL中,Create操作是十分重要的,它帮助用于创建数据库对象,如数据

    2024年03月18日
    浏览(45)
  • node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查

    大家好,我是yma16,本文分享关于 node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查。 技术选型 前端:vite+vue3+antd 后端:node koa 数据库:mysql koa是一个现代的Node.js框架,可以用来构建Web应用程序。 Vue.js 是一款用于构建用户界面的开源JavaScript框架。Vue.js 3 是 Vu

    2024年02月20日
    浏览(28)
  • Android使用SQLite数据库实现基本的增删改查

    目录 一、创建activity_main和MainActivity界面 二、实现查询/删除功能创建activity_delete和DeleteActivity 三、实现添加功能创建activity_add和AddActivity  四、实现更新功能创建activity_update和UpdateActivity 五、创建user_data类、userInfo类和增加权限 总结 activity_main如图:  MainActivity如下 layout界面

    2024年02月08日
    浏览(38)
  • Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

    前言:如果android studio安装和第一次跑helloworld有什么问题可以参考:(34条消息) Android Studio踩的那些坑(gradle build、unable to find tasks to···等等)_TidesWise的博客-CSDN博客 目录 准备工作 查询学生数目demo:  增删改查完整案例 1、在Android Studio中新建项目My Application; 2、在Androi

    2024年02月10日
    浏览(29)
  • MySQL--MySQL表的增删改查(进阶)

    check 聚合查找 count sum average max min 我们这里先构造出多张表 查询lisi同学的成绩 来自student和来自score c 增加名字这一条件 查询所有同学的总成绩以及个人信息 来自score和来自student 查询所有同学的各科成绩以及个人信息 来自student,course和score 简化后的结果如下: 除了上述的

    2024年02月09日
    浏览(31)
  • 【MySQL】 MySQL的增删改查(进阶)--壹

    本节目标: 数据库约束 表的关系 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个

    2024年02月07日
    浏览(22)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包