SQL常用语法详解
SQL 常用语法详解:数据库开发者的基础指南
Structured Query Language(SQL)是管理和操作关系型数据库的标准语言,广泛应用于数据查询、数据操控和数据库管理。无论是构建数据库、查询数据,还是更新表格,SQL 都是数据库开发者的核心工具。本文将详细介绍一些常用的SQL语法,帮助初学者掌握其基本操作。
1. SQL 查询:SELECT
语句
SQL 查询是从数据库中提取数据的最常用操作,基本的语法格式是:
SELECT 列名1, 列名2 FROM 表名 WHERE 条件;
SELECT *
:提取表中的所有列。WHERE
:筛选符合特定条件的行。ORDER BY
:对结果按指定列排序。LIMIT
:限制返回的结果数。
示例:查询所有年龄大于25的用户,并按年龄降序排列。
SELECT name, age
FROM users
WHERE age > 25
ORDER BY age DESC
LIMIT 10;
2. 插入数据:INSERT INTO
INSERT INTO
用于向表中添加新数据,语法如下:
INSERT INTO 表名 (列名1, 列名2, ...)
VALUES (值1, 值2, ...);
- 插入数据必须与表的列结构匹配。
示例:向 users
表中插入一条新记录:
INSERT INTO users (name, age, email)
VALUES ('Alice', 28, 'alice@example.com');
3. 更新数据:UPDATE
UPDATE
语句用于修改表中的数据,语法如下:
UPDATE 表名
SET 列名1 = 值1, 列名2 = 值2, ...
WHERE 条件;
WHERE
是可选的,但非常重要,因为未指定条件时会更新表中的所有记录。
示例:更新用户 Alice
的年龄:
UPDATE users
SET age = 29
WHERE name = 'Alice';
4. 删除数据:DELETE
DELETE
语句用于删除表中的记录,基本语法为:
DELETE FROM 表名 WHERE 条件;
- 注意:没有
WHERE
子句的DELETE
会删除表中的所有行。
示例:删除年龄小于18的用户记录:
DELETE FROM users
WHERE age < 18;
5. 创建表:CREATE TABLE
创建新表时使用 CREATE TABLE
语句,语法格式为:
CREATE TABLE 表名 (
列名1 数据类型 约束,
列名2 数据类型 约束,
...
);
- 每个列都要指定数据类型(如
INT
,VARCHAR
,DATE
等)。 - 可以定义约束,如
PRIMARY KEY
,NOT NULL
,UNIQUE
。
示例:创建一个 employees
表:
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
position VARCHAR(50),
hire_date DATE
);
6. 修改表:ALTER TABLE
ALTER TABLE
语句用于修改现有表的结构,如添加或删除列:
ALTER TABLE 表名
ADD 列名 数据类型 约束;
示例:为 employees
表添加 salary
列:
ALTER TABLE employees
ADD salary DECIMAL(10, 2);
7. 连接表:JOIN
JOIN
允许从多个表中联合查询数据,常见的连接类型有:
INNER JOIN
:只返回两表中匹配的数据。LEFT JOIN
:返回左表所有记录及其匹配数据。RIGHT JOIN
:返回右表所有记录及其匹配数据。FULL JOIN
:返回两表中所有匹配和不匹配的数据。
示例:将 orders
表和 customers
表连接,获取每个订单及其客户信息:
SELECT orders.order_id, customers.name, customers.email
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
8. 聚合函数与分组:GROUP BY
和 HAVING
SQL 提供了多种聚合函数来统计数据,如 COUNT()
, SUM()
, AVG()
, MIN()
, MAX()
。通过 GROUP BY
对数据进行分组,并使用 HAVING
过滤聚合结果。
示例:统计每个职位的员工数量:
SELECT position, COUNT(*) AS num_employees
FROM employees
GROUP BY position
HAVING COUNT(*) > 1;
9. 子查询(Subqueries)
子查询是在查询中嵌套另一个查询,用于复杂的查询操作。
示例:查询员工数量大于 10 的部门:
SELECT department_name
FROM departments
WHERE (SELECT COUNT(*)
FROM employees
WHERE employees.department_id = departments.department_id) > 10;
10. 视图:CREATE VIEW
VIEW
是一个虚拟表,基于 SQL 查询生成,可以像表一样进行查询。视图可以简化复杂的查询,提升可读性。
示例:创建一个显示高薪员工的视图:
CREATE VIEW high_salary_employees AS
SELECT name, salary
FROM employees
WHERE salary > 10000;
11. 事务控制:BEGIN
, COMMIT
, ROLLBACK
事务确保一组操作要么全部执行成功,要么全部回滚到操作前的状态。主要的事务控制命令包括:
BEGIN TRANSACTION
:启动事务。COMMIT
:提交事务,确认更改。ROLLBACK
:回滚事务,撤销更改。
示例:在事务中更新两张表,确保数据一致性:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;
12. 索引:CREATE INDEX
索引用于加速查询,提高数据检索的速度。常用于查询频繁的列。
示例:为 employees
表的 name
列创建索引:
CREATE INDEX idx_name ON employees(name);
SQL 是数据管理的核心语言,掌握常用的 SQL 语法对于数据库开发与维护至关重要。本文介绍了从数据查询、插入、更新、删除,到更复杂的连接、分组、子查询等操作,帮助读者全面了解SQL的基本功能。SQL 在实际应用中非常灵活,可以用于复杂的数据操作和分析,是每个开发者和数据工程师必备的技能。