在数据库操作中,SQL 语句是与数据库交互的重要工具。无论是数据查询、添加、修改还是删除,都离不开各种 SQL 语句。本文将对常用的 SQL 语句进行系统整理,方便大家学习和查阅。
一、SQL 基本概念
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它可以对数据库进行查询、插入、更新、删除等操作,也可以用于创建、修改和删除数据库对象(如数据库、表等)。
二、数据查询语句(SELECT)
SELECT 语句是 SQL 中最常用的语句之一,用于从数据库表中查询数据。
1. 查询所有字段
语法:SELECT * FROM 表名;
说明:*代表表中的所有字段。
示例:查询student表中的所有字段
SELECT * FROM student;
2. 查询指定字段
语法:SELECT 字段1, 字段2, ... FROM 表名;
说明:字段之间用逗号分隔,用于指定需要查询的字段。
示例:查询student表中的id和name字段
SELECT id, name FROM student;
3. 带条件的查询(WHERE 子句)
语法:SELECT 字段列表 FROM 表名 WHERE 条件;
说明:WHERE 子句用于指定查询条件,只有满足条件的记录才会被查询出来。
- 常用运算符:
-
- 比较运算符:=(等于)、!=或<>(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
-
- 逻辑运算符:AND(与)、OR(或)、NOT(非)
-
- 特殊运算符:IN(在指定集合中)、BETWEEN...AND(在指定范围内)、LIKE(模糊匹配)
示例:
- 查询student表中年龄大于 18 的学生信息
SELECT * FROM student WHERE age > 18;
- 查询student表中年龄在 18 到 22 之间的学生信息
SELECT * FROM student WHERE age BETWEEN 18 AND 22;
- 查询student表中姓名包含 “张” 的学生信息(%代表任意字符)
SELECT * FROM student WHERE name LIKE '%张%';
- 查询student表中姓名以 “李” 开头且长度为 2 的学生信息(_代表单个字符)
SELECT * FROM student WHERE name LIKE '李_';
4. 排序查询(ORDER BY)
语法:SELECT 字段列表 FROM 表名 [WHERE 条件] ORDER BY 字段名 [ASC|DESC];
说明:ASC表示升序(默认),DESC表示降序。
示例:查询student表中所有学生信息,按年龄降序排列
SELECT * FROM student ORDER BY age DESC;
5. 分组查询(GROUP BY)
语法:SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 字段名 [HAVING 条件];
说明:GROUP BY用于将数据按指定字段分组,HAVING用于对分组后的结果进行筛选(与WHERE的区别是HAVING可以使用聚合函数)。
示例:查询student表中各班级的学生人数,且人数大于 30
SELECT class, COUNT(*) AS student_count FROM student GROUP BY class HAVING student_count > 30;
三、数据操纵语句
1. 插入数据(INSERT)
- 插入一条数据
语法:INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
示例:向student表中插入一条学生信息
INSERT INTO student (id, name, age, class) VALUES (1, '张三', 18, '高一(1)班');
- 插入多条数据
语法:INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
示例:向student表中插入多条学生信息
INSERT INTO student (id, name, age, class) VALUES (2, '李四', 19, '高一(2)班'), (3, '王五', 18, '高一(1)班');
2. 更新数据(UPDATE)
语法:UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2, ... [WHERE 条件];
说明:若不添加WHERE条件,将更新表中所有记录,使用时需谨慎。
示例:将student表中 id 为 1 的学生年龄更新为 19
UPDATE student SET age = 19 WHERE id = 1;
3. 删除数据(DELETE)
语法:DELETE FROM 表名 [WHERE 条件];
说明:若不添加WHERE条件,将删除表中所有记录。DELETE与TRUNCATE的区别:TRUNCATE会删除表中所有记录并重置自增列,而DELETE可以删除指定记录,且TRUNCATE的执行效率更高,但不能回滚。
示例:删除student表中 id 为 3 的学生信息
DELETE FROM student WHERE id = 3;
四、数据定义语句
1. 创建数据库(CREATE DATABASE)
语法:CREATE DATABASE 数据库名;
示例:创建名为school的数据库
CREATE DATABASE school;
2. 创建表(CREATE TABLE)
语法:CREATE TABLE 表名 (字段1 数据类型 约束, 字段2 数据类型 约束, ...);
常见数据类型:INT(整数)、VARCHAR(n)(字符串,n 为长度)、DATE(日期)、TIME(时间)、DATETIME(日期时间)等。
常见约束:PRIMARY KEY(主键)、NOT NULL(非空)、UNIQUE(唯一)、FOREIGN KEY(外键)等。
示例:创建student表
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
age INT,class VARCHAR(20));
3. 修改表结构(ALTER TABLE)
- 添加字段
语法:ALTER TABLE 表名 ADD 字段名 数据类型 约束;
示例:向student表中添加gender字段
ALTER TABLE student ADD gender VARCHAR(2);
- 修改字段类型
语法:ALTER TABLE 表名 MODIFY 字段名 新数据类型;
示例:将student表中age字段的类型修改为VARCHAR(3)
ALTER TABLE student MODIFY age VARCHAR(3);
- 删除字段
语法:ALTER TABLE 表名 DROP 字段名;
示例:删除student表中的gender字段
ALTER TABLE student DROP gender;
4. 删除数据库或表(DROP)
- 删除数据库
语法:DROP DATABASE 数据库名;
示例:删除school数据库
DROP DATABASE school;
- 删除表
语法:DROP TABLE 表名;
示例:删除student表
DROP TABLE student;
五、数据控制语句
1. 授予权限(GRANT)
语法:GRANT 权限 ON 数据库对象 TO 用户;
示例:授予用户user1对student表的查询权限
GRANT SELECT ON student TO user1;
2. 收回权限(REVOKE)
语法:REVOKE 权限 ON 数据库对象 FROM 用户;
示例:收回用户user1对student表的查询权限
REVOKE SELECT ON student FROM user1;
六、常用函数
1. 聚合函数
- COUNT(字段):统计记录数
- SUM(字段):计算字段值的总和
- AVG(字段):计算字段值的平均值
- MAX(字段):获取字段值的最大值
- MIN(字段):获取字段值的最小值
示例:查询student表中学生的总人数
SELECT COUNT(*) FROM student;
2. 字符串函数
- CONCAT(字符串1, 字符串2, ...):拼接字符串
- LENGTH(字符串):获取字符串长度
- UPPER(字符串):将字符串转换为大写
- LOWER(字符串):将字符串转换为小写
示例:将student表中name字段的值转换为大写
SELECT UPPER(name) FROM student;
3. 日期函数
- NOW():获取当前日期时间
- CURDATE():获取当前日期
- CURTIME():获取当前时间
- DATE_FORMAT(日期, 格式):格式化日期
示例:获取当前日期时间
SELECT NOW();
七、使用 SQL 语句的注意事项
- SQL 语句不区分大小写,但为了规范,关键字通常大写。
- 每条 SQL 语句以分号结尾。
- 使用UPDATE和DELETE语句时,一定要谨慎添加WHERE条件,避免误操作。
- 创建表时,合理设置字段的数据类型和约束,保证数据的完整性和一致性。
- 复杂的查询可以使用别名简化语句,提高可读性。
以上就是常用 SQL 语句的整理,希望能对大家的学习和工作有所帮助。在实际应用中,还需要根据具体需求灵活运用这些语句。