SQL 语法
好的,下面是对 SQL 语法的简洁总结,涵盖了常见的 SQL 操作和基本语法结构。
创建一个表 (CREATE TABLE)
首先,我们需要创建一个表 users,如果还没有的话:
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100), age INT );
这条语句创建了一个名为 users 的表,包含三个字段:id(整数类型,主键)、name(最大长度为 100 的字符串)和 age(整数类型)。
1. SELECT 语句
用于从数据库表中查询数据。
语法:
SELECT column1, column2, ... FROM table_name WHERE condition ORDER BY column1 [ASC|DESC] LIMIT number;
- SELECT:指定要查询的列。
- FROM:指定查询的数据来源表。
- WHERE:条件过滤,只返回满足条件的记录。
- ORDER BY:排序,ASC 为升序,DESC 为降序。
- LIMIT:限制返回的记录数。
示例:
SELECT name, age FROM users WHERE age > 20 ORDER BY age DESC LIMIT 5;
解释:
- SELECT name, age:查询 users 表中的 name 和 age 列。
- FROM users:数据来自 users 表。
- WHERE age > 20:条件是只查询 age 大于 20 的用户。
- ORDER BY age DESC:按照 age 列的降序排列查询结果,年龄大的排在前面。
- LIMIT 5:限制查询结果最多返回 5 条记录。
意思:从 users 表中查询所有 age 大于 20 的用户的名字和年龄,并按年龄降序排列,最多返回前 5 条记录。
2. INSERT INTO 语句
用于向表中插入数据。
语法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- INSERT INTO:指定要插入数据的表。
- VALUES:指定插入的值。
示例:
INSERT INTO users (name, age) VALUES ('Alice', 30);
解释:
- INSERT INTO users:向 users 表插入数据。
- (name, age):插入数据的列名,分别是 name 和 age。
- VALUES ('Alice', 30):插入的具体值,name 为 'Alice',age 为 30。
意思:向 users 表插入一条新记录,其中 name 是 'Alice',age 是 30。
3. UPDATE 语句
用于更新表中现有的记录。
语法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
- UPDATE:指定要更新的表。
- SET:指定更新的列和新值。
- WHERE:限定更新的记录。
示例:
UPDATE users SET age = 31 WHERE name = 'Alice';
解释:
- UPDATE users:更新 users 表的数据。
- SET age = 31:将 age 列的值更新为 31。
- WHERE name = 'Alice':只更新 name 为 'Alice' 的用户的记录。
意思:将 users 表中名字为 'Alice' 的用户的年龄更新为 31。
4. DELETE 语句
用于删除表中的记录。
语法:
DELETE FROM table_name WHERE condition;
- DELETE FROM:指定要删除记录的表。
- WHERE:限定删除的记录。
示例:
DELETE FROM users WHERE age < 18;
解释:
- DELETE FROM users:从 users 表中删除数据。
- WHERE age < 18:只删除 age 小于 18 的记录。
意思:删除 users 表中所有年龄小于 18 的用户记录。
5. JOIN 语句
用于连接多个表,通过某个公共列来组合数据。
语法:
SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.column_name = table2.column_name;
- JOIN:指定要连接的表。
- ON:指定连接条件。
示例:
SELECT users.name, orders.order_date FROM users INNER JOIN orders ON users.id = orders.user_id;
解释:
- SELECT users.name, orders.order_date:查询 users 表中的 name 列和 orders 表中的 order_date 列。
- FROM users:数据来自 users 表。
- INNER JOIN orders:将 users 表与 orders 表进行内连接。
- ON users.id = orders.user_id:连接条件是 users 表的 id 列与 orders 表的 user_id 列匹配。
意思:查询所有用户的姓名和他们的订单日期,连接条件是 users.id 和 orders.user_id 相等(即用户与他们的订单进行匹配)。
6. GROUP BY 语句
用于对查询结果进行分组,通常配合聚合函数使用(如 COUNT、SUM)。
语法:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
- GROUP BY:根据指定的列对数据进行分组。
示例:
SELECT age, COUNT(*) FROM users GROUP BY age;
解释:
- SELECT age, COUNT(*):查询 age 列,并计算每个年龄段的用户数。
- FROM users:数据来自 users 表。
- GROUP BY age:按 age 列对数据进行分组。
意思:统计 users 表中每个年龄段的用户数量。例如,输出类似:20岁有 5 个用户,25岁有 8 个用户等。
7. ORDER BY 语句
用于对查询结果进行排序。
语法:
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC];
- ORDER BY:指定排序的列,ASC 升序,DESC 降序。
示例:
SELECT name, age FROM users ORDER BY age DESC;
解释:
- SELECT name, age:查询 users 表中的 name 和 age 列。
- FROM users:数据来自 users 表。
- ORDER BY age DESC:按 age 列进行排序,DESC 表示降序(从大到小)。
意思:查询 users 表中的 name 和 age,并按年龄降序排列,年龄较大的用户排在前面。
8. LIMIT 语句
用于限制查询结果返回的记录数量。
语法:
SELECT column1, column2, ... FROM table_name LIMIT number;
- LIMIT:限制查询结果返回的记录数。
示例:
SELECT name, age FROM users LIMIT 5;
解释:
- SELECT name, age:查询 users 表中的 name 和 age 列。
- FROM users:数据来自 users 表。
- LIMIT 5:限制查询结果返回 5 条记录。
意思:查询 users 表中的前 5 条记录,返回 name 和 age。
总结:
每个 SQL 语句示例都对应一个具体的操作或查询,它们的目的是:
- SELECT:查询数据。
- INSERT INTO:插入数据。
- UPDATE:更新数据。
- DELETE:删除数据。
- JOIN:连接表。
- GROUP BY:分组数据。
- ORDER BY:排序数据。
- LIMIT:限制结果的行数。
这些操作可以灵活组合,满足各种数据库管理和数据分析的需求。
SQL 语句的基本结构通常由:
- 动词(Verb):表示操作类型(如 SELECT、INSERT、UPDATE、DELETE)。
- 主语(Subject):指定要操作的表和列。
- 谓语(Predicate):用于定义操作条件、排序和限制等。
SQL 是一种功能强大的查询语言,用于操作数据库中的数据。通过灵活使用各种 SQL 语句,你可以高效地管理和分析数据库中的数据。