MySQL多表数据记录查询(一)

1.交叉连接SQL语句的语法结构如下:

select * from 表1 cross join 表2;

Select * from 表1,表2;

2.内连接SQL语句有两种表示形式:

使用inner join 语法结构如下:

Select 表达式1,表达式2,...,表达式n

From 表1 【inner】join 表2

On 连接条件

【where过滤条件】;

使用where字句定义连接条件语法结构如下:

Select 表达式1,表达式2,...,表达式n

From 表1,表2

Where 连接条件【and过滤条件】;

主要参数说明:

       表达式1,表达式2,...表达式n :表示为需要检索的名称或列名。

       表1和表2 :是进行内连接的表名。

       连接条件 :连接查询中用来连接两个表的条件。

                  一般格式是:表名1.字段名1 比较运算符 表名2.字段名2

                 比较运算符主要有:=,<,>,>=,<=,当比较运算符为“=”时表示

                 等值连接,其他则为非等值连接

 

1:查询学生表与成绩表的交叉连接:

在库db_school下创建tb_class、tb_student、tb_course、tb_score四张表

show databases;

use db_school;

show tables;

select * from tb_student cross join tb_score;

或

Select * from tb_student,tb_score;

 

 

2:查询每个学生选修课程的情况:

Select tb_student.*,tb_score.* from tb_student,tb_score

Where tb_student.studentNo=tb_score.studentNo;

或

Select tb_student.*,tb_score.* b

From tb_student inner join tb_score

On tb_student.studentNo=tb_score.studentNo;

 

 

3:查询与“数据库”这门课学分相同的课程信息:

Select c1.*  //c1表示tb_course的别名//

From tb_course as c1,tb_course as c2

Where c1.credit=c2.credit and c2.courseNa=’数据库’;

或

Select c1.*

From tb_course as c1 join tb_course as c2

On c1.credit=c2.credit

Where c2.courseName=’数据库’;

 

4:用自然连接查询每个学生及其选修课程的情况,要求显示每个学生学号、姓名、选修的课程号和成绩;

Select a.studentNo,studentName,courseNo,score

From tb_student as a natural join tb_score as b;

 

注意:自然连接只有当连接字段在两张表中的字段名都相同才可以使用,否则返回的就是笛卡儿积的结果集!

 

5:使用左外连接查询所有学生及其选修课程的情况,包括没有有选修课程的学生,要求显示学号、姓名、性别、班号、选修的课程号和成绩:

向学生表中插入一条数据:

Insert into tb_student b

Values(‘2013310102’,’林海’,’男’,’19960118’,’北京’,’满’,’IS1301’);

然后进行左连接查询:

Select a.studentNo,studentName,sex,classNo,courseNo,score

From tb_student as a left outer join tb_score as b

On a.studentNo=b.studentNo;

 

 

6:使用右外连接查询所有学生及其选修课程的情况,包括没有有选修课程的学生,要求显示学号、姓名、性别、班号、选修的课程号和成绩:

Select courseNo,score,b.studentNo,studentName,sex,classNo

From tb_score as a right outer join tb_student as b

On a.studentNo=b.studentNo;

 

连接查询?

  连接查询是关系数据库中重要的查询方式,其包括交叉连接,内连接和外连接。

什么是笛卡儿积?

  就是没有连接条件表关系返回的结果。

自连接和自然连接的区别?

  自然连接操作就是表关系的笛卡儿积中,首先根据表关系中相同名称的字段自动进行记录匹配,然后去掉重复的字段

等值与非等值连接的区别

  一个选择所匹配字段值相等的数据记录一个不相等
连接条件及其格式是怎么样的?
  字段数据所要达成的效果,内连接、外连接、交叉连接,自然连接、自连接,等值连接、不等连接,
  左连接、右连接、全外连接
外连接根据连接表的顺序分为几种?它们有什么区别?
  左 连 接:连接于第一个为主
  右 连 接:连接于第二个为主
  全外连接:除了选择相匹配的数据记录,还包含关联左右两边表中不匹配的数据记录

MySQL多表数据记录查询(一)

上一篇:Error setting non null for parameter #1 with JdbcType null .无效的列类型(Oracle)


下一篇:MySQL创建用户