| 操作 | 语法 | 示例 |
|---|---|---|
| 查询数据 | SELECT column1, column2, ... FROM table_name WHERE condition; | SELECT first_name, last_name FROM employees; |
| 插入数据 | INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); | INSERT INTO employees (first_name, last_name, age) VALUES ('John', 'Doe', 30); |
| 更新数据 | UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; | UPDATE employees SET age = 35 WHERE first_name = 'John'; |
| 删除数据 | DELETE FROM table_name WHERE condition; | DELETE FROM employees WHERE first_name = 'John'; |
| 创建表 | CREATE TABLE table_name (column1 datatype, column2 datatype, ...); | CREATE TABLE students (id INT AUTO_INCREMENT, name VARCHAR(100), age INT, PRIMARY KEY (id)); |
| 删除表 | DROP TABLE table_name; | DROP TABLE students; |
1. 查询数据
语法:
SELECT column1, column2, ...
FROM table_name
WHERE condition;示例:
从employees表中选择所有员工的first_name和last_name:sqlSELECT first_name, last_name
FROM employees;
2. 插入数据
语法:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);示例:
向employees表中插入一条新记录:
INSERT INTO employees (first_name, last_name, age)
VALUES ('John', 'Doe', 30);3. 更新数据
语法:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;示例:
将employees表中first_name为'John'的员工的age更新为35:
UPDATE employees
SET age = 35
WHERE first_name = 'John';4. 删除数据
语法:
DELETE FROM table_name WHERE condition;示例:
从employees表中删除first_name为'John'的员工记录:
DELETE FROM employees WHERE first_name = 'John';5. 创建表
语法:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);示例:
创建一个名为students的表,包含id、name和age列:
CREATE TABLE students (
id INT AUTO_INCREMENT,
name VARCHAR(100),
age INT,
PRIMARY KEY (id)
);6. 删除表
语法:
DROP TABLE table_name;示例:
删除students表:
DROP TABLE students;分组聚合
SQL中的分组聚合是指使用GROUP BY子句将结果集中的行按照一个或多个列进行分组,并对每个分组执行聚合函数以计算汇总值。聚合函数包括COUNT()、SUM()、AVG()、MAX()、MIN()等,它们分别用于计算分组中的行数、总和、平均值、最大值和最小值。
以下是SQL分组聚合的语法定义及示例:
语法定义
SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE condition
GROUP BY column1, column2
ORDER BY column1, aggregate_function(column3);示例
假设我们有一个名为orders的表,其中包含订单信息,包括order_id(订单ID)、customer_id(客户ID)、product_name(产品名称)和quantity(数量)。
示例1:计算每个客户的订单总数
SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id;在这个查询中,我们按照customer_id对订单进行分组,并使用COUNT()函数计算每个客户的订单总数。结果集中的每一行将包含一个唯一的customer_id以及对应的total_orders(订单总数)。
示例2:计算每种产品的总销售量
SELECT product_name, SUM(quantity) AS total_quantity_sold
FROM orders
GROUP BY product_name;在这个查询中,我们按照product_name对订单进行分组,并使用SUM()函数计算每种产品的总销售量。结果集中的每一行将包含一个产品名称以及对应的total_quantity_sold(总销售量)。
示例3:结合WHERE子句进行过滤
如果你想在计算分组聚合之前先对结果进行过滤,可以使用WHERE子句。例如,计算总销售量超过100的产品的销售量:
SELECT product_name, SUM(quantity) AS total_quantity_sold
FROM orders
WHERE quantity > 100
GROUP BY product_name;在这个查询中,我们首先使用WHERE子句过滤出数量大于100的订单行,然后再按照product_name进行分组和计算总销售量。
示例4:结合ORDER BY子句对结果进行排序
你还可以使用ORDER BY子句对分组聚合的结果进行排序。例如,按照总订单数降序排列客户:
SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id
ORDER BY total_orders DESC;在这个查询中,我们首先按照customer_id进行分组并计算总订单数,然后使用ORDER BY子句按照total_orders列进行降序排列。
分组聚合是SQL中非常强大的功能,它允许你根据一个或多个列对结果集进行分组,并对每个分组执行各种计算以获取有用的汇总信息。
排序
在SQL中,排序通常使用ORDER BY子句来实现。你可以按照一个或多个列对结果集进行排序,并且可以指定升序(ASC)或降序(DESC)。
基本语法:
sqlSELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;示例:
示例1:按单列升序排序
假设你有一个名为employees的表,并且你想根据员工的last_name列以升序方式列出所有员工:
sqlSELECT first_name, last_name
FROM employees
ORDER BY last_name ASC;由于默认就是升序(ASC),因此上述查询中的ASC关键字是可选的:
sqlSELECT first_name, last_name
FROM employees
ORDER BY last_name;示例2:按单列降序排序
如果你想根据last_name列以降序方式列出所有员工,你可以使用DESC关键字:
sqlSELECT first_name, last_name
FROM employees
ORDER BY last_name DESC;示例3:按多列排序
你也可以根据多列进行排序。例如,首先按last_name升序排序,然后在last_name相同的情况下按first_name升序排序:
sqlSELECT first_name, last_name
FROM employees
ORDER BY last_name ASC, first_name ASC;示例4:在包含WHERE子句的查询中使用ORDER BY
你可以在包含WHERE子句的查询中使用ORDER BY来对筛选后的结果进行排序:
sqlSELECT first_name, last_name, age
FROM employees
WHERE age > 30
ORDER BY age ASC;在这个例子中,我们首先筛选出年龄大于30岁的员工,然后按照年龄升序排列结果。
记住,ORDER BY子句通常放在SQL查询的最后,位于所有其他子句(如SELECT、FROM、WHERE、GROUP BY等)之后。这样可以确保先对数据进行筛选和分组,然后再进行排序。
1 条评论
每一个段落都紧密相连,逻辑清晰,展现了作者高超的写作技巧。