基本语法
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)
版权声明:本文教程基于菜鸟教程