SQL 简介

SQL(结构化查询语言,Structured Query Language)是一种用于管理和操作关系型数据库的标准语言。它被广泛应用于各类数据库管理系统(如 MySQL、Oracle、SQL Server、PostgreSQL、SQLite 等)中。SQL 使得开发者可以通过简单的命令对数据库中的数据进行查询、插入、更新和删除等操作。

SQL 的作用:

  • 查询数据:从数据库中检索数据。
  • 插入、更新和删除数据:对数据库中的记录进行修改。
  • 数据库管理:创建、修改和删除数据库、表、视图等数据库对象。
  • 权限控制:授予或撤销用户对数据库的访问权限。

SQL 是关系型数据库的核心语言,能够帮助开发者高效管理和操控数据。通过 SQL,用户不仅能执行常见的 CRUD(增、删、改、查)操作,还能进行更复杂的数据分析、事务管理、权限控制等操作。


SQL 语法

SQL 语法涉及多种语句,按功能可以分为以下几类:

1. 数据查询语言(DQL)

数据查询语言主要用于从数据库中查询数据,常用的 DQL 命令就是 SELECT

SELECT 语句

SELECT 是 SQL 中最常用的查询语句,允许用户从一个或多个表中提取数据。它的基本语法如下:

sql
SELECT column1, column2, ...
FROM table_name;

解释:

  • SELECT:指定要查询的列。
  • FROM:指定数据来源的表。

示例: 查询 employees 表中的所有列数据:

sql
SELECT * FROM employees;

查询 employees 表中 namesalary 两列的数据:

sql
SELECT name, salary FROM employees;
WHERE 子句

WHERE 子句用于对查询的结果进行过滤,只返回符合条件的记录。它用于指定条件语句。

sql
SELECT column1, column2
FROM table_name
WHERE condition;

示例: 查询所有 salary 大于 50000 的员工:

sql
SELECT name, salary
FROM employees
WHERE salary > 50000;
ORDER BY 子句

ORDER BY 子句用于对查询结果按指定列进行排序,默认升序排列。如果想要降序排列,使用 DESC

sql
SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC | DESC];

示例: 查询 employees 表,按 salary 降序排列:

sql
SELECT name, salary
FROM employees
ORDER BY salary DESC;
LIMIT 子句

LIMIT 用于限制返回的结果行数。它常用于分页查询。

sql
SELECT column1, column2
FROM table_name
LIMIT number;

示例: 查询 employees 表中的前 5 行数据:

sql
SELECT * FROM employees
LIMIT 5;

2. 数据定义语言(DDL)

数据定义语言用于定义数据库中的结构,诸如创建、修改或删除表等操作。

CREATE DATABASE

CREATE DATABASE 用于创建一个新的数据库。

sql
CREATE DATABASE database_name;

示例: 创建一个名为 company_db 的数据库:

sql
CREATE DATABASE company_db;
CREATE TABLE

CREATE TABLE 用于创建新的表,并定义表的列及其数据类型。

sql
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
);

示例: 创建一个 employees 表,包含 id, name, salary 等字段:

sql
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
ALTER TABLE

ALTER TABLE 用于修改表的结构,如添加、删除或修改列。

sql
ALTER TABLE table_name
ADD column_name datatype;

示例:employees 表中添加 address 列:

sql
ALTER TABLE employees
ADD address VARCHAR(255);
DROP TABLE

DROP TABLE 用于删除一个表及其数据。

sql
DROP TABLE table_name;

示例: 删除 employees 表:

sql
DROP TABLE employees;

3. 数据操作语言(DML)

数据操作语言用于操作表中的数据,主要包括插入、更新和删除记录。

INSERT INTO

INSERT INTO 用于向表中插入新记录。

sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

示例:employees 表插入一条记录:

sql
INSERT INTO employees (id, name, salary)
VALUES (1, 'Alice', 50000);
UPDATE

UPDATE 用于修改表中现有记录的值。

sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

示例:Alice 的工资更新为 60000:

sql
UPDATE employees
SET salary = 60000
WHERE name = 'Alice';
DELETE

DELETE 用于删除表中的一条或多条记录。

sql
DELETE FROM table_name
WHERE condition;

示例: 删除所有工资低于 30000 的员工:

sql
DELETE FROM employees
WHERE salary < 30000;

4. 数据控制语言(DCL)

数据控制语言用于控制数据库用户的访问权限。

GRANT

GRANT 用于授予数据库用户权限。

sql
GRANT privilege_type ON object TO user;

示例: 授予用户 johnemployees 表的 SELECT 权限:

sql
GRANT SELECT ON employees TO john;
REVOKE

REVOKE 用于撤销之前授予用户的权限。

sql
REVOKE privilege_type ON object FROM user;

示例: 撤销用户 johnemployees 表的 SELECT 权限:

sql
REVOKE SELECT ON employees FROM john;

5. 事务控制语言(TCL)

事务控制语言用于控制事务的执行,确保数据的一致性和完整性。

COMMIT

COMMIT 用于提交事务,使事务中的所有操作生效。

sql
COMMIT;

示例: 提交一个事务:

sql
COMMIT;
ROLLBACK

ROLLBACK 用于回滚事务,撤销事务中的所有操作。

sql
ROLLBACK;

示例: 回滚一个事务:

sql
ROLLBACK;
SAVEPOINT

SAVEPOINT 用于设置一个保存点,允许在事务中部分回滚。

sql
SAVEPOINT savepoint_name;

示例: 设置一个保存点:

sql
SAVEPOINT savepoint1;

常见 SQL 语句示例

1. 查询所有记录:

sql
SELECT * FROM employees;

2. 查询特定列:

sql
SELECT name, salary FROM employees;

3. 使用条件查询:

sql
SELECT * FROM employees WHERE salary > 50000;

4. 排序查询:

sql
SELECT name, salary FROM employees ORDER BY salary DESC;

5. 使用聚合函数:

sql
SELECT AVG(salary) FROM employees;

6. 多表连接查询:

sql
SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

7. 插入数据:

sql
INSERT INTO employees (name, age, salary)
VALUES ('Bob', 28, 45000);

8. 更新数据:

sql
UPDATE employees SET salary = 60000 WHERE name = 'Alice';

9. 删除数据:

sql
DELETE FROM employees WHERE name = 'Bob';

总结

SQL 是一种功能强大的查询语言,广泛用于管理关系型数据库中的数据。SQL 的语法简洁且直观,能高效地进行数据查询、插入、更新和删除等操作。此外,SQL 也允许开发者管理数据库结构、控制权限以及保证数据一致性和完整性。掌握 SQL 语言是任何数据库开发人员或数据分析人员必不可少的技能。