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 中用于将数据按指定列分组,并对每组分别进行聚合计算的核心子句。

相关推荐
Elastic 中国社区官方博客1 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
DLYSB_1 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
儒雅的大叔1 小时前
MySQL数据库InnoDB数据恢复工具使用总结
数据库·mysql·adb
观远数据2 小时前
ChatBI选型对比:从意图识别到SQL修复,六个维度打分决定是否值得投产
数据库·人工智能·sql
嘉&年华2 小时前
【第008篇】通过dexp和dimp命令导出和导入dmp文件(适用于达梦数据库)
数据库·sql
哥是强混3 小时前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
网络·数据库·.net
ffqws_3 小时前
redis面试:如何保证双写一致
数据库·redis·缓存
水无痕simon4 小时前
6 数据库同义词
数据库
杜子不疼.4 小时前
【Qt初识】信号槽(三):机制意义、断开连接与 Lambda 表达式
开发语言·数据库·qt
BomanGe16 小时前
NSK W1501FA高速精密滚珠丝杠技术手册
数据库·经验分享·规格说明书