您的当前位置:首页正文

mysql多表查询练习

2023-11-13 来源:要发发知识网
导入hellodb.sql生成数据库,并进入到数据库之中

mysql -uroot < hellodb.sqluse mysql

(1)以ClassID分组,显示每班的同学的人数`select classid,count(stuid) from students group by classid``技术图片(2)以Gender分组,显示其年龄之和select gender,sum(age) from students group by gender技术图片(3)以ClassID分组,显示其平均年龄大于25的班级select classid,avg(age) as new_age from students group by classid having new_age>25技术图片(4)以Gender分组,显示各组中年龄大于25的学员的年龄之和select gender,sum(age) from students group by gender技术图片(5)显示前5位同学的姓名、课程及成绩select name,course,score from (select name,score,courseid from (select * from students where stuid<=5) as s inner join scores on scores.stuid=s.stuid)as t inner join courses on courses.courseid=t.courseid

(6)显示其成绩高于80的同学的名称及课程select name,course from (select name,score,courseid from (select from scores where Score>80) as t inner join students on students.stuid=t.stuid) as t inner join courses on courses.courseid=t.courseid技术图片(7)求前8位同学每位同学自己两门课的平均成绩,并按降序排列select t.stuid,avg(score) from (select stuid,courseid from (select from students where stuid<=8) as s inner join coc on s.classid=coc.classid) as t inner join scores on s cores.stuid=t.stuid group by t.stuid技术图片(8)取每位同学各门课的平均成绩,显示成绩前三名的同学的姓名和平均成绩select name,avg(score) as 平均分数 from (select name,courseid from students inner join coc on students.classid=coc.classid) as s inner join scores on s.courseid=scores.courseid group by stuid order by 平均分数 desc limit 3技术图片(9)显示每门课程课程名称及学习了这门课的同学的个数select courseid,count(CourseID) from students inner join coc on coc.classid=students.classid group by courseid

(10)显示其年龄大于平均年龄的同学的名字select * from students where age>(select avg(age) from students)

(11)显示其学习的课程为第1、2,4或第7门课的同学的名字select name,courseid from (select * from coc where CourseIDin (‘1‘,‘2‘,‘4‘,‘7‘)) as new inner join students on students.classid=new.classid

(12)显示其成员数最少为3个的班级的同学中年龄大于同班同学平均年龄的同学select * from (select name,classid,age from students) as s inner join (select new.classid,avg(age) as cc from (select classid from students group by ClassID having count(stuid) >= 3) as new inner join students on students.classid=new.classid group by new.classid) as a on a.classid=s.classid where cc<age;

mysql多表查询练习

标签:mit   mys   name   group by   com   ODB   root   查询   http   

小编还为您整理了以下内容,可能对您也有帮助:

“mysql ”多表联合查询语句怎么写?

一使用SELECT子句进行多表查询SELECT 字段名 FROM 表1,表2 … WHERE 表1字段 = 表2字段 AND 其它查询条件SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id

注:在上面的的代码中,以两张表的id字段信息相同作为条件建立两表关联,但在实际开发中不应该这样使用,最好用主外键约束来实现。

1、联合查询可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNION或UNION ALL。联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。

2、在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。

3、在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:查询1 UNION (查询2 UNION 查询3)。

第四题怎么做??mysql 怎么用多表查询where来做??

一使用SELECT子句进行多表查询
SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件
SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id
注:在上面的的代码中,以两张表的id字段信息相同作为条件建立两表关联,但在实际开发中不应该这样使用,最好用主外键约束来实现
二使用表的别名进行多表查询
如:SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id AND b.id='$_POST[textid]'
SQL语言中,可以通过两种方式为表指定别名
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权*,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

第四题怎么做??mysql 怎么用多表查询where来做??

一使用SELECT子句进行多表查询
SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件
SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id
注:在上面的的代码中,以两张表的id字段信息相同作为条件建立两表关联,但在实际开发中不应该这样使用,最好用主外键约束来实现
二使用表的别名进行多表查询
如:SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id AND b.id='$_POST[textid]'
SQL语言中,可以通过两种方式为表指定别名
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权*,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

MYSQL多表联合查询 (4表)

    select * from 表1 inner join 表2 on 关联条件

    select * from 表1 left outer join 表2 on 关联条件

    select * from 表1 right outer join 表2 on 关联条件 

    select * from 表1 cross join 表2 on 关联条件

MYSQL查询

    查询平均成绩大于70分的同学的学号和平均成绩

    SELECT s.id,AVG(sc.score) FROM student s,studentcourse sc WHERE s.id=sc.student_id GROUP BY s.id HAVING  AVG(sc.score)>70;

    查询所有同学的学号、姓名、选课数、总成绩

    SELECT id,NAME

    FROM student

    WHERE id NOT IN (SELECT student_id

    FROM studentcourse

    WHERE course_id IN (SELECT course.id

    FROM teacher,course

    WHERE teacher.id=course.teacher_id

    AND teacher.name=’关羽’));

    查询学生信息和平均成绩

    SELECT s.id,s.name,s.city,s.age, c.name,sc.score,t.name

    FROM student s,studentcourse sc,course c,teacher t

    WHERE s.id=sc.student_id AND c.id=sc.course_id AND c.teacher_id=t.id GROUP BY s.id; 

子查询多表操作,做题思路应该是怎样的?

多表子查询的解题步骤总结起来就是“先主查询,后子查询”,细化就是下面三步骤:
1)分清主表和子表+两表的连接条件【放在括号里面的表就是主表,括号外面的表就是子表】
2)写出主查询 select * from 主表 where 连接字段 in () 【括号是子查询占位符】
3) 写出主查询括号里面的子查询(关键点,得到子查询的所求目标:将题目的结果字段替换成连接字段即可)

正在看黑马程序员软件测试的学习视频,你也可以看下,这些知识都有教的,抽时间就能学!

子查询多表操作,做题思路应该是怎样的?

多表子查询的解题步骤总结起来就是“先主查询,后子查询”,细化就是下面三步骤:
1)分清主表和子表+两表的连接条件【放在括号里面的表就是主表,括号外面的表就是子表】
2)写出主查询 select * from 主表 where 连接字段 in () 【括号是子查询占位符】
3) 写出主查询括号里面的子查询(关键点,得到子查询的所求目标:将题目的结果字段替换成连接字段即可)

正在看黑马程序员软件测试的学习视频,你也可以看下,这些知识都有教的,抽时间就能学!

mysql数据库 多表联合查询 求助

班级表*/CREATE TABLE CLASS_INFO(C_ID INT PRIMARY KEY,CLASS_NAME VARCHAR(20) not NULL)CHARSET = UTF8;

运行效果:

技术分享

新建成功

 

2.1.1依次建好学生表(学生表有一个指向班级表的主键  以便做关联查询)

/*学生表*/CREATE TABLE STUDENTS(STU_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,STU_NAME VARCHAR(20) NOT NULL,STU_AGE INT NOT NULL,C_ID INT references CLASS_INFO(C_ID))CHARSET = UTF8;

 

 2.1.2身份证表(身份证表有一个外键指向学生表的主键 以便做学生—身份证一对一查询)

/*身份证表*/CREATE TABLE STU_CARD(CARD_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,CARD_NUM VARCHAR(30) NOT NULL,STU_ID INT REFERENCES STUDENTS(STU_ID) )CHARSET = UTF8;/*给STU_CARD列添加一个唯一约束 保证身份证跟学生是一对一的关系*/ALTER TABLE STU_CARD ADD UNIQUE (STU_ID);

 

 2.1.3课程表

/*课程表*/CREATE TABLE COURSE( COURSE_ID INT PRIMARY KEY NOT NULL, COURSE_NAME VARCHAR(20) NOT NULL)CHARSET = UTF8;

 

 2.1.4 学生跟课程关联的中间表(多对多需要有一个中间表来维护2张表的关系)

/*关联学生和课程的中间表*/CREATE TABLE COURSE_STU( STU_ID INT references STUDENTS(STU_ID), COURSE_ID INT REFERENCES COURSE(COURSE_ID))CHARSET = UTF8;

 

3.分别插入测试数据

3.1.0给班级表插入测试数据

INSERT INTO CLASS_INFO VALUES (1,‘TEAM01‘);INSERT INTO CLASS_INFO VALUES (2,‘TEAM02‘);INSERT INTO CLASS_INFO VALUES (3,‘TEAM03‘);

 

3.1.1给学生表插入测试数据(学生id,学生姓名,年龄,该学生所在的班级)

INSERT INTO STUDENTS VALUES(1,‘张三‘,12,1);INSERT INTO STUDENTS VALUES(2,‘李四‘,15,3);INSERT INTO STUDENTS VALUES(3,‘王五‘,15,2);INSERT INTO STUDENTS VALUES(4,‘赵六‘,16,2);INSERT INTO STUDENTS VALUES(5,‘小二‘,12,3);

 

3.1.2给身份证表插入测试数据(id,身份证号,身份证所关联的学生)

INSERT INTO STU_CARD VALUES(1,‘1234566543‘,2);INSERT INTO STU_CARD VALUES(2,‘4324543565‘,1);INSERT INTO STU_CARD VALUES(3,‘2345654334‘,3);

 

3.1.3给课程表表插入测试数据(id,课程)

INSERT INTO COURSE VALUES(1,‘语文‘);INSERT INTO COURSE VALUES(2,‘数学‘);INSERT INTO COURSE VALUES(3,‘英语‘);

 

3.1.4给学生—学科中间表插入测试数据(第一列指向学生ID , 第二列指向课程ID)

INSERT INTO COURSE_STU VALUES (1,1);INSERT INTO COURSE_STU VALUES (2,2);INSERT INTO COURSE_STU VALUES (2,3);INSERT INTO COURSE_STU VALUES (3,2);

 

4.查出所有所建的表 以及 插入的数据

SELECT * FROM CLASS_INFO;SELECT * from students;SELECT * FROM STU_CARD;SELECT * from COURSE;SELECT * FROM COURSE_STU;

运行效果:

技术分享技术分享

 

 技术分享技术分享

 

 技术分享

 

5.查询

5.1.1查出班级ID为2的所有学生信息

/* 查出班级ID为2的所有学生信息*/SELECT * FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;

 运行效果:

技术分享

 

5.1.2查询学生表的总记录数

/*查询学生表的总记录数*/SELECT COUNT(*) FROM STUDENTS;

 运行效果:

技术分享

 

5.1.3查询班级id为2的总记录数

/*查询班级id为2的总记录数*/SELECT COUNT(*) FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;

运行效果:

技术分享

 

5.1.4查出班级名称为TEAM01的所有学生信息

/* 查出班级名称为TEAM01的学生信息(班级,姓名,年龄)*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.CLASS_NAME=‘TEAM01‘;

运行效果:

技术分享

 

5.1.5查出所有人以及所在的班级

/*查出所有人以及所在的班级*/SELECT S.STU_NAME, C.CLASS_NAME FROM STUDENTS S LEFT JOIN CLASS_INFO C ON C.C_ID = S.C_ID;

 运行效果:

技术分享

 

5.1.6查询班级ID为2 的所有学生id 姓名 以及年龄

/*查询班级ID为2 的所有学生id 姓名 以及年龄*/SELECT C.C_ID , C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE S.C_ID= 2;

运行效果:

技术分享

 

5.1.7查询班级ID为3 的班级名称 以及学生年龄  降序排列  

/*查询班级ID为3 的班级名称 以及学生年龄 降序排列 升序ASC*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE C.C_ID=3 ORDER BY S.STU_AGE DESC;

 运行效果:

技术分享

 

5.1.8查询ID为1 的学生所在的班级(CLASS_INFO) 姓名 年龄(STUDENTS) 以及 身份证号(STU_CARD) 3表联查

/*查询ID为1 的学生所在的班级(CLASS_INFO) 姓名 年龄(STUDENTS) 以及 身份证号(STU_CARD) 3表联查*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE,CA.CARD_NUM FROM STU_CARD CA LEFT JOIN STUDENTS S ON CA.STU_ID=S.STU_ID LEFT JOIN class_info C ON C.C_ID=S.C_ID WHERE S.STU_ID = 1;

运行效果:

技术分享

 

5.1.9右连接查询每个学生所选的每一门课程  以课程为基准

/*右连接查询每个学生所选的每一门课程 以课程为基准*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;

运行效果:

技术分享

 

5.2.0右连接查询 学生ID 姓名 以及所选的课程

/*右连接查询 学生ID 姓名 以及所选的课程*/SELECT S.STU_ID, S.STU_NAME,C.COURSE_NAME FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;

运行效果:

技术分享

 

5.2.1查询所有学生ID 姓名 年龄(STUDENTS) 以及他所选的课程(3表联查)

/*查询所有学生ID 姓名 年龄(STUDENTS) 以及他所选的课程(3表联查)*/SELECT S.STU_ID , S.STU_NAME,S.STU_AGE, C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;

运行效果:

技术分享

 

5.2.2查询学生id为2的学生姓名 以及他所选的课程

/*查询学生id为2的学生姓名 以及他所选的课程*/SELECT S.STU_NAME,C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID WHERE S.STU_ID = 2;

运行效果:

技术分享

 

5.2.3查询班级id为2 的学生姓名 所选的课程 以及所在的班级名称

/*查询班级id为2 的学生姓名 所选的课程 以及所在的班级名称*/SELECT S.STU_NAME, C.COURSE_NAME,CL.CLASS_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CL ON CL.C_ID=S.C_ID WHERE CL.C_ID=2;

运行效果:

技术分享

 

5.2.4查询所有学生的学生身份证信息,身份证信息,班级信息

/*查询所有学生的学生身份证信息,身份证信息,班级信息*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID;

运行效果:

技术分享

 

5.2.5  4表联查 学生信息,课程信息 班级信息 身份证信息

/*4表联查 学生信息,课程信息 班级信息 身份证信息*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID; 

运行效果:

技术分享

 

5.2.6  5张表联查  查出学生姓名 他所在的班级 所选的课程 以及该学生的身份证号

/*5张表联查 查出学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;

运行效果:

技术分享

 

5.2.7  5张表联查  查出学生ID为2的学生姓名 他所在的班级 所选的课程 以及该学生的身份证号

/*5张表联查 查出学生ID为2的学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID WHERE S.STU_ID=2; 

运行效果: 

 技术分享

 全部建表语句 以及 查询语句如下:

drop TABLE studentsdrop table CLASS_INFOdrop table coursedrop table stu_card;drop table COURSE_STU;/*学生表*/CREATE TABLE STUDENTS(STU_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,STU_NAME VARCHAR(20) NOT NULL,STU_AGE INT NOT NULL,C_ID INT references CLASS_INFO(C_ID))CHARSET = UTF8;/*班级表*/CREATE TABLE CLASS_INFO(C_ID INT PRIMARY KEY,CLASS_NAME VARCHAR(20) not NULL)CHARSET = UTF8;/*身份证表*/CREATE TABLE STU_CARD(CARD_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,CARD_NUM VARCHAR(30) NOT NULL,STU_ID INT REFERENCES STUDENTS(STU_ID) )CHARSET = UTF8;/*给STU_CARD列添加一个唯一约束 保证身份证跟学生是一对一的关系*/ALTER TABLE STU_CARD ADD UNIQUE (STU_ID);/*课程表*/CREATE TABLE COURSE( COURSE_ID INT PRIMARY KEY NOT NULL, COURSE_NAME VARCHAR(20) NOT NULL)CHARSET = UTF8;/*关联学生和课程的中间表*/CREATE TABLE COURSE_STU( STU_ID INT references STUDENTS(STU_ID), COURSE_ID INT REFERENCES COURSE(COURSE_ID))CHARSET = UTF8;INSERT INTO CLASS_INFO VALUES (1,‘TEAM01‘);INSERT INTO CLASS_INFO VALUES (2,‘TEAM02‘);INSERT INTO CLASS_INFO VALUES (3,‘TEAM03‘);INSERT INTO STUDENTS VALUES(1,‘张三‘,12,1);INSERT INTO STUDENTS VALUES(2,‘李四‘,15,3);INSERT INTO STUDENTS VALUES(3,‘王五‘,15,2);INSERT INTO STUDENTS VALUES(4,‘赵六‘,16,2);INSERT INTO STUDENTS VALUES(5,‘小二‘,12,3);INSERT INTO STU_CARD VALUES(1,‘1234566543‘,2);INSERT INTO STU_CARD VALUES(2,‘4324543565‘,1);INSERT INTO STU_CARD VALUES(3,‘2345654334‘,3);INSERT INTO STU_CARD VALUES(4,‘4345324534‘,3);INSERT INTO COURSE VALUES(1,‘语文‘);INSERT INTO COURSE VALUES(2,‘数学‘);INSERT INTO COURSE VALUES(3,‘英语‘);INSERT INTO COURSE_STU VALUES (1,1);INSERT INTO COURSE_STU VALUES (2,2);INSERT INTO COURSE_STU VALUES (2,3);INSERT INTO COURSE_STU VALUES (3,2);SELECT * FROM CLASS_INFO;SELECT * from students;SELECT * FROM STU_CARD;SELECT * from COURSE;SELECT * FROM COURSE_STU;DELETE FROM STU_CARD WHERE CARD_ID = 4;DELETE FROM COURSE_STU WHERE COURSE_ID = 3;/* 查出班级ID为2的所有学生信息*/SELECT * FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;/*查询学生表的总记录数*/SELECT COUNT(*) FROM STUDENTS;/*查询班级id为2的总记录数*/SELECT COUNT(*) FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;/* 查出班级名称为TEAM01的所有学生信息*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.CLASS_NAME=‘TEAM02‘;/*查出所有人以及所在的班级*/SELECT S.STU_NAME, C.CLASS_NAME FROM STUDENTS S LEFT JOIN CLASS_INFO C ON C.C_ID = S.C_ID;/*查询班级ID为2 的所有学生id 姓名 以及年龄*/SELECT C.C_ID , C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE S.C_ID= 2;/*查询班级ID为1 的班级名称 以及学生年龄 降序排列 升序ASC*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE C.C_ID=3 ORDER BY S.STU_AGE DESC;/*查询ID为1 的学生所在的班级(CLASS_INFO) 姓名 年龄(STUDENTS) 以及 身份证号(STU_CARD) 3表联查*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE,CA.CARD_NUM FROM STU_CARD CA LEFT JOIN STUDENTS S ON CA.STU_ID=S.STU_ID LEFT JOIN class_info C ON C.C_ID=S.C_ID WHERE S.STU_ID = 1;/*右连接查询每个学生所选的每一门课程 以课程为基准*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;/*右连接查询 学生ID 姓名 以及所选的课程*/SELECT S.STU_ID, S.STU_NAME,C.COURSE_NAME FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;/*查询所有学生ID 姓名 年龄(STUDENTS) 以及他所选的课程(3表联查)*/SELECT S.STU_ID , S.STU_NAME,S.STU_AGE, C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;/*查询学生id为2的学生姓名 以及他所选的课程*/SELECT S.STU_NAME,C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID WHERE S.STU_ID = 2;/*查询班级id为2 的学生姓名 所选的课程 以及所在的班级名称*/SELECT S.STU_NAME, C.COURSE_NAME,CL.CLASS_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CL ON CL.C_ID=S.C_ID WHERE CL.C_ID=2;/*查询学生ID为2的所有学生信息(学生表+身份证表+班级表)*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID LEFT JOIN CLASS_INFO C ON S.C_ID = C.C_ID WHERE S.STU_ID = 2;/*查询所有学生的学生身份证信息,身份证信息,班级信息*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID;/*查询班级名称为TEAM02的所有学生的学生身份证信息,身份证信息,班级信息*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID WHERE C.CLASS_NAME=‘TEAM02‘;/*4表联查 学生信息,课程信息 班级信息 身份证信息*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;/*5张表联查 查出学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;/*5张表联查 查出学生ID为2的学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID WHERE S.STU_ID=2;

 

 

 

基于MySql数据库的单表与多表联合查询

标签:启动mysql   delete   分享   ble   身份证   table   font   乱码   unique   

mysql数据库 多表联合查询 求助

班级表*/CREATE TABLE CLASS_INFO(C_ID INT PRIMARY KEY,CLASS_NAME VARCHAR(20) not NULL)CHARSET = UTF8;

运行效果:

技术分享

新建成功

 

2.1.1依次建好学生表(学生表有一个指向班级表的主键  以便做关联查询)

/*学生表*/CREATE TABLE STUDENTS(STU_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,STU_NAME VARCHAR(20) NOT NULL,STU_AGE INT NOT NULL,C_ID INT references CLASS_INFO(C_ID))CHARSET = UTF8;

 

 2.1.2身份证表(身份证表有一个外键指向学生表的主键 以便做学生—身份证一对一查询)

/*身份证表*/CREATE TABLE STU_CARD(CARD_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,CARD_NUM VARCHAR(30) NOT NULL,STU_ID INT REFERENCES STUDENTS(STU_ID) )CHARSET = UTF8;/*给STU_CARD列添加一个唯一约束 保证身份证跟学生是一对一的关系*/ALTER TABLE STU_CARD ADD UNIQUE (STU_ID);

 

 2.1.3课程表

/*课程表*/CREATE TABLE COURSE( COURSE_ID INT PRIMARY KEY NOT NULL, COURSE_NAME VARCHAR(20) NOT NULL)CHARSET = UTF8;

 

 2.1.4 学生跟课程关联的中间表(多对多需要有一个中间表来维护2张表的关系)

/*关联学生和课程的中间表*/CREATE TABLE COURSE_STU( STU_ID INT references STUDENTS(STU_ID), COURSE_ID INT REFERENCES COURSE(COURSE_ID))CHARSET = UTF8;

 

3.分别插入测试数据

3.1.0给班级表插入测试数据

INSERT INTO CLASS_INFO VALUES (1,‘TEAM01‘);INSERT INTO CLASS_INFO VALUES (2,‘TEAM02‘);INSERT INTO CLASS_INFO VALUES (3,‘TEAM03‘);

 

3.1.1给学生表插入测试数据(学生id,学生姓名,年龄,该学生所在的班级)

INSERT INTO STUDENTS VALUES(1,‘张三‘,12,1);INSERT INTO STUDENTS VALUES(2,‘李四‘,15,3);INSERT INTO STUDENTS VALUES(3,‘王五‘,15,2);INSERT INTO STUDENTS VALUES(4,‘赵六‘,16,2);INSERT INTO STUDENTS VALUES(5,‘小二‘,12,3);

 

3.1.2给身份证表插入测试数据(id,身份证号,身份证所关联的学生)

INSERT INTO STU_CARD VALUES(1,‘1234566543‘,2);INSERT INTO STU_CARD VALUES(2,‘4324543565‘,1);INSERT INTO STU_CARD VALUES(3,‘2345654334‘,3);

 

3.1.3给课程表表插入测试数据(id,课程)

INSERT INTO COURSE VALUES(1,‘语文‘);INSERT INTO COURSE VALUES(2,‘数学‘);INSERT INTO COURSE VALUES(3,‘英语‘);

 

3.1.4给学生—学科中间表插入测试数据(第一列指向学生ID , 第二列指向课程ID)

INSERT INTO COURSE_STU VALUES (1,1);INSERT INTO COURSE_STU VALUES (2,2);INSERT INTO COURSE_STU VALUES (2,3);INSERT INTO COURSE_STU VALUES (3,2);

 

4.查出所有所建的表 以及 插入的数据

SELECT * FROM CLASS_INFO;SELECT * from students;SELECT * FROM STU_CARD;SELECT * from COURSE;SELECT * FROM COURSE_STU;

运行效果:

技术分享技术分享

 

 技术分享技术分享

 

 技术分享

 

5.查询

5.1.1查出班级ID为2的所有学生信息

/* 查出班级ID为2的所有学生信息*/SELECT * FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;

 运行效果:

技术分享

 

5.1.2查询学生表的总记录数

/*查询学生表的总记录数*/SELECT COUNT(*) FROM STUDENTS;

 运行效果:

技术分享

 

5.1.3查询班级id为2的总记录数

/*查询班级id为2的总记录数*/SELECT COUNT(*) FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;

运行效果:

技术分享

 

5.1.4查出班级名称为TEAM01的所有学生信息

/* 查出班级名称为TEAM01的学生信息(班级,姓名,年龄)*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.CLASS_NAME=‘TEAM01‘;

运行效果:

技术分享

 

5.1.5查出所有人以及所在的班级

/*查出所有人以及所在的班级*/SELECT S.STU_NAME, C.CLASS_NAME FROM STUDENTS S LEFT JOIN CLASS_INFO C ON C.C_ID = S.C_ID;

 运行效果:

技术分享

 

5.1.6查询班级ID为2 的所有学生id 姓名 以及年龄

/*查询班级ID为2 的所有学生id 姓名 以及年龄*/SELECT C.C_ID , C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE S.C_ID= 2;

运行效果:

技术分享

 

5.1.7查询班级ID为3 的班级名称 以及学生年龄  降序排列  

/*查询班级ID为3 的班级名称 以及学生年龄 降序排列 升序ASC*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE C.C_ID=3 ORDER BY S.STU_AGE DESC;

 运行效果:

技术分享

 

5.1.8查询ID为1 的学生所在的班级(CLASS_INFO) 姓名 年龄(STUDENTS) 以及 身份证号(STU_CARD) 3表联查

/*查询ID为1 的学生所在的班级(CLASS_INFO) 姓名 年龄(STUDENTS) 以及 身份证号(STU_CARD) 3表联查*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE,CA.CARD_NUM FROM STU_CARD CA LEFT JOIN STUDENTS S ON CA.STU_ID=S.STU_ID LEFT JOIN class_info C ON C.C_ID=S.C_ID WHERE S.STU_ID = 1;

运行效果:

技术分享

 

5.1.9右连接查询每个学生所选的每一门课程  以课程为基准

/*右连接查询每个学生所选的每一门课程 以课程为基准*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;

运行效果:

技术分享

 

5.2.0右连接查询 学生ID 姓名 以及所选的课程

/*右连接查询 学生ID 姓名 以及所选的课程*/SELECT S.STU_ID, S.STU_NAME,C.COURSE_NAME FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;

运行效果:

技术分享

 

5.2.1查询所有学生ID 姓名 年龄(STUDENTS) 以及他所选的课程(3表联查)

/*查询所有学生ID 姓名 年龄(STUDENTS) 以及他所选的课程(3表联查)*/SELECT S.STU_ID , S.STU_NAME,S.STU_AGE, C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;

运行效果:

技术分享

 

5.2.2查询学生id为2的学生姓名 以及他所选的课程

/*查询学生id为2的学生姓名 以及他所选的课程*/SELECT S.STU_NAME,C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID WHERE S.STU_ID = 2;

运行效果:

技术分享

 

5.2.3查询班级id为2 的学生姓名 所选的课程 以及所在的班级名称

/*查询班级id为2 的学生姓名 所选的课程 以及所在的班级名称*/SELECT S.STU_NAME, C.COURSE_NAME,CL.CLASS_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CL ON CL.C_ID=S.C_ID WHERE CL.C_ID=2;

运行效果:

技术分享

 

5.2.4查询所有学生的学生身份证信息,身份证信息,班级信息

/*查询所有学生的学生身份证信息,身份证信息,班级信息*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID;

运行效果:

技术分享

 

5.2.5  4表联查 学生信息,课程信息 班级信息 身份证信息

/*4表联查 学生信息,课程信息 班级信息 身份证信息*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID; 

运行效果:

技术分享

 

5.2.6  5张表联查  查出学生姓名 他所在的班级 所选的课程 以及该学生的身份证号

/*5张表联查 查出学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;

运行效果:

技术分享

 

5.2.7  5张表联查  查出学生ID为2的学生姓名 他所在的班级 所选的课程 以及该学生的身份证号

/*5张表联查 查出学生ID为2的学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID WHERE S.STU_ID=2; 

运行效果: 

 技术分享

 全部建表语句 以及 查询语句如下:

drop TABLE studentsdrop table CLASS_INFOdrop table coursedrop table stu_card;drop table COURSE_STU;/*学生表*/CREATE TABLE STUDENTS(STU_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,STU_NAME VARCHAR(20) NOT NULL,STU_AGE INT NOT NULL,C_ID INT references CLASS_INFO(C_ID))CHARSET = UTF8;/*班级表*/CREATE TABLE CLASS_INFO(C_ID INT PRIMARY KEY,CLASS_NAME VARCHAR(20) not NULL)CHARSET = UTF8;/*身份证表*/CREATE TABLE STU_CARD(CARD_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,CARD_NUM VARCHAR(30) NOT NULL,STU_ID INT REFERENCES STUDENTS(STU_ID) )CHARSET = UTF8;/*给STU_CARD列添加一个唯一约束 保证身份证跟学生是一对一的关系*/ALTER TABLE STU_CARD ADD UNIQUE (STU_ID);/*课程表*/CREATE TABLE COURSE( COURSE_ID INT PRIMARY KEY NOT NULL, COURSE_NAME VARCHAR(20) NOT NULL)CHARSET = UTF8;/*关联学生和课程的中间表*/CREATE TABLE COURSE_STU( STU_ID INT references STUDENTS(STU_ID), COURSE_ID INT REFERENCES COURSE(COURSE_ID))CHARSET = UTF8;INSERT INTO CLASS_INFO VALUES (1,‘TEAM01‘);INSERT INTO CLASS_INFO VALUES (2,‘TEAM02‘);INSERT INTO CLASS_INFO VALUES (3,‘TEAM03‘);INSERT INTO STUDENTS VALUES(1,‘张三‘,12,1);INSERT INTO STUDENTS VALUES(2,‘李四‘,15,3);INSERT INTO STUDENTS VALUES(3,‘王五‘,15,2);INSERT INTO STUDENTS VALUES(4,‘赵六‘,16,2);INSERT INTO STUDENTS VALUES(5,‘小二‘,12,3);INSERT INTO STU_CARD VALUES(1,‘1234566543‘,2);INSERT INTO STU_CARD VALUES(2,‘4324543565‘,1);INSERT INTO STU_CARD VALUES(3,‘2345654334‘,3);INSERT INTO STU_CARD VALUES(4,‘4345324534‘,3);INSERT INTO COURSE VALUES(1,‘语文‘);INSERT INTO COURSE VALUES(2,‘数学‘);INSERT INTO COURSE VALUES(3,‘英语‘);INSERT INTO COURSE_STU VALUES (1,1);INSERT INTO COURSE_STU VALUES (2,2);INSERT INTO COURSE_STU VALUES (2,3);INSERT INTO COURSE_STU VALUES (3,2);SELECT * FROM CLASS_INFO;SELECT * from students;SELECT * FROM STU_CARD;SELECT * from COURSE;SELECT * FROM COURSE_STU;DELETE FROM STU_CARD WHERE CARD_ID = 4;DELETE FROM COURSE_STU WHERE COURSE_ID = 3;/* 查出班级ID为2的所有学生信息*/SELECT * FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;/*查询学生表的总记录数*/SELECT COUNT(*) FROM STUDENTS;/*查询班级id为2的总记录数*/SELECT COUNT(*) FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;/* 查出班级名称为TEAM01的所有学生信息*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.CLASS_NAME=‘TEAM02‘;/*查出所有人以及所在的班级*/SELECT S.STU_NAME, C.CLASS_NAME FROM STUDENTS S LEFT JOIN CLASS_INFO C ON C.C_ID = S.C_ID;/*查询班级ID为2 的所有学生id 姓名 以及年龄*/SELECT C.C_ID , C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE S.C_ID= 2;/*查询班级ID为1 的班级名称 以及学生年龄 降序排列 升序ASC*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE C.C_ID=3 ORDER BY S.STU_AGE DESC;/*查询ID为1 的学生所在的班级(CLASS_INFO) 姓名 年龄(STUDENTS) 以及 身份证号(STU_CARD) 3表联查*/SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE,CA.CARD_NUM FROM STU_CARD CA LEFT JOIN STUDENTS S ON CA.STU_ID=S.STU_ID LEFT JOIN class_info C ON C.C_ID=S.C_ID WHERE S.STU_ID = 1;/*右连接查询每个学生所选的每一门课程 以课程为基准*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;/*右连接查询 学生ID 姓名 以及所选的课程*/SELECT S.STU_ID, S.STU_NAME,C.COURSE_NAME FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;/*查询所有学生ID 姓名 年龄(STUDENTS) 以及他所选的课程(3表联查)*/SELECT S.STU_ID , S.STU_NAME,S.STU_AGE, C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;/*查询学生id为2的学生姓名 以及他所选的课程*/SELECT S.STU_NAME,C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID WHERE S.STU_ID = 2;/*查询班级id为2 的学生姓名 所选的课程 以及所在的班级名称*/SELECT S.STU_NAME, C.COURSE_NAME,CL.CLASS_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CL ON CL.C_ID=S.C_ID WHERE CL.C_ID=2;/*查询学生ID为2的所有学生信息(学生表+身份证表+班级表)*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID LEFT JOIN CLASS_INFO C ON S.C_ID = C.C_ID WHERE S.STU_ID = 2;/*查询所有学生的学生身份证信息,身份证信息,班级信息*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID;/*查询班级名称为TEAM02的所有学生的学生身份证信息,身份证信息,班级信息*/SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID WHERE C.CLASS_NAME=‘TEAM02‘;/*4表联查 学生信息,课程信息 班级信息 身份证信息*/SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;/*5张表联查 查出学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;/*5张表联查 查出学生ID为2的学生姓名 他所在的班级 所选的课程 以及该学生的身份证号*/SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID WHERE S.STU_ID=2;

 

 

 

基于MySql数据库的单表与多表联合查询

标签:启动mysql   delete   分享   ble   身份证   table   font   乱码   unique   

MySQL多表联合统计查询问题

创建表,数据

create table a

(id int,

项目号 varchar(2),

总金额 int,

上家单位 varchar(4));

insert into a values (1,'01',100,'AAAA');

insert into a values (2,'02',200,'BBBB');

insert into a values (3,'03',250,'CCCC');

create table b

(id int,

项目号 varchar(2),

到款 int,

到款时间 date);

insert into b values (1,'03',50,'2018-07-23');

insert into b values (2,'03',100,'2018-07-24');

insert into b values (3,'01',80,'2018-07-25');

执行:SELECT

a.项目号,

a.总金额,

sum(

CASE

WHEN a.项目号 = b.项目号 THEN

到款

ELSE

0

END

) 到款总额

FROM

a

LEFT JOIN b ON a.项目号 = b.项目号

GROUP BY

a.项目号,

a.总金额

结果:

mysql查询多表联合查询

查询某设备多有端口当前流量:

select * from nms_diverter_monitor a

inner join nms_diverter_link b on a.diverter_link_id = b.id

inner join nms_diverter c on b.diverter_id = c.id 

where c.id = ?

查询某个时间点,端口流量,其实和上面差不多:

select * from nms_diverter_monitor_history a

inner join nms_diverter_link b on a.diverter_link_id = b.id

inner join nms_diverter c on b.diverter_id = c.id 

where a.时间字段 = ?

注:这里时间参数可能做下处理,这个网上很多,可以找到