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 在实际应用中非常灵活,可以用于复杂的数据操作和分析,是每个开发者和数据工程师必备的技能。