整理自博主本科《數據庫系統原理》專業課自己完成的實驗課查詢作業,以便各位學習數據庫系統概論的小伙伴們參考、學習。
*文中若存在書寫不合理的地方,歡迎各位斧正。
專業課本:
?
————
本次實驗使用到的圖形化工具:Heidisql
?
目錄
第一題、生成EDUC數據庫中的三個表,把問題在MySQL中執行,并查看查詢結果,截圖。
1.在課程表中查詢課?程名以“數據”開頭的課程的課程號,課程名。注意要取別名。
2.在課程表中查詢課程名,學分,學分是2到4之間。用比較運算符,或between and ,或in。分別表達學分的限制條件。
3.查詢課程表中,課程的學分都有哪些。
4.查詢所有沒有確定專業的,年齡小于19歲的,女生的學號,姓名,年齡。并按照年齡降序排列,如果年齡相同,按照學號升序排列。?
5.查詢所有學分大于2的?,沒有先修課的課程的課程號,課程名,并按課程號升序排列
6.查詢課程總個數。
7.計算學號為“200215121”的學生平均成績。
8.查詢被選修的課程的個數。
9.查詢學號為“200215121”的學生所考試的課程中的最高分數。?
第二題、生成spj數據庫中的四個表,進行查詢,給出查詢結果。
1.查詢工程項目所在地名字最后一個字是‘京’字的項目號,項目名,所在城市。注意把列名從英文改為中文。
2.查詢零件重量大于等于10,小于等于20的紅色零件或重量大于30的藍色零件的零件名稱,顏色和重量。列名不改別名。
3.表中零件重量單位是公斤,請給出每種零件的市斤數。輸出的列有零件號,零件名,和市斤數。市斤數是列的別名,其他兩個不用改。
4.查詢零件表中,零件的顏色都有哪些。
5.在spj表中。查詢供應數量是100,200,300,400的那些元組。
6.在spj表中,如果供應數量是null。代表供應商給某項目供應的某零件的數量不確定。查詢有那些供應商給哪些項目供應的哪些零件是不確定數量的。要求給出供應商名,項目名和零件名。
7.查詢重量小于40的零件的零件號,零件名和零件顏色。并按照零件顏色排序降序排列,顏色相同的,按照零件號升序排列。
8.找出最重的三種零件的零件號和零件名。
9.查詢零件共有幾種顏色。
10.如果每種零件取一個,那么所有種類的零件的總重量是多少。
11.查詢紅色零件中最輕的那種零件的重量是多少。
12.查詢藍色零件的平均重量。?
*做題,截圖,把代碼及查詢執行結果的截圖放在相應題目的下方。(沒有安裝成功的,可以只寫代碼)
第一題、生成EDUC數據庫中的三個表,把問題在MySQL中執行,并查看查詢結果,截圖。
EDUC數據庫建庫建表代碼:
create database educ;
use educ;
CREATE TABLE Student
(
Sno CHAR(9) NOT NULL PRIMARY KEY,
Sname CHAR(20),
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);CREATE TABLE Course
(
Cno CHAR(4) NOT NULL PRIMARY KEY,
Cname CHAR(40) NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);CREATE TABLE SC
(
Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);INSERT INTO Student VALUES('200215121','李勇','男',20,'CS');
INSERT INTO Student VALUES('200215122','劉晨','女',19,'CS');
INSERT INTO Student VALUES('200215123','王敏','女',18,'MA');
INSERT INTO Student VALUES('200215125','張立','男',19,'IS');
INSERT INTO Student VALUES('200215124','張立','男',19,'IS');INSERT INTO Course VALUES('2','數學',null,2);
INSERT INTO Course VALUES('6','數據處理',null,2);
INSERT INTO Course VALUES('7','pascal語言','6',4);
INSERT INTO Course VALUES('5','數據結構','7',4);
INSERT INTO Course VALUES('4','操作系統','6',3);
INSERT INTO Course VALUES('1','數據庫','5',4);
INSERT INTO Course VALUES('3','信息系統','1',4);INSERT INTO SC VALUES('200215121','1',92);
INSERT INTO SC VALUES('200215121','2',85);
INSERT INTO SC VALUES('200215121','3',88);
INSERT INTO SC VALUES('200215122','2',90);
INSERT INTO SC VALUES('200215122','3',80);
1.在課程表中查詢課?程名以“數據”開頭的課程的課程號,課程名。注意要取別名。
源碼:
select cno as 課程號,Cname as 課程名
from Course
where Cname like '數據%'
2.在課程表中查詢課程名,學分,學分是2到4之間。用比較運算符,或between and ,或in。分別表達學分的限制條件。
(不用取別名,后面的題目沒有特別要求都可以不用取別名。?)
比較運算符:
select cname,Ccredit
from Course
where Ccredit>=2 and Ccredit<=4
between and:
select cname,Ccredit
from Course
where Ccredit between 2 and 4
in:
select cname,Ccredit
from Course
where Ccredit IN (2,3,4)
3.查詢課程表中,課程的學分都有哪些。
select distinct Ccredit
from Course
4.查詢所有沒有確定專業的,年齡小于19歲的,女生的學號,姓名,年齡。并按照年齡降序排列,如果年齡相同,按照學號升序排列。?
select sno,sname,sage
from Student
where Ssex = '女' and Sage < 19 and Sdept is null
order by Sage desc,sno asc
5.查詢所有學分大于2的?,沒有先修課的課程的課程號,課程名,并按課程號升序排列
select Cno,cname
from Course
where Ccredit>2 and Cpno is null
order by Cno
6.查詢課程總個數。
select COUNT(*)
from Course
7.計算學號為“200215121”的學生平均成績。
select AVG(grade)
from SC
where Sno = '200215121'
8.查詢被選修的課程的個數。
select COUNT( distinct Cno) as 被選修的課程數
from SC
9.查詢學號為“200215121”的學生所考試的課程中的最高分數。?
select MAX(grade) as 最高分數
from SC
where Sno = '200215122'
第二題、生成spj數據庫中的四個表,進行查詢,給出查詢結果。
spj數據庫建庫建表代碼:
create database spj;
use spj;
CREATE TABLE S
(
SNO CHAR(4) NOT NULL PRIMARY KEY,
SNAME VARCHAR(20),
STATUS SMALLINT,
CITY VARCHAR(20)
);CREATE TABLE P
(
PNO CHAR(4) NOT NULL PRIMARY KEY,
PNAME VARCHAR(20),
COLOR VARCHAR(10),
WEIGHT SMALLINT
);CREATE TABLE J
(
JNO CHAR(4) NOT NULL PRIMARY KEY,
JNAME VARCHAR(20),
CITY VARCHAR(20)
);CREATE TABLE SPJ
(
SNO CHAR(4) NOT NULL,
PNO CHAR(4) NOT NULL,
JNO CHAR(4) NOT NULL,
Qty SMALLINT,
PRIMARY KEY(SNO,PNO,JNO),
FOREIGN KEY (SNO) REFERENCES S(SNO),
FOREIGN KEY (PNO) REFERENCES P(PNO),
FOREIGN KEY (JNO) REFERENCES J(JNO)
);INSERT INTO S VALUES('S1','精益',20,'天津');
INSERT INTO S VALUES('S2','盛錫',10,'北京');
INSERT INTO S VALUES('S3','東方紅',30,'北京');
INSERT INTO S VALUES('S4','豐泰盛',20,'天津');
INSERT INTO S VALUES('S5','豐泰盛',20,'上海');INSERT INTO P VALUES('P1','螺母','紅',12);
INSERT INTO P VALUES('P2','螺栓','綠',17);
INSERT INTO P VALUES('P3','螺絲刀','藍',14);
INSERT INTO P VALUES('P4','螺絲刀','紅',14);
INSERT INTO P VALUES('P5','凸輪','藍',40);
INSERT INTO P VALUES('P6','齒輪','紅',30);INSERT INTO J VALUES('J1','三建','北京');
INSERT INTO J VALUES('J2','一汽','長春');
INSERT INTO J VALUES('J3','彈簧廠','天津');
INSERT INTO J VALUES('J4','造船廠','天津');
INSERT INTO J VALUES('J5','機車廠','唐山');
INSERT INTO J VALUES('J6','無線電廠','常州');
INSERT INTO J VALUES('J7','半導體廠','南京');INSERT INTO SPJ VALUES('S1','P1','J1',200);
INSERT INTO SPJ VALUES('S1','P1','J3',100);
INSERT INTO SPJ VALUES('S1','P1','J4',700);
INSERT INTO SPJ VALUES('S1','P2','J2',100);
INSERT INTO SPJ VALUES('S2','P3','J1',400);
INSERT INTO SPJ VALUES('S2','P3','J2',200);
INSERT INTO SPJ VALUES('S2','P3','J4',500);
INSERT INTO SPJ VALUES('S2','P3','J5',400);
INSERT INTO SPJ VALUES('S2','P5','J1',400);
INSERT INTO SPJ VALUES('S2','P5','J2',100);
INSERT INTO SPJ VALUES('S3','P1','J1',200);
INSERT INTO SPJ VALUES('S3','P3','J1',200);
INSERT INTO SPJ VALUES('S4','P5','J1',100);
INSERT INTO SPJ VALUES('S4','P6','J3',200);
INSERT INTO SPJ VALUES('S4','P6','J4',200);
INSERT INTO SPJ VALUES('S5','P2','J4',100);
INSERT INTO SPJ VALUES('S5','P3','J1',200);
INSERT INTO SPJ VALUES('S5','P6','J2',200);
INSERT INTO SPJ VALUES('S5','P6','J4',500);
INSERT INTO SPJ VALUES('S1','P1','J2',500);
1.查詢工程項目所在地名字最后一個字是‘京’字的項目號,項目名,所在城市。注意把列名從英文改為中文。
select jno 工程項目代碼,jname 工程項目名,city 工程所在城市
from J
where CITY like '%京'
2.查詢零件重量大于等于10,小于等于20的紅色零件或重量大于30的藍色零件的零件名稱,顏色和重量。列名不改別名。
select pname,color,weight
from P
where (WEIGHT between 10 and 20 and COLOR = '紅') or(WEIGHT > 30 and COLOR = '藍')
3.表中零件重量單位是公斤,請給出每種零件的市斤數。輸出的列有零件號,零件名,和市斤數。市斤數是列的別名,其他兩個不用改。
select pno,pname,weight*2 as 市斤數
from P
4.查詢零件表中,零件的顏色都有哪些。
select distinct color
from P
5.在spj表中。查詢供應數量是100,200,300,400的那些元組。
select *
from spj
where Qty in (100,200,300,400)
6.在spj表中,如果供應數量是null。代表供應商給某項目供應的某零件的數量不確定。查詢有那些供應商給哪些項目供應的哪些零件是不確定數量的。要求給出供應商名,項目名和零件名。
select sname,pname,jname
from s,P,J,spj
where s.SNO =spj.SNO and P.PNO = spj.PNO and J.JNO = spj.JNO and Qty is null
7.查詢重量小于40的零件的零件號,零件名和零件顏色。并按照零件顏色排序降序排列,顏色相同的,按照零件號升序排列。
select pno,pname,color
from P
where WEIGHT<40
order by color desc,pno
8.找出最重的三種零件的零件號和零件名。
select pno,pname
from P limit 3
order by WEIGHT desc
9.查詢零件共有幾種顏色。
select count(distinct color)
from P
10.如果每種零件取一個,那么所有種類的零件的總重量是多少。
select sum(weight)
from P
11.查詢紅色零件中最輕的那種零件的重量是多少。
select weight,pno,pname
from P
where COLOR = '紅'
order by WEIGHT asc limit 1-- 如果用下面的代碼,只能查到重量,查不到是哪種零件
select MIN(WEIGHT )
from P
where COLOR = '紅'
12.查詢藍色零件的平均重量。?
select AVG(WEIGHT)
from P
where COLOR = '藍'