SQL(结构化查询语言)是用于管理关系型数据库的标准语言,掌握其基本命令是进行数据操作的核心技能,SQL基本命令主要分为数据查询语言(DQL)、数据操作语言(DML)、数据定义语言(DDL)、数据控制语言(DCL)四大类,每种类型下包含若干关键命令,共同构成了数据库交互的基础框架。

数据查询语言(DQL)的核心命令是SELECT,用于从数据库中检索数据,其基本语法为SELECT 字段名 FROM 表名 WHERE 条件 GROUP BY 分组字段 HAVING 分组条件 ORDER BY 排序字段 LIMIT 记录数。SELECT name, age FROM users WHERE age > 18 ORDER BY age DESC LIMIT 10表示从users表中查询年龄大于18的所有用户的姓名和年龄,按年龄降序排列并返回前10条记录。SELECT命令支持通配符(表示所有字段)、聚合函数(如COUNT()计数、SUM()求和、AVG()平均值、MAX()最大值、MIN()最小值)以及多表连接查询(通过JOIN关键字实现,如INNER JOIN内连接、LEFT JOIN左连接等),是数据库使用频率最高的命令。
数据操作语言(DML)用于对数据库中的数据进行增删改操作。INSERT命令用于插入数据,语法为INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2),若插入所有字段,可省略字段列表直接写VALUES。UPDATE命令用于更新数据,语法为UPDATE 表名 SET 字段1=新值1, 字段2=新值2 WHERE 条件,需注意WHERE子句不可省略,否则会更新全表数据。DELETE命令用于删除数据,语法为DELETE FROM 表名 WHERE 条件,同样需通过WHERE限制删除范围,避免误删全表。UPDATE products SET price=price*0.9 WHERE category='electronics'会将电子产品类别所有商品价格打九折。
数据定义语言(DDL)用于定义和管理数据库结构。CREATE命令用于创建数据库对象,如CREATE DATABASE 数据库名创建数据库,CREATE TABLE 表名 (字段1 数据类型 约束, 字段2 数据类型 约束)创建表,约束包括PRIMARY KEY主键、FOREIGN KEY外键、NOT NULL非空、UNIQUE唯一、DEFAULT默认值等。ALTER命令用于修改表结构,如ALTER TABLE 表名 ADD COLUMN 新字段 数据类型添加列,ALTER TABLE 表名 DROP COLUMN 字段名删除列,ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型修改列数据类型。DROP命令用于删除对象,如DROP TABLE 表名删除表,DROP DATABASE 数据库名删除数据库,操作不可逆,需谨慎使用。
数据控制语言(DCL)用于管理数据库的访问权限。GRANT命令用于授予权限,语法为GRANT 权限 ON 数据库对象 TO 用户名 [IDENTIFIED BY '密码'] WITH GRANT OPTION,权限包括SELECT、INSERT、UPDATE、DELETE等,WITH GRANT OPTION表示允许用户将权限转授给其他用户。REVOKE命令用于撤销权限,语法为REVOKE 权限 ON 数据库对象 FROM 用户名。GRANT SELECT, INSERT ON employees TO manager@localhost会授予本地用户manager对employees表的查询和插入权限。

以下为常用SQL命令的总结表:
| 命令类型 | 关键字 | 主要功能 | 示例 |
|---|---|---|---|
| DQL | SELECT | 查询数据 | SELECT * FROM users WHERE status='active' |
| DML | INSERT | 插入数据 | INSERT INTO orders (user_id, product_id) VALUES (1001, 2003) |
| DML | UPDATE | 更新数据 | UPDATE products SET stock=stock-1 WHERE id=2003 |
| DML | DELETE | 删除数据 | DELETE FROM logs WHERE create_time < '2023-01-01' |
| DDL | CREATE | 创建对象 | CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50)) |
| DDL | ALTER | 修改结构 | ALTER TABLE users ADD COLUMN email VARCHAR(100) |
| DDL | DROP | 删除对象 | DROP TABLE temp_data |
| DCL | GRANT | 授权 | GRANT ALL PRIVILEGES ON TO admin@'%' |
| DCL | REVOKE | 撤权 | REVOKE DELETE FROM sales FROM user1@localhost |
在实际应用中,SQL命令需结合具体数据库系统(如MySQL、PostgreSQL、SQL Server等)的语法变体使用,例如分页查询在MySQL中使用LIMIT,而Oracle使用ROWNUM,事务控制(BEGIN、COMMIT、ROLLBACK)虽不属于基本命令范畴,但与DML配合使用,可确保数据操作的原子性和一致性,是数据库开发中不可或缺的部分。
相关问答FAQs
-
Q:
SELECT语句中的GROUP BY和HAVING有什么区别?
A:GROUP BY用于将查询结果按指定字段分组,通常与聚合函数配合使用,如SELECT department, COUNT(*) FROM employees GROUP BY department会按部门分组并统计每个部门的人数;而HAVING用于对分组后的结果进行筛选,类似于WHERE作用于单行数据,HAVING作用于分组,例如SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10只会返回员工数超过10的部门。
(图片来源网络,侵删) -
Q:
UPDATE和DELETE命令如果不加WHERE子句会发生什么?
A: 如果UPDATE或DELETE命令省略WHERE子句,将对目标表中的所有数据进行操作。UPDATE会更新全表所有记录的指定字段为相同值,可能导致数据错乱;DELETE会删除表中的所有数据,但保留表结构,这两种操作风险极高,实际使用中必须通过WHERE明确限定操作范围,或在执行前备份数据。
