SQL ORDER BY 和 INSERT INTO 语句详解(二)

在处理大量数据时,SQL 提供了许多强大的工具来帮助我们管理和查询数据。本文将详细介绍两个常用的 SQL 语句:ORDER BY 和 INSERT INTO。通过这些语句,你可以轻松地对查询结果进行排序,并向数据库表中插入新记录。无论你是初学者还是有经验的开发者,这篇文章都会为你提供实用的技巧和最佳实践。

什么是 SQL ORDER BY?

ORDER BY 是 SQL 中的一个关键字,用于对查询结果进行排序。通过 ORDER BY,你可以按照一个或多个列对结果集进行升序或降序排列。默认情况下,ORDER BY 会对结果进行升序排序,但你也可以使用 DESC 关键字来实现降序排序。

SQL ORDER BY 语法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
  • column1, column2, ...:要排序的字段名称,可以为多个字段。
  • ASC:表示按升序排序。
  • DESC:表示按降序排序。

示例数据库

为了更好地理解 ORDER BY 的用法,我们将使用一个示例数据库 RUNOOB。以下是 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     |
+----+--------------+---------------------------+-------+---------+

单列排序

假设我们需要从 Websites 表中选择所有网站,并按照 alexa 排名进行升序排序。可以使用以下 SQL 语句:

SELECT *
FROM Websites
ORDER BY alexa;

执行上述 SQL 语句后,结果如下:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
+----+--------------+---------------------------+-------+---------+

降序排序

如果需要按照 alexa 排名进行降序排序,可以使用 DESC 关键字:

SELECT *
FROM Websites
ORDER BY alexa DESC;

执行上述 SQL 语句后,结果如下:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
+----+--------------+---------------------------+-------+---------+

多列排序

有时候,我们可能需要根据多个列进行排序。例如,先按 country 排序,再按 alexa 排序:

SELECT *
FROM Websites
ORDER BY country, alexa;

执行上述 SQL 语句后,结果如下:

+----+--------------+---------------------------+-------+---------+

| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
+----+--------------+---------------------------+-------+---------+

什么是 SQL INSERT INTO?

INSERT INTO 语句用于向数据库表中插入新记录。通过 INSERT INTO,你可以将新的数据行添加到现有的表中。INSERT INTO 有两种常见的用法:一种是不指定列名,另一种是指定列名。

SQL INSERT INTO 语法

不指定列名

INSERT INTO table_name
VALUES (value1, value2, value3, ...);
  • table_name:需要插入新记录的表名。
  • value1, value2, ...:需要插入的字段值。

指定列名

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
  • table_name:需要插入新记录的表名。
  • column1, column2, ...:需要插入的字段名。
  • value1, value2, ...:需要插入的字段值。

插入完整数据行

假设我们要向 Websites 表中插入一个新的网站记录。可以使用以下 SQL 语句:

INSERT INTO Websites (name, url, alexa, country)
VALUES ('百度', 'https://www.baidu.com/', 4, 'CN');

执行上述 SQL 语句后,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     |
| 6  | 百度          | https://www.baidu.com/    | 4     | CN      |
+----+--------------+---------------------------+-------+---------+

插入部分数据行

有时,我们可能只需要插入某些列的数据,而其他列的数据可以自动填充。例如,假设我们只想插入 name、url 和 country 列的数据,id 列会自动递增:

INSERT INTO Websites (name, url, country)
VALUES ('Stack Overflow', 'https://stackoverflow.com/', 'IND');

执行上述 SQL 语句后,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     |
| 6  | 百度          | https://www.baidu.com/    | 4     | CN      |
| 7  | Stack Overflow| https://stackoverflow.com/| NULL  | IND     |
+----+--------------+---------------------------+-------+---------+

总结

通过本文,我们详细介绍了 SQL 中的 ORDER BY 和 INSERT INTO 语句。ORDER BY 允许你对查询结果进行排序,而 INSERT INTO 则用于向表中插入新记录。这两个语句在日常的数据库操作中非常常用,掌握它们可以帮助你更高效地管理数据。希望本文的内容对你有所帮助,如果你有任何疑问或建议,欢迎在评论区留言。