MySQL DQL详解:等值与非等值连接查询

需积分: 16 3 下载量 138 浏览量 更新于2024-08-15 收藏 1.66MB PPT 举报
在Mysql的DQL学习中,数据查询是数据库操作的核心部分,它包括对单表和多表的查询。本课程由讲师陈璇讲解,旨在帮助学习者掌握MySQL查询语句,特别是等值和非等值的连接查询。 DQL(Data Query Language)是用于从数据库中提取数据的语言,其中最常用且最重要的语句是SELECT语句。SELECT语句的基本结构包括选择要查询的列、指定数据来源的表以及可能的筛选、分组、排序和限制条件。例如: ```sql SELECT [ALL | DISTINCT] {*, table.* | [table.field1[as alias1], table.field2[as alias2], …]} FROM table_name [as table_alias] [left | outer | inner JOIN table_name2] [WHERE …] # 指定结果需满足的条件 [GROUP BY …] # 指定结果按照哪几个字段来分组 [HAVING …] # 过滤分组的记录必须满足的次要条件 [ORDER BY …] # 指定查询记录按一个或者多个条件排序 [LIMIT {[offset,] row_count | row_count OFFSET offset}]; ``` 等值连接查询是指在多表查询时,通过特定的字段将两个或多个表关联起来,只返回这些字段相等的记录。例如,要从`subject`和`grade`两个表中查询课程名称和所属年级名称,可以使用等值连接: ```sql SELECT SubjectName, GradeName FROM subject, grade WHERE subject.GradeID = grade.GradeID; ``` 而非等值连接查询,也称为交叉连接,不设置任何连接条件,返回的是两个表所有记录的笛卡尔积。这通常不是我们期望的结果,因为它会返回大量的重复组合。例如: ```sql SELECT SubjectName, GradeName FROM subject, grade; ``` 这条语句会返回所有`subject`和`grade`表的组合,记录数为两表记录数的乘积。 了解了等值和非等值连接查询后,可以结合其他SQL元素,如WHERE子句进行条件筛选,GROUP BY和HAVING子句进行分组和条件过滤,ORDER BY子句进行排序,以及LIMIT子句进行结果限制,实现更复杂的查询需求。例如,只查询`student`表中的前10条记录: ```sql SELECT * FROM student LIMIT 10; ``` 掌握DQL和不同类型的连接查询是进行有效数据库管理的关键技能。通过熟练运用这些知识,你可以从数据库中获取所需的信息,支持业务分析和决策制定。