当前位置: 首页 > 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.dtcms.com/a/364403.html

相关文章:

  • Qt使用Maintenance添加、卸载组件(未完)
  • MySQL 中的窗口函数详解:从入门到实战
  • Django 命令大全:从入门到精通,开发者必备指南
  • 【QT随笔】事件过滤器(installEventFilter 和 eventFilter 的组合)之生命周期管理详解
  • 微信小程序wx.getLocation结合腾讯地图逆解析获取位置详细教程,定位授权完整流程
  • 【Qt】国际化(中英文翻译)——Qt语言家(Linguist)和QTranslator类的简单使用(内含完整源码)
  • el-tree 点击父节点无效,只能选中子节点
  • 存算一体:重构AI计算的革命性技术(3)
  • 2025 大数据时代值得考的证书排名前八​
  • 电子病历空缺句的语言学特征描述与自动分类探析(以GPT-5为例)(上)
  • 分布式AI算力系统番外篇-----超体的现实《星核》
  • 2025版基于springboot的电影购票管理系统
  • Linux_网络基础
  • Uniapp中进行微信小程序头像和昵称的更改
  • Jenkins 可观测最佳实践
  • Flutter Android真机器调式,虚拟机调试以及在Vscode中开发Flutter应用
  • 【Linux操作系统】简学深悟启示录:进程控制
  • unity中的交互控制脚本
  • 如何选择适合企业的海外智能客服系统:6 大核心维度 + 实战选型指南
  • 【STL源码剖析】从源码看 deque :拆解双端队列的底层实现与核心逻辑
  • 用友T3、T6/U8批量作废凭证
  • 从数据生成到不确定性估计:用 LSTM + 贝叶斯优化实现时间序列多步预测
  • 基于SpringBoot的旅游管理系统
  • 【大前端】React 使用 Redux 实现组件通信的 Demo 示例
  • React实现点击按钮复制操作【navigator.clipboard与document.execCommand】
  • 基于单片机PWM信号发生器系统Proteus仿真(含全部资料)
  • 平衡车 - 电机调速
  • 基于单片机车内换气温度检测空气质量检测系统Proteus仿真(含全部资料)
  • 单片机点灯
  • Linux 网络编程中核心函数`recv`。