![3c104f37b5313b713ad6bbfd2ce5615d.png](https://i-blog.csdnimg.cn/blog_migrate/37f1e626fd8e928a8cb6d211cd778a72.png)
数据查询
查询数据库表的内容(所有行和列)
SELECT * FROM <表名>;
- 示例
![5345695b04d38e7fef8e91591c1e57c2.png](https://i-blog.csdnimg.cn/blog_migrate/b210034c4d986179ba4a45bed571c6af.jpeg)
计算
SELECT <数学多项式>;
- 示例
![4d5f0aff1b19def22ca168e9fe56c95c.png](https://i-blog.csdnimg.cn/blog_migrate/f9cd83b6ec28cf8233f7841e73c0520d.jpeg)
条件查询
SELECT * FROM <表名> WHERE <条件表达式>;
- 示例
![200100d44989137013c07861891985a8.png](https://i-blog.csdnimg.cn/blog_migrate/4f9cbae086d91179bb987d2db47a0d38.jpeg)
- 注意:对于条件表达式,可以用逻辑运算符(
AND
、OR
、NOT
)将多个条件同时进行匹配;
![92da96d540f080cc4608c10e5f366d0e.png](https://i-blog.csdnimg.cn/blog_migrate/9f3a498343a2d3be7aa1265b3c28f39e.jpeg)
![6258203b84dd8152bbbcdd4de6c8d36c.png](https://i-blog.csdnimg.cn/blog_migrate/0eb113bc59f2c484bcff5d9ca72dffe3.jpeg)
![59d105d8541a932792c5fdbe7d5c4720.png](https://i-blog.csdnimg.cn/blog_migrate/ea2fb6cf7b2fd22aeabf08c5a2cf1795.jpeg)
- 对于三个及以上的条件,可以用小括号
()
进行条件运算;
![601d38ad59d2a7c822465b13afff52b7.png](https://i-blog.csdnimg.cn/blog_migrate/b416e1f06696c42695d7675e4a5534c6.jpeg)
- 常用条件表达式
![cc669a76e1a9a88a940a53400c1b890b.png](https://i-blog.csdnimg.cn/blog_migrate/2b58bbbbf2bc16710e937f2384bf79d1.jpeg)
投影查询
- 基本的投影查询
SELECT 列1,列2,列3 FROM ...;
![69062f6489f50c96f0bf8ca3b9ba5cf9.png](https://i-blog.csdnimg.cn/blog_migrate/42031d56b1f83d2abeacdca6a31ebb42.jpeg)
- 对列名重命名的投影查询
SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM ...;
![d0d2bc0bca5a9768e9b6e652c4ec2d11.png](https://i-blog.csdnimg.cn/blog_migrate/5f53c4cb0c2f07da9a2e0c70921631ad.jpeg)
- 注意: 别名是存在于内存中的,而
WHERE
仅适用于硬盘,但是HAVING
既可以针对硬盘,也可以针对内存条件进行查询;
分页查询
- 经排序后获取结果中第
M
条开始后N
条记录;
-- MySQL中两句等效
SELECT <列名> FROM <表名> ORDER BY <列名> LIMIT <M> OFFSET <N>;
SELECT <列名> FROM <表名> ORDER BY <列名> LIMIT <N> , <M>;
![39849169cc52cc5eaac32263af686089.png](https://i-blog.csdnimg.cn/blog_migrate/5ec8d8d7012b2359aa15aa6ea1f29179.jpeg)
聚合查询
- 常用聚合函数
函数说明SUM计算某一列的合计值,该列必须为数值类型AVG计算某一列的平均值,该列必须为数值类型MAX计算某一列的最大值MIN计算某一列的最小值COUNT统计某一列的个数
![bfd1193d094f71b5265eb0beecf78502.png](https://i-blog.csdnimg.cn/blog_migrate/b9eadf2c8e972020bfc84be0dcecd9d0.jpeg)
![d73a60438e71e7a887ca9e77ea20977e.png](https://i-blog.csdnimg.cn/blog_migrate/a8369785fe42fe496c317ac2bb2a2cb4.jpeg)
多表查询(笛卡尔查询)
SELECT * FROM <表1> <表2>
![bbf95a9777f5e87e1f14a3faab9bb769.png](https://i-blog.csdnimg.cn/blog_migrate/c3d7e04e580ac3e6404b63c1c75be306.jpeg)
- 注意:多表查询时,使用
表名.列名
的方式,以防止结果集列名重复问题;
连接查询
- 定义:另一种类型的多表查询,它对多个表进行
JOIN
运算,即先确定一个主表作为结果集,然后将其他表的行有选择地“连接”到主表结果集中; - 内连接,以下是查询的写法:
SELECT ... FROM <表1> INNER JOIN <表2> ON <条件...>;
- 先确定主表,继续使用
FROM <表1>
的语法; - 再确定需要连接的表,使用
INNER JOIN <表2>
的语法; - 然后确定连接条件,使用ON <条件…>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;
- 可选:加上
WHERE
子句、ORDER BY
等子句;
![e132a9e0e7c23ff4ec77b32dd972091c.png](https://i-blog.csdnimg.cn/blog_migrate/36eb5dbba5c324a6b6bedc3af372e3be.jpeg)
- 外连接
- RIGHT OUTER JOIN:返回右表均存在的行;
- LEFT OUTER JOIN:返回左表均存在的行;
- FULL OUTER JOIN:将两张表中所有记录均选出来,且自动将对方不存在的列填充为
NULL
;
排序
- 正序(默认规则下为正序,以下两条语句功能相同)
SELECT <列名> FROM <表名> ORDER BY <列名> ASC;
SELECT <列名> FROM <表名> ORDER BY <列名>;
![fe8bb773502f12262236d4dcf067a765.png](https://i-blog.csdnimg.cn/blog_migrate/201533c527f7785531558b6739f2dac2.jpeg)
![38eed2853c18322f8243b16241de89bd.png](https://i-blog.csdnimg.cn/blog_migrate/f85df79b61329531cbb957b3072578e2.jpeg)
- 逆序
SELECT <列名> FROM <表名> ORDER BY <列名> DESC;
![97c49bfd3cb3053271f37a47431f3629.png](https://i-blog.csdnimg.cn/blog_migrate/936413221afcfa6e05f85e42735e5b95.jpeg)
数据修改
INSERT
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
![3eb8c3b6f46a6addbaf2af7b0d8394e4.png](https://i-blog.csdnimg.cn/blog_migrate/5177d16bd5f6f461b386cfa623c7b186.jpeg)
![1cd8ca1734e4d617a9c66de133166ada.png](https://i-blog.csdnimg.cn/blog_migrate/39b7e74dc01c647030dada573a9fa890.jpeg)
UPDATE
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
![f1370c27419606a0fda1acb19fb88ab8.png](https://i-blog.csdnimg.cn/blog_migrate/dc50c6e08b611697d84bf35b0ac977a1.png)
![1ffac040b0e387f703b977bc1a4debb8.png](https://i-blog.csdnimg.cn/blog_migrate/877b599a6e81d090e72bd9a382b54b1a.jpeg)
- 注意:不带
WHERE
的UPDATE
将会更新整个表的数据;
DELETE
DELETE FROM <表名> WHERE ...;
![173f24533f0d853cd89408e4cba51f59.png](https://i-blog.csdnimg.cn/blog_migrate/2642f4f27280a908d1bf423df8cd1403.jpeg)
- 注意:不带
WHERE
的DELETE
将会删除整个表的数据;