MySQL复杂SQL查询:单表操作详解

4 下载量 120 浏览量 更新于2024-08-30 收藏 81KB PDF 举报
"MySQL常用SQL语句总结,涵盖复杂查询,包括单表查询、大小比较、确定范围、IN和NOT IN操作等。" 在数据库管理中,SQL(结构化查询语言)是用于与关系型数据库交互的语言。MySQL作为一款广泛使用的开源数据库系统,其SQL语法是开发者必须掌握的基础。本文将对MySQL的一些常见SQL语句进行总结,特别是涉及复杂查询的部分。 1. **复杂SQL查询** - **单表查询** - **选择指定列**:你可以通过`SELECT`关键字来选择想要显示的列,例如查询全体学生的学号和姓名: ```sql SELECT Sno AS 学号, Sname AS 姓名 FROM student; ``` 或者不指定别名: ```sql SELECT Sno, Sname FROM student; ``` - **查询全部列**:如果需要获取表中的所有列,可以使用星号`*`: ```sql SELECT * FROM student; ``` - **列的别名和计算**:可以为列指定别名,并进行简单的计算,如计算出生年份: ```sql SELECT Sname AS 姓名, (2014 - Sage) AS 出生年 FROM student; ``` - **消除重复行**:使用`DISTINCT`关键字去除重复行,如查询选修了课程的学生唯一学号: ```sql SELECT DISTINCT Sno AS '选修了课程的学生学号' FROM SC; ``` - **大小比较** - 可以根据条件筛选数据,例如查询计算机系(IS)全体学生名单: ```sql SELECT Sname AS '学生姓名' FROM student WHERE Sdept = 'IS'; ``` - 查询全体20岁以下的学生姓名和年龄: ```sql SELECT Sname AS '姓名', Sage AS '年龄' FROM student WHERE Sage < 20; ``` - **确定范围** - 使用`BETWEEN`关键字可以查询指定范围内的数据,例如查询20到23岁(含20和23)的学生信息: ```sql SELECT Sname AS '姓名', Sdept AS '系别', Sage AS '年龄' FROM student WHERE Sage BETWEEN 20 AND 23; ``` - **IN和NOT IN操作** - `IN`用于查询在特定集合内的数据,例如查询IS系和CS系学生姓名和性别: ```sql SELECT Sname AS '姓名', Ssex AS '性别' FROM student WHERE Sdept IN ('IS', 'CS'); ``` - 而`NOT IN`则用于查询不在特定集合内的数据,例如查询既不属于IS系,也不属于MA系的学生姓名和年龄: ```sql SELECT Sname AS '姓名', Sage AS '年龄' FROM student WHERE Sdept NOT IN ('IS', 'MA'); ``` 这些SQL语句构成了MySQL查询的基础,熟练掌握它们能帮助你有效地处理和分析数据。在实际应用中,还可以结合`ORDER BY`进行排序,`GROUP BY`进行分组,`HAVING`过滤分组后的结果,以及`JOIN`操作连接多个表,实现更复杂的查询需求。了解并灵活运用这些语句,将极大地提升你的数据库操作能力。