基本语法
1.where子句
我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。
- 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
- 你可以在 WHERE 子句中指定任何条件。
- 你可以使用 AND 或者 OR 指定一个或多个条件。
- WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
- WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
mysql> select * from imustctf where ctf_id=1;
+--------+-------------+---------+------------+
| ctf_id | ctf_name    | ctf_age | ctf_date   |
+--------+-------------+---------+------------+
|      1 | 学习Mysql   |      18 | 2022-01-10 |
+--------+-------------+---------+------------+
1 row in set (0.00 sec)
MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的
mysql> select * from imustctf where ctf_name='学习mysql';
+--------+-------------+---------+------------+
| ctf_id | ctf_name    | ctf_age | ctf_date   |
+--------+-------------+---------+------------+
|      1 | 学习Mysql   |      18 | 2022-01-10 |
+--------+-------------+---------+------------+
1 row in set (0.00 sec)
mysql> select * from imustctf where BINARY ctf_name='学习mysql';
Empty set, 1 warning (0.00 sec)
#没有查询到信息,因为区分了大小写
2.UPDATE更新数据表
如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。
- 你可以同时更新一个或多个字段。
- 你可以在 WHERE 子句中指定任何条件。
- 你可以在一个单独表中同时更新数据。
mysql> update imustctf set ctf_age=19 where ctf_id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from imustctf;
+--------+-------------+---------+------------+
| ctf_id | ctf_name    | ctf_age | ctf_date   |
+--------+-------------+---------+------------+
|      1 | 学习Mysql   |      19 | 2022-01-10 |
+--------+-------------+---------+------------+
1 row in set (0.00 sec)
#可以看到,信息发生了更改
3.DELETE删除表中数据
你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
- 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
- 你可以在 WHERE 子句中指定任何条件
- 您可以在单个表中一次性删除记录。
mysql> delete from imustctf where ctf_id=1
    -> ;
Query OK, 1 row affected (0.01 sec)
mysql> select * from imustctf;
Empty set (0.00 sec)
4.LIKE子句
有时需要查找满足某一条件字符串的数据,此时应使用LIKE子句
如获取 author 字段含有 “COM” 字符的所有记录
查找ctf_name列中以sql结尾的所有数据项
mysql> select * from imustctf where ctf_name like '%sql';
+--------+-------------+---------+------------+
| ctf_id | ctf_name    | ctf_age | ctf_date   |
+--------+-------------+---------+------------+
|      2 | 学习Mysql   |      18 | 2022-01-10 |
+--------+-------------+---------+------------+
1 row in set (0.00 sec)
其他的查找方式
'%a'     //以a结尾的数据
'a%'     //以a开头的数据
'%a%'    //含有a的数据
'_a_'    //三位且中间字母是a的
'_a'     //两位且结尾字母是a的
'a_'     //两位且开头字母是a的
5.UNION操作符
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
演示数据库
下面是选自 “Websites” 表的数据:
mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+
下面是 “apps” APP 的数据:
mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;    #以country进行排序

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

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;

6.MYSQL排序
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列
示例:
 以下将在 SQL SELECT 语句中使用 ORDER BY 子句来读取MySQL 数据表 runoob_tbl 中的数据:
mysql> SELECT * from runoob_tbl ORDER BY submission_date ASC;     #按日期升序
+-----------+---------------+---------------+-----------------+
| runoob_id | runoob_title  | runoob_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 3         | 学习 Java   | RUNOOB.COM    | 2015-05-01      |
| 4         | 学习 Python | RUNOOB.COM    | 2016-03-06      |
| 1         | 学习 PHP    | 菜鸟教程  | 2017-04-12      |
| 2         | 学习 MySQL  | 菜鸟教程  | 2017-04-12      |
+-----------+---------------+---------------+-----------------+
4 rows in set (0.01 sec)
 
mysql> SELECT * from runoob_tbl ORDER BY submission_date DESC;   #按日期降序
+-----------+---------------+---------------+-----------------+
| runoob_id | runoob_title  | runoob_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 1         | 学习 PHP    | 菜鸟教程  | 2017-04-12      |
| 2         | 学习 MySQL  | 菜鸟教程  | 2017-04-12      |
| 4         | 学习 Python | RUNOOB.COM    | 2016-03-06      |
| 3         | 学习 Java   | RUNOOB.COM    | 2015-05-01      |
+-----------+---------------+---------------+-----------------+
4 rows in set (0.01 sec)
版权声明:本文教程基于菜鸟教程










