操作语法示例
查询数据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_namelast_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的表,包含idnameage列:

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查询的最后,位于所有其他子句(如SELECTFROMWHEREGROUP BY等)之后。这样可以确保先对数据进行筛选和分组,然后再进行排序。

最后修改:2024 年 06 月 03 日
如果觉得我的文章对你有用,请随意赞赏