操作 | 语法 | 示例 |
---|---|---|
查询数据 | 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
等)之后。这样可以确保先对数据进行筛选和分组,然后再进行排序。