当前位置:网站首页>MySQL数据指令
MySQL数据指令
2022-08-09 17:14:00 【InfoQ】
数据指令
增删改查
mysql> INSERT INTO student
-> (ID,name,grade)
-> VALUES(755,'王东浩',80);Copy to clipboardErrorCopied
mysql> REPLACE INTO student
-> (ID,name,grade)
-> VALUES(755,'王东浩',80);Copy to clipboardErrorCopied
mysql> UPDATE student
-> SET name='孙鹏',grade=60
-> WHERE id=753;Copy to clipboardErrorCopied
mysql> DELETE FROM student
-> WHERE id=754;Copy to clipboardErrorCopied
mysql> SELECT id,name FROM student -- 按条件查询数据
-> WHERE id BETWEEN 753 and 755;
mysql> SELECT * FROM student; -- 查询全部数据Copy to clipboardErrorCopied
条件语句
- DISTINCT 关键字用于对查询结果去重,必须放于所有字段前。只有多个字段全部相等才会被去重。
mysql> SELECT DINTINCE age,sex FROM student; -- 查询数据并去重Copy to clipboardErrorCopied
- WHERE 语句用于指定 更新/删除/查询 的操作范围,如果不设定范围将对全部数据进行操作。
mysql> SELECT * FROM student WHERE id = 100;
mysql> SELECT * FROM student WHERE id != 100;
mysql> SELECT * FROM student WHERE id [NOT] BETWEEN 30 AND 50;
mysql> SELECT * FROM student WHERE id [NOT] IN (30, 35 ,50);
mysql> SELECT * FROM student WHERE grade IS [NOT] NULL;Copy to clipboardErrorCopied
- LIKE 语句用于对字符串进行模糊匹配:
%
代表任意多个字符 _
代表一个字符 /
代表转义
mysql> SELECT * FROM student WHERE name LIKE 'Tom%';Copy to clipboardErrorCopied
分组排序
数据分组
- GROUP 语句指定数据的分组方式,如果不含则默认把全部数据合并为一条数据。(本质是生成临时表)
- AS 关键字为表或者列起别名,可省略。
- HAVING 语句对分组后的结果进行筛选。
-- 查询班级总数
mysql> SELECT COUNT(*) FROM class; -- 全部合并
-- 查询各年级人数
mysql> SELECT grade, SUM(class.student_num) AS nums
-> FROM class
-> GROUP BY grade -- 各班数据按年级合并
-> HAVING SUM(class.student_num) > 200; -- 筛选人数大于 200 的年级Copy to clipboardErrorCopied
数据排序
- ORDER 语句指定数据显示顺序,ASC 为升序 / DESC 为降序。
- LIMIT 语句对排序后的数据进行筛选,指定起始序号和总数量。
-- 查询学生信息
mysql> SELECT *
-> FROM student
-> ORDER BY grade DESC, ID ASC -- 按成绩降序排列,若相同按学号升序排列
-> LIMIT 10,20; -- 筛选第 11 - 30 名Copy to clipboardErrorCopied
多表查询
嵌套查询
- FROM 型:子语句返回一个表,且必须给子查询结果取别名。
- WHERE 型:子语句返回一个值,不能用于 UPDATE。
-- FROM 型
mysql> SELECT *
-> FROM (SELECT * FROM tb WHERE id > 0) AS subfrom
-> WHERE id > 1;
-- WHERE 型
mysql> SELECT *
-> FROM tb
-> WHERE money = (SELECT max(money) FROM tb);Copy to clipboardErrorCopied
合并查询
- 默认为 DISTINCT 形式,不同表查询到的相同数据只展示一个。
- 设置为 ALL 则不同表查询到的相同结果重复展示。
-- DISTINCT 形式
mysql> (SELECT * FROM student WHERE id < 10)
-> UNION
-> (SELECT * FROM student WHERE id > 20);
-- ALL 形式
mysql> (SELECT * FROM student1)
-> UNION ALL
-> (SELECT * FROM student2);Copy to clipboardErrorCopied
连表查询
- 内连接 INNER JOIN:(默认)未指定连接条件时,自动查找相同字段名匹配连接条件。
mysql> SELECT s.id,s.name,c.name
-> FROM student s JOIN class c
-> ON e.cid = c.id;
mysql> SELECT *
-> FROM student s, class c
-> WHERE s.id = c.id; Copy to clipboardErrorCopied
- 交叉连接 CROSS JOIN:未指定连接条件时,视为无连接条件。
mysql> SELECT *
-> FROM boy CROSS JOIN girl; -- 显示所有交配可能
mysql> SELECT *
-> FROM boy, girl; -- 等价写法Copy to clipboardErrorCopied
- 外连接 OUTER JOIN:如果数据不存在,也会出现在连接结果中。
- LEFT JOIN:左表数据一定显示,没有匹配右表数据用 null 填充。
- RIGHT JOIN:右表数据一定显示,没有匹配左表数据用 null 填充。
- FULL JOIN:两表数据一定显示,没有匹配数据用 null 填充。
mysql> SELECT s.id,s.name,c.name -- 显示学生的班级信息
-> FROM student s LEFT JOIN class c -- 没有班级的学生也会显示
-> ON s.cid = c.id;
-- 先筛选再连接(效率等价,但如果有大量重复值提前筛选可以提高效率)
mysql> SELECT s.id,s.name,c.name
-> FROM student s LEFT JOIN (SELECT DINTINCT id, name FROM class) c
-> ON s.cid = c.id;
边栏推荐
猜你喜欢
读大学有用吗?
【Pycharm好用功能】
[Pycharm easy to use function]
Cortex-A7 MPCore 架构
The principle implementation of handwritten flexible.js, I finally understand the multi-terminal adaptation of the mobile terminal
动态RDLC报表(七)
JMeter笔记6 | JMeter录制(配置代理)
JVM内存模型和结构详解(五大模型图解)
一口气拿下6个大厂offer,是什么水平
Logic unauthorized and horizontal and vertical unauthorized payment tampering, verification code bypass, interface
随机推荐
十七、一起学习Lua 错误处理
Detailed explanation of JVM memory model and structure (five model diagrams)
国际土壤模型协会 International Soil Modeling Consortium-ISMC
FAST-LIO2代码解析(三)
Jenkins使用pipeline部署服务到远程服务器
AI基础环境搭建和设置总文
动态RDLC报表(七)
approach和method的区别
win10 uwp 简单MasterDetail
BSN季度版本2022年8月31日迭代更新预告
API接口是什么?API接口常见的安全问题与安全措施有哪些?
学长告诉我,大厂MySQL都是通过SSH连接的
【代码审计】——PHP项目类RCE及文件包含下载删除
那些关于DOM的常见Hook封装(二)
怎样选择一个好的SaaS知识库工具?
Can't install the Vmware virtual machine on the Ark Kai server?
字符设备的注册
What is test development and why is it so popular now?
An in-depth understanding of the implementation principle of Hybrid
OpenCV 轮廓 —— 轮廓匹配