美文网首页Java基础
MySQL详解5.DML语法

MySQL详解5.DML语法

作者: 卢卡斯哔哔哔 | 来源:发表于2019-01-16 15:48 被阅读24次

点击进入我的博客

1 增

INSERT INTO tb_name (col_name1, col_name2) VALUES ('val1', 'val1'),('val2', 'val2');

2 删

DELETE FROM table_name [WHER];

  • 如果没有WHERE子语句,MySQL表中的所有记录将被删除。

3 改

UPDATE tb_name SET col_name1 = 'new_val1', col_name2 = 'new_val2' [WHERE];

4 查

4.1 SELECT语法

SELECT col_name FROM tb_name [WHERE] [GROUP BY] [HVAING] [ORDER BY] [LIMIT]

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号,分割
  • SELECT 命令可以读取一条或者多条记录。
  • 可以使用星号*来代替其他字段,SELECT语句会返回表的所有字段数据。
  • 可以使用 WHERE 语句来包含任何条件。
  • 可以使用 ORDER BY 语句来设定返回记录的排序规则。
  • 可以使用 LIMIT 属性来设定返回的记录数。
  • 可以通过 OFFSET 指定 SELECT 语句开始查询的数据偏移量,默认情况下偏移量为0。

4.2 WHERE子语句

  • 基本语法:WHERE 列名 运算符 值
  • 可以使用AND表示逻辑与
  • 可以使用OR表示逻辑或
  • 可以使用NOT表示逻辑非
运算符 描述 示例
= 等于 WHERE col_name = 'val'
<> 或 != 不等于 WHERE col_name != 'val'
> 大于 WHERE col_name > '10'
< 小于 WHERE col_name < '10'
>= 大于等于 WHERE col_name >= '10'
<= 小于等于 WHERE col_name <= '10'
BETWEEN 在某个范围内(是闭区间) WHERE col_name BETWEEN 0 AND 10
IN 表示在某个特定值内 WHERE col_name IN ('val1', 'val2')
LIKE 搜索某种模式(%匹配多个字符,_匹配一个字符) WHERE col_name LIKE '%val%'
IS 和 IS NOT 判断是否为NULL WHERE col_name IS NULL

4.3 GROUP BY 子语句

GROUP BY对数据集进行分组

基本语法

GROUP BY col_name1, col_name2

聚集函数

GROUP BY一般需要配合聚合函数来用,分组之后你可以:count() 计数、sum() 求和、avg() 平均数、max() 最大值、min() 最小值。

4.4 HAVING 子语句

HAVING 是分组 GROUP BY 后的筛选条件,对分组后的数据组内再筛选。
HAVING 子句限制的是组,而不是行。

三种子语句

当同时含有 WHERE 子句、GROUP BY 子句 、HAVING 子句及聚集函数时,执行顺序如下:

  1. 执行WHERE子句查找符合条件的数据;
  2. 使用GROUP BY子句对数据进行分组。
  3. 对GROUP BY子句形成的组运行聚集函数计算每一组的值;
  4. 最后用having 子句去掉不符合条件的组。

4.5 ORDER BY 子语句

ORDER BY 用于对结果集进行排序

基本语法
  • ORDER BY col_name1 [ASC|DESC], col_name2 [ASC|DESC]
  • ASC是升序,也是默认第排序方式
  • DESC是降序

4.6 LIMIT 子语句

LIMIT子句是一个选择语句块的最后一个子句,它选取了行的一个子集,来限定中间结果的输出行数。

基本语法
  • LIMIT M:返回前M条数据
  • LIMIT N [, M]:返回从第N+1条到第N+M条之间的数据
  • LIMIT N OFFSET M:返回从第M+1到第M+N之间第数据

5 UNION

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中,SELECT 的列名及数量必须一致。
SELECT col_name1, col_name2 FROM tb_name1 [WHERE] UNION SELECT col_name1, col_name2 FROM tb_name2 [WHERE]

6 连接

6.1 内连接

内连接

内连接就是取多张表的交集。
关键字:INNER JOINJOIN,

  • SELECT * FROM articles, books WHERE articles.id = books.id;
  • SELECT * FROM articles INNER JOIN books ON articles.id = books.id;
  • SELECT * FROM articles INNER JOIN books WHERE articles.id = books.id;

6.2 左连接

左连接
左连接会读取左边数据表的全部数据,即使右边数据表没有对应数据。如果两个表中数据有相同部分,只显示一个。
关键字:LEFT OUTER JOINLEFT JOIN
  • SELECT * FROM articles LEFT JOIN books ON articles.id = books.id;
  • SELECT * FROM articles LEFT OUTER JOIN books ON articles.id = books.id;

6.3 右连接

右连接
右连接会读取右边数据表的全部数据,即使左边数据表没有对应数据。如果两个表中数据有相同部分,只显示一个。
关键字:RIGHT OUTER JOINRIGHT JOIN
  • SELECT * FROM articles RIGHT JOIN books ON articles.id = books.id;
  • SELECT * FROM articles RIGHT OUTER JOIN books ON articles.id = books.id;

相关文章

网友评论

    本文标题:MySQL详解5.DML语法

    本文链接:https://www.haomeiwen.com/subject/pjuedqtx.html