MySQL中常用SQL语句的编写(6)

实例
插入几条数据:

insert into author(name, qq, phone) values('李天星', '5678911', '13345607861'), ('王星', '5678912', '13345607862'), ('张星星', '5678913', '13345607863');

查询 author 表 name 字段中以星为结尾的的所有记录:

mysql> select * from author where name like '%星'; +----+--------+---------+-------------+ | id | name | qq | phone | +----+--------+---------+-------------+ | 5 | 李天星 | 5678911 | 13345607861 | | 6 | 王星 | 5678912 | 13345607862 | | 7 | 张星星 | 5678913 | 13345607863 | +----+--------+---------+-------------+ 3 rows in set (0.01 sec)

9. UNION 操作符
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

语法
MySQL UNION 操作符语法格式:

SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];

参数

expression1, expression2, ... expression_n: 要检索的列。

tables: 要检索的数据表。

WHERE conditions: 可选, 检索条件。

DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。

ALL: 可选,返回所有结果集,包含重复数据。

articles表

mysql> select * from articles; +----+--------------+----------------------------+---------+ | id | title | content | user_id | +----+--------------+----------------------------+---------+ | 1 | 中国有嘻哈 | 哈哈哈 | 1 | | 2 | 星光大道 | 成名之路 | 2 | | 3 | 平凡的真谛 | 开心即完美 | 3 | | 4 | python进阶 | Python高级用法 | 1 | | 5 | 流畅的python | 就问你流畅不流畅 | 1 | | 6 | 严肃 | 你这辈子就是吃了太严肃的亏 | 3 | +----+--------------+----------------------------+---------+ 6 rows in set (0.00 sec)

article表

mysql> select * from article; +----+--------------+----------------------------+-----------+---------------------+ | id | title | content | author_id | create_time | +----+--------------+----------------------------+-----------+---------------------+ | 1 | 流畅的python | Python各种拽 | 1 | 2017-09-12 16:36:43 | | 2 | 嘻哈 | 中国有嘻哈 | 2 | 2017-09-12 16:36:43 | | 3 | 严肃 | 你这辈子就是吃了太严肃的亏 | 3 | 2017-09-12 16:36:43 | +----+--------------+----------------------------+-----------+---------------------+ 3 rows in set (0.00 sec)

SQL UNION 实例
下面的 SQL 语句从 article 和 articles 表中选取所有不同的title(只有不同的值):

mysql> select title from article union select title from articles order by title; +--------------+ | title | +--------------+ | python进阶 | | 严肃 | | 中国有嘻哈 | | 嘻哈 | | 平凡的真谛 | | 星光大道 | | 流畅的python | +--------------+ 7 rows in set (0.00 sec)

注释:UNION 不能用于列出两个表中所有的title。如果出现重复的数据,只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!

SQL UNION ALL 实例
下面的 SQL 语句使用 UNION ALL 从 "article" 和 "articles" 表中选取所有的title(也有重复的值):

mysql> select title from article union all select title from articles order by title; +--------------+ | title | +--------------+ | python进阶 | | 严肃 | | 严肃 | | 中国有嘻哈 | | 嘻哈 | | 平凡的真谛 | | 星光大道 | | 流畅的python | | 流畅的python | +--------------+ 9 rows in set (0.00 sec)

带有 WHERE 的 SQL UNION ALL
下面的 SQL 语句使用 UNION ALL 从 "article" 和 "articles" 表中选取所标题(title)为流畅的python的书籍(也有重复的值):

mysql> select title, content from article where title='流畅的python' union all select title, content from articles where title='流畅的python' order by title; +--------------+------------------+ | title | content | +--------------+------------------+ | 流畅的python | Python各种拽 | | 流畅的python | 就问你流畅不流畅 | +--------------+------------------+ 2 rows in set (0.00 sec)

10. 排序
我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

语法
以下是 SQL SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:

SELECT field1, field2,...fieldN table_name1, table_name2... ORDER BY field1, [field2...] [ASC [DESC]]

你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。

你可以设定多个字段来排序。

你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。

你可以添加 WHERE...LIKE 子句来设置条件。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ceab30ba7232b5b1286383285c58cd83.html