当前位置: 首页 > news >正文

MySQL--CRUD

CRUD:即增加(create),查询(retrieve),更新(update),删除(delete)

注释:-- 加空格 加解释或 # 加解释

一.新增

作用:

在表中插入一条数据

语法:

insert [into] 表名 [(列名][,列名.....)] values (值,[值]);

使用:

二.查询

语法:

使用:

别名:

去重:distinct

排序:ORDER BY

注意:

当数据有NULL时且进行排序时,NULL比任意值都小

使用表达式排序

使用多个字段进行排序,优先级为书写顺序

条件查询:WHERE

其中会涉及到运算符的知识,大部分与Java中的运算符相同,但也增加了一些新的

新增比较运算符:

<=> :  代表等于,与普通的等于区别在于NULL安全即当为NULL=NULL时返回的是NULL,当为NULL<=>NULL时为TRUE(1)

<> : 代表不等于,和普通的没区别

between a0 and a1 : 范围匹配,代表 [ a0 , a1] ,符合区间返回TRUE(1)

IN(option) : 代表操作数是否在在option这个集合中

IS NULL : 看是否为NULL

IS NOT NULL : 看是否不为NULL

LIKE : 模糊匹配,% 表示任意多个(包括 0 个)任意字符; 表示任意一个字符

新增逻辑运算符:

注意:

分页查询:LIMIT

语法:

1. SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;

代表从0条数据开始,往后面读取n条数据

2. SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;

3. SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

代表从s条数据开始,往后面读取n条数据

补充:插入集合

三.更新

语法:

案例:

四.删除

语法:

DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

案例:

注意:

在更新数据或删除数据时得使用条件过滤,不然会更新或删除整个表

五.数据库约束

1.NOT NULL :NULL约束

指示某列不能插入空值

2.unique :唯一值约束

代表某列的数据在表中不能重复

3.default :默认约束

设置默认值

4.primary key :主键约束(重点)

NOT NULL和 unique 的结合体

注意:

一个表中不能有多个主键,因为系统不知道以哪个列为标准作为唯一值约束,但可以设置复合主键,只有符合主键的所有列的值都相等才能判定为相等

5.foreign:外键约束

语法:

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

作用:

可以保证数据的完整性和关系的正确性,因为有了主外键关系,子表的外键必须与主表的主键有联系,插入数据时如果没有联系就会报错

注意:

1. 删除表的时候,如果子表与主表已建立联系,这不能删除主表相关的值,得删除子表与之有联系的值才能删除主表的值

2. 在主外键联系的表中由于约束如果插入数据失败,自增的列还会增加1

六.表的设计

范式:数据库的范式即规则,在设计关系型数据库时,遵顼不同的规范要求,设计出合理的关系型数据库,主要学三大范式

1.第一范式1NF

定义:数据库的列不能再分,即不能是集合等非原子数据不满足第一范式就不是关系型数据库

特点:表里的字段不可再分,不能被数据类型关键字修饰

反例:如学校不能被可以分为学校名

2.第二范式2NF

定义:在第一范式的基础下,不存在非主键字段任意非候选键主键或外键)的部分依赖

反例与正例及其缺点:

特点:当主键只有一列时,该表天然满足第二范式

3.第三范式

定义:在第二范式的基础上,消除了传递依赖

反例:

七.查询进阶

1.聚合查询

聚合函数

GROUP BY子句

语法:

HAVING关键字

GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用 HAVING

2.联合查询

联合查询即是联合多个表进行查询

原因:在设计表时为了消除部分依赖和传递性依赖,导致一条SQL语句不能查出完整的信息,得使用多条SQL语句

2.1内连接

语法:

联合查询的使用过程
1.取多张表的笛卡尔积(多张表的排列组合)

2.根据连接条件过滤数据

3.通过指定列精简表

练习:

2.2 外连接

外连接分为左外连接右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完 全显示我们就说是右外连接。

语法:

使用:

练习:

2.3 自连接

自连接是指在同一张表连接自身进行查询。

原因:在比较数据的大小时,只能一行数据列与列的比较,不能行与行的比较,这时通过自连接

将每俩行的数据放在一行之中,间接比较行与行的大小

练习:

2.4 子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询,分为单行子查询和多行子查询,运用了 [NO] IN 和  [NO] EXIST 俩关键字

[NO] IN 关键字

[NO] EXIST

八.临时表

这些查询出来的表都是临时表可以和其他表联合查询或查询临时表中的类容

九.合并查询

在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用UNION 和UNION ALL时,前后查询的结果集中,字段需要一致。但MySQL不会处理,得人为处理

union:合并表并自动去重

union all:合并表但不去重

使用好处:在查询单个表时可以or和 union ALL 可以达到相同的效果,但合并多个表时就不能用or只能用union

十.SQL的执行顺序

十一.视图

定义:它是基于⼀个或多个基本表或其他视图的查询结果集(重点),是一个虚拟表,但可以和普通表一样持续存在,除非drop 显示删除

语法:

使用:

不使用使用指定列:

使用指定列:

更新数据

无论修改那个数据,俩个表会相互影响

http://www.xdnf.cn/news/1439515.html

相关文章:

  • Oracle 10g 安装教程(详解,从exe安装到数据库配置,附安装包)​
  • 食物分类案例优化改进 (数据增强,最优模型保存和使用)
  • oracle 从一张表更新到另外一张表的方法(MERGE)
  • IO进程线程;进程,发送信号;进程,消息队列通信;0903
  • 如何利用SMS、RDS把服务从阿里云迁移到华为云
  • FastGPT社区版大语言模型知识库、Agent开源项目推荐
  • 矿山 6KV 不接地系统中的绝缘监测解决方案
  • 简述 Java 的异常体系结构。Error 和 Exception 有什么区别?
  • 小米fastboot不能被电脑识别但手机正常使用模式时能被电脑识别
  • 【工具变量】“国家级大数据综合试验区”试点城市DID(2000-2024年)
  • FPGA ad9248驱动
  • Windows/Linux下vscode+vcpkg管理C++包链接方法
  • CD75.【C++ Dev】异常
  • 从发现到恢复,看瑞数信息如何构建“抗毁重构”实战路径
  • 网站建设需要多少费用?网站建设的步骤和流程?
  • 01-Redis 发展简史与核心定位解析:从诞生到三大产品矩阵
  • 涉私数据安全与可控匿名化利用机制研究(上)
  • Zotero白嫖腾讯云翻译
  • AI优化SEO关键词策略指南
  • 计算机网络---CA证书体系(Certificate Authority)
  • 机器学习从入门到精通 - 逻辑回归为什么是分类之王?深入决策边界与概率校准
  • 亚马逊ASIN定位广告想爆单?先搞懂流量逻辑!多账号增效策略直接用
  • Java版本兼容性:JDK 21的SDK在JDK 1.8使用
  • 嵌入式学习 day63 LCD屏幕驱动、ADC驱动、HC-SR04、ds18b20
  • 什么是好的系统设计
  • LangGraph MCP智能体开发
  • 【JavaEE】(22) Spring 事务
  • 飞算JavaAI炫技赛:一天完成学生成绩综合统计分析系统开发(含源码)
  • 【Axure高保真原型】区间缩放柱状图
  • 数据结构从青铜到王者第二十话---Map和Set(3)