1. 下面的 SQL 语句从 “Websites” 表中选取头两条记录:
    select * form table limit 2;

  2. 下面的 SQL 语句选取 name 以字母 “G” 开始的所有客户:
    select * from table where name like ‘G%’;

  3. 下面的 SQL 语句选取 name 为 “Google” 或 “菜鸟教程” 的所有网站:

select * from table where name in('Google','菜鸟教程');

  1. 下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:

select * from table where alexa between 1 and 20;

  1. 下面的 SQL 语句选取 date 介于 ‘2016-05-10’ 和 ‘2016-05-14’ 之间的所有访问记录:
    select * from table where date between 2016-05-10' AND '2016-05-14';
    6.下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。提示:如果列名称包含空格,要求使用双引号或方括号:

select name as n,country as c from table;

  1. 在下面的 SQL 语句中,我们把三个列(url、alexa 和 country)结合在一起,并创建一个名为 “site_info” 的别名:
    SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites;

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

下面是 “apps” APP 的数据:

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

下面的 SQL 语句使用 UNION ALL 从 “Websites” 和 “apps” 表中选取所有的country(也有重复的值):

SELECT COUNTRY FROM Websites UNION ALL 
SELECT COUNTRY FROM apps ORDER BY country;

|下面的 SQL 语句使用 UNION ALL 从 “Websites” 和 “apps” 表中选取所有的中国(CN)的数据(也有重复的值):

SELECT COUNTRY,NAME FROM Websites UNION ALL SELECT COUNTRY FROM apps WHERE COUNTRY=‘CN’ ORDER BY COUNTRY;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wuHXJGNv-1571022691159)(C:\Users\dell-pc\AppData\Roaming\Typora\typora-user-images\1570977909463.png)]

MySQL 排序

对读取的数据进行排序,可用 MySQL 的 ``ORDER BY 子句设定哪个字段需要排序,再返回搜索结果;默认情况下按升序ASC, DESC降序;可以添加WHERE…LIKE` 子句来设置条件

SELECT * FROM TABLE ORDER BY NAME DESC;

MySQL GROUP BY 语句

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

将数据表按名字进行分组,并统计每个人有多少条记录:

SELECT name,COUNT(*) FROM employeee_tbl GROUP BY name;

我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

SELECT NAME COUNT(signin) as sigin_count FROM employee_tbl GROUP BY name WITH ROLLUP;

coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

参数说明:如果anull,则选择b;如果bnull,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;

MySQL 连接的使用

MySQL 的 JOIN 在两个或多个表中查询数据,可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • **LEFT JOIN(左连接):**获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。


**INNER JOIN(直接用 JOIN,效果一样)**来连接以上两张表来读取runoob_tbl表中所有runoob_author字段在tcount_tbl表对应的runoob_count字段值:

SELECT a.runoob_id,a.runoob_author,b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoon_author = b.runoob_author;

MySQL LEFT JOIN

MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。。

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
+-------------+-----------------+----------------+
| a.runoob_id | a.runoob_author | b.runoob_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    | 10             |
| 2           | 菜鸟教程    | 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.COM      | 20             |
| 5           | FK              | NULL           |
+-------------+-----------------+----------------+

MySQL RIGHT JOIN

MySQL RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

MySQL NULL 值处理

MySQL提供了三大运算符:

  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
  • <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

更多推荐

菜鸟教程-MySQL的语句复习