初识SQL
- 游戏开发
- 2025-09-22 00:33:01

SQL
定义:SQL(Structured Query Language,结构化查询语言)是一种标准化的数据库操作语言,广泛用于关系数据库管理系统(RDBMS),如 MySQL、PostgreSQL 等。它支持数据的定义(DDL)、操作(DML)和控制(DCL)。
作用:
DDL(Data Definition Language):定义和管理数据库结构(如 CREATE TABLE)。DML(Data Manipulation Language):操作数据(如 SELECT、INSERT)。DCL(Data Control Language):控制访问权限(如 GRANT、REVOKE)。优点 描述性强:SQL 使用声明式语句,用户只需指定“想要什么”,无需关心底层实现。例如:SELECT name FROM students WHERE age > 18;。非过程化语言:SQL 不支持循环或条件分支(如 if-else),但可以通过子查询和连接实现复杂逻辑。跨平台性(补充):SQL 是 ANSI/ISO 标准,大多数 RDBMS 支持核心语法,具有良好的可移植性。
SQL 的五种主要用途 更新数据(Update): 示例:UPDATE employees SET salary = salary * 1.1 WHERE dept_id = 3;含义:将部门 3 的员工薪资提高 10%。 读取数据(Read): 示例:SELECT name, age FROM students WHERE age BETWEEN 18 AND 25 ORDER BY age;含义:查询 18-25 岁学生的姓名和年龄,并按年龄排序。 写入数据(Write): 示例:INSERT INTO orders (order_id, customer_id, date) VALUES (1001, 5, '2025-03-01');含义:插入一条订单记录。 删除数据: 示例:DELETE FROM users WHERE last_login < '2024-01-01';含义:删除超过一年的未登录用户。 结构管理: 示例:CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR(50), price DECIMAL(10,2));含义:创建商品表。
工作中会使用 SQL 的职业 通用职业: 后端开发人员:编写 API 时使用 SQL 查询数据库,如 SELECT * FROM orders WHERE status = 'pending';。数据科学家:结合 SQL 和 Python(如 pandas)分析数据,例如:SELECT AVG(salary) FROM employees GROUP BY dept_id;。 数据管理员(DBA): 性能优化:创建索引,如 CREATE INDEX idx_name ON employees(name);。备份与恢复:使用 BACKUP DATABASE db_name TO DISK = 'path';(SQL Server 示例)。权限管理:GRANT SELECT ON customers TO analyst_role;。
流行的 SQL 数据库系统 SQL Server:支持 T-SQL(扩展 SQL),适用于企业级高可用性场景。 示例:SELECT TOP 5 * FROM sales ORDER BY amount DESC;(查询销售额前 5)。 PostgreSQL:支持 JSON 和高级索引,适合复杂查询。 示例:SELECT * FROM users WHERE data->>'age' > '25';(查询 JSON 字段)。 MySQL:优化了高并发读写,常见于 Web 应用。 示例:SELECT COUNT(*) FROM logs WHERE date = CURDATE();(统计今日日志)。 SQLite:无服务器架构,适合嵌入式系统。 示例:SELECT * FROM contacts LIMIT 10;(查询前 10 条记录)。
深入内容:SQL 查询示例 连接查询:SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id = d.id WHERE e.salary > 50000; 含义:查询薪资超过 5 万的员工及其部门名称。 子查询:SELECT name FROM students WHERE class_id IN (SELECT id FROM classes WHERE teacher = 'Smith'); 含义:查询 Smith 老师班级的学生。 聚合函数:SELECT dept_id, AVG(salary) as avg_salary FROM employees GROUP BY dept_id HAVING AVG(salary) > 60000; 含义:查询平均薪资超过 6 万的部门。