MySQL表的增删查改

CRUD:Create(创建)、Retrieve(读取)、Update(更新)、Delete(删除)

Create

查看约束

在插入时,如果表没有指定属性,那么就必须根据表的约束进行全列的插入

如果指定表的插入属性,就必须根据属性内容进行逐个插入。

由于主键和唯一键冲突导致插入失败进行更新

INSERT ...

ON DUPLICATE KEY UPDATE(注意)

column = value [, column = value] ...

replace

主键或唯一键没有冲突就直接插入,有冲突就先删除旧信息再进行插入。

Retrieve

select * from 表名

是全列查询,也可以指定列查询

SELECT column [AS] alias_name [...] FROM table_name;还可以为查询结果指定别名。

对结果进行去重

WHERE条件

|-----|-------------------------------|
| 运算符 | 说明 |
| AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
| OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
| NOT | 条件为 TRUE(1),结果为 FALSE(0) |

SELECT * FROM table_name WHERE column IN (value1, value2, ...);

案例

英语成绩不及格的

语文成绩在【80,90】之间

数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

姓孙的同学 及 孙某同学

语文成绩好于英语成绩的同学

总分在 200 分以下的同学

别名不能用于where的条件判定

语文成绩 > 80 并且不姓孙的同学

孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80

结果排序

注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

同学及数学成绩,按数学成绩升序显示

不标注默认是升序

查询同学及总分,由高到低

注意: ORDER BY 中可以使用别名,WHERE条件中不可以适用别名。

筛选分页结果

LIMIT

SELECT 字段 FROM 表名 LIMIT 条数 (只读取前N条)

SELECT 字段 FROM 表名 LIMIT 偏移量,条数

LIMIT m,n :跳过m条,往后取n条

Update

更新数据

UPDATE table_name SET column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]

案例

将孙悟空同学的数学成绩变更为 80 分

将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

Delete

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

截断表

TRUNCATE [TABLE] table_name

  1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;

  2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事 物,所以无法回滚

  3. 会重置 AUTO_INCREMENT 项

CREATE TABLE no_duplicate_table LIKE duplicate_table;

聚合函数

|----------------------------|-----------------|----|---|---|---|
| 函数 | 说明 | 示例 | | | |
| `COUNT(*)` | 统计行数(包含 NULL) | `SELECT COUNT(*) FROM users;` ||| |
| `COUNT(column)` | 统计某列非 NULL 的行数 | `SELECT COUNT(email) FROM users;` ||||
| `COUNT(DISTINCT column)` | 统计去重后的非 NULL 行数 | `SELECT COUNT(DISTINCT city) FROM users;` ||||
| `SUM(column)` | 求和(忽略 NULL) | `SELECT SUM(salary) FROM employees;` ||||
| `AVG(column)` | 平均值(忽略 NULL) | `SELECT AVG(score) FROM students;` ||||
| `MAX(column)` | 最大值 | `SELECT MAX(price) FROM products;` ||||
| `MIN(column)` | 最小值 | `SELECT MIN(age) FROM users;` ||| |

统计班级共有多少同学

count()可以添加许多属性加入括号中

统计数学成绩总分

统计平均总分

返回 > 200分以上的总分平均分

GROUP BY 是 SQL 中用于将数据按指定列分组,并对每组分别进行聚合计算的核心子句。

相关推荐
m0_702036531 小时前
如何在MongoDB中实现按时间跨度的分片路由_时间序列范围分片与冷热节点架构.txt
jvm·数据库·python
2401_884454151 小时前
golang如何使用Fiber高性能框架_golang Fiber框架入门教程
jvm·数据库·python
ㄟ留恋さ寂寞1 小时前
Golang怎么读取和修改图片EXIF信息_Golang如何用goexif提取照片的拍摄时间和GPS位置【方法】
jvm·数据库·python
zhoutongsheng1 小时前
如何在 SvelteKit 中为动态加载的图片正确实现悬停显示覆盖层
jvm·数据库·python
a7963lin1 小时前
Go语言怎么做分布式缓存_Go语言分布式缓存教程【经典】
jvm·数据库·python
zh1570231 小时前
golang如何生成和验证JWT Token_golang JWT Token生成验证步骤
jvm·数据库·python
_376271531 小时前
如何利用Bootstrap的Flex工具类快速排版
jvm·数据库·python
m0_740653221 小时前
Go 中通过指针实现变量名的“传入”与原地修改
jvm·数据库·python
刘~浪地球1 小时前
MongoDB CRUD操作详解:数据的增删改查
数据库·mongodb