MySQL中的关联查询
(1)Question:关联是什么
关联是SQL语言中使用SELECT操作表的一种操作机制,用来联系两个或者多个表。SELECT是SQL中的查询语句,用于查询数据库中的数据。将SELECT与关联结合,就产生了关联查询。
(2)Question :为什么要使用关联
假设一个班级有30名学生,每个学生都有自己的姓名、学号、班级、班主任等这些属性,可以发现,姓名学号是每个学生独有的,而班级、班主任、班主任电话等等信息是学生们共有的。现在如果要将这个班级的信息存储在数据库中,那么有两种存储方式。
① 建一张表,将数据都存在这一张表中,如下。
班级 | 班主任 | 班主任电话 | 学生姓名 | 学号 |
---|---|---|---|---|
六年一班 | 阿福 | 13131313131 | 小夫 | 1 |
六年一班 | 阿福 | 13131313131 | 大熊 | 2 |
六年一班 | 阿福 | 13131313131 | 静香 | 3 |
② 建多张表,将数据归类后存放,如下。
(1)
班级 | 班主任 | 班主任电话 |
---|---|---|
六年一班 | 阿福 | 13131313131 |
(2)
学生姓名 | 学号 | 班级 |
---|---|---|
小夫 | 1 | 六年一班 |
大熊 | 2 | 六年一班 |
静香 | 3 | 六年一班 |
为了方便说明,就不写30个学生信息了。可以发现,将数据都存放在一张表中,可以提高读表的可读性,但是开发者就会很麻烦,因为表中的前三列信息是一模一样的。如果有30条数据时,开发者就必须重复的填入相同的信息,麻烦又会出错。反观方法②,就对开发者十分友好,只有1列在重复。并且方法②的优势还在于,假设老师换手机号码了,只需要修改表(1)中的手机号,而不用像方法①中一个一个去修改。方法②如此便利,那么我们对这样的表进行查询呢?
(3)Question:如何使用关联查询?
现在我们在实际的数据库中设计两个表,为了SQL操作方便,我们将列的键都设置成英文字母。
(1)班级信息建表代码
CREATE TABLE `classinfo` (
`class` varchar(255) DEFAULT NULL,
`teacher` varchar(255) D