1. 程式人生 > 其它 >mysql查表操作題目詳解

mysql查表操作題目詳解

sql資料

資料表
--1.學生表 student(s_id,s_name,s_age,s_sex)
    s_id 學生編號,s_name 學生姓名,sage 出生年月,s_sex 學生性別
--2.課程表 course(c_id,c_name,t_id)
    c_id 課程編號,c_name 課程名稱,t_id 教師編號
--3.教師表 teacher(t_id,t_name)
    t_id 教師編號,t_name 教師姓名
--4.成績表 sc(s_id,c_id,sc_score)
    s_id 學生編號,c_id 課程編號,sc_score 分數
匯入資料方法:將以下 mysql 語句,完整複製到navicat視窗,然後執行即可匯入,不需要另外建立表(自帶建表語句):這些語句第一條是建立表(create table),後面都是插入資料到表中(insert into table )。
# 學生表 student:
create table student(s_id varchar(10),s_name varchar(10),s_age datetime,s_sex varchar(10));
insert into student values('01' , '趙雷' , '1990-01-01' , '男');
insert into student values('02' , '錢電' , '1990-12-21' , '男');
insert into student values('03' , '孫風' , '1990-05-20' , '男');
insert into student values('04' , '李雲' , '1990-08-06' , '男');
insert into student values('05' , '周梅' , '1991-12-01' , '女');
insert into student values('06' , '吳蘭' , '1992-03-01' , '女');
insert into student values('07' , '鄭竹' , '1989-07-01' , '女');
insert into student values('09' , '張三' , '2017-12-20' , '女');
insert into student values('10' , '李四' , '2017-12-25' , '女');
insert into student values('11' , '李四' , '2017-12-30' , '女');
insert into student values('12' , '趙六' , '2017-01-01' , '女');
insert into student values('13' , '孫七' , '2018-01-01' , '女');
# 科目表 course
create table course(c_id varchar(10),c_name nvarchar(10),t_id varchar(10));
insert into course values('01' , '語文' , '02');
insert into course values('02' , '數學' , '01');
insert into course values('03' , '英語' , '03');

create table teacher(t_id varchar(10),t_name varchar(10));
insert into teacher values('01' , '張三');
insert into teacher values('02' , '李四');
insert into teacher values('03' , '王五');
# 教師表 teacher
create table sc(s_id varchar(10),c_id varchar(10),sc_score decimal(18,1));
insert into sc values('01' , '01' , 80);
insert into sc values('01' , '02' , 90);
insert into sc values('01' , '03' , 99);
insert into sc values('02' , '01' , 70);
insert into sc values('02' , '02' , 60);
insert into sc values('02' , '03' , 80);
insert into sc values('03' , '01' , 80);
insert into sc values('03' , '02' , 80);
insert into sc values('03' , '03' , 80);
insert into sc values('04' , '01' , 50);
insert into sc values('04' , '02' , 30);
insert into sc values('04' , '03' , 20);
insert into sc values('05' , '01' , 76);
insert into sc values('05' , '02' , 87);
insert into sc values('06' , '01' , 31);
insert into sc values('06' , '03' , 34);
insert into sc values('07' , '02' , 89);
insert into sc values('07' , '03' , 98);

查詢‘01’課程比'02'課程成績高的學生資訊及課程分數

解題思路:
-- 分析題目關鍵詞,“學生資訊”、“課程分數”、“課程編號”
-- 第一步:鎖定使用表,學生表、成績表,這兩張表提供題目所需資訊
-- 第二步:通過sid主鍵連線學生表和成績表
SELECT 
* 
FROM student a 
INNER JOIN sc b 
on a.s_id=b.s_id
-- 第三部:進行同一學生不同成績比較,那麼就還需要連線一個成績表,利用sid相同、cid不同進行關聯
SELECT 
* 
FROM student a 
INNER JOIN sc b 
on a.s_id=b.s_id
INNER JOIN sc c
on a.s_id=c.s_id AND b.c_id='01' AND c.c_id='02'
-- 第四部:最終回到題目,只需要篩選一下課程,利用where比較分數即可
SELECT 
* 
FROM student a 
INNER JOIN sc b 
on a.s_id=b.s_id
INNER JOIN sc c
on a.s_id=c.s_id AND b.c_id='01' AND c.c_id='02'
where b.sc_score>c.sc_score;