🏝?專欄:Mysql_貓咪-9527的博客-CSDN博客
🌅主頁:貓咪-9527-CSDN博客?“欲窮千里目,更上一層樓。會當凌絕頂,一覽眾山小。”
目錄
實驗二單表查詢
1.實驗數據如下
student 表(學生表)
course 表(課程表)
teacher 表(教師表)
score 表(成績表)
2. 插入數據
student 表中的數據
course 表中的數據
teacher 表中的數據
score 表中的數據
2-1 簡單查詢語句
2-2 分組統計
實驗二單表查詢
實驗目的:
通過實驗掌握數據庫系統單表查詢的方法
1.實驗數據如下
student 表(學生表)
CREATE TABLE student (sno CHAR(5) PRIMARY KEY,snme VARCHAR(20) NOT NULL, sdept VARCHAR(20) NOT NULL, sclass CHAR(2) NOT NULL, ssex CHAR(1), birthday DATE, totalcredit DECIMAL(4,1)
);
course 表(課程表)
CREATE TABLE course (cno CHAR(3) PRIMARY KEY,cname VARCHAR(50), ctime DECIMAL(3,0), credit DECIMAL(3,1)
);
teacher 表(教師表)
CREATE TABLE teacher (tno CHAR(6) PRIMARY KEY, tname VARCHAR(20), tsex CHAR(1), tdept VARCHAR(20)
);
score 表(成績表)
CREATE TABLE score (sno CHAR(5), cno CHAR(3), tno CHAR(6), grade DECIMAL(5,1), PRIMARY KEY (sno, cno, tno), CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno),CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno),CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teacher(tno)
);
2. 插入數據
student 表中的數據
INSERT INTO student VALUES('96001', '馬小燕', '計算機', '01', '女', '2000/01/02', 0);
INSERT INTO student VALUES('96002', '黎明', '計算機', '01', '男', '2000/03/05', 0);
INSERT INTO student VALUES('96003', '劉東明', '數學', '01', '男', '2000/10/05', 0);
INSERT INTO student VALUES('96004', '趙志勇', '信息', '02', '男', '2000/08/08', 0);
INSERT INTO student VALUES('97001', '馬蓉', '數學', '02', '女', '2001/03/04', 0);
INSERT INTO student VALUES('97002', '李成功', '計算機', '01', '男', '2001/09/10', 0);
INSERT INTO student VALUES('97003', '黎明', '信息', '03', '女', '2002/02/08', 0);
INSERT INTO student VALUES('97004', '李麗', '計算機', '02', '女', '2002/01/05', 0);
INSERT INTO student VALUES('96005', '司馬志明', '計算機', '02', '男', '2001/11/23', 0);
course 表中的數據
INSERT INTO course VALUES('001', '數學分析', 64, 4);
INSERT INTO course VALUES('002', '普通物理', 64, 4);
INSERT INTO course VALUES('003', '微機原理', 56, 3.5);
INSERT INTO course VALUES('004', '數據結構', 64, 4);
INSERT INTO course VALUES('005', '操作系統', 56, 3.5);
INSERT INTO course VALUES('006', '數據庫原理', 56, 3.5);
INSERT INTO course VALUES('007', '編譯原理', 48, 3);
INSERT INTO course VALUES('008', '程序設計', 32, 2);
teacher 表中的數據
INSERT INTO teacher VALUES('052501', '王成剛', '男', '計算機');
INSERT INTO teacher VALUES('052502', '李正科', '男', '計算機');
INSERT INTO teacher VALUES('052503', '嚴敏', '女', '數學');
INSERT INTO teacher VALUES('052504', '趙高', '男', '數學');
INSERT INTO teacher VALUES('052505', '劉玉蘭', '女', '計算機');
INSERT INTO teacher VALUES('052506', '王成剛', '男', '信息');
INSERT INTO teacher VALUES('052507', '馬悅', '女', '計算機');
score 表中的數據
INSERT INTO score VALUES('96001', '001', '052503', 77.5);
INSERT INTO score VALUES('96001', '003', '052501', 89);
INSERT INTO score VALUES('96001', '004', '052502', 86);
INSERT INTO score VALUES('96001', '005', '052505', 82);
INSERT INTO score VALUES('96002', '001', '052504', 88);
INSERT INTO score VALUES('96002', '003', '052502', 92.5);
INSERT INTO score VALUES('96002', '006', '052507', 90);
INSERT INTO score VALUES('96005', '004', '052502', 92);
INSERT INTO score VALUES('96005', '005', '052505', 90);
INSERT INTO score VALUES('96005', '006', '052505', 89);
INSERT INTO score VALUES('96005', '007', '052507', 78);
INSERT INTO score VALUES('96003', '001', '052504', 69);
INSERT INTO score VALUES('97001', '001', '052504', 96);
INSERT INTO score VALUES('97001', '008', '052505', 95);
INSERT INTO score VALUES('96004', '001', '052503', 87);
INSERT INTO score VALUES('96003', '003', '052501', 91);
INSERT INTO score VALUES('97002', '003', '052502', 91);
INSERT INTO score VALUES('97002', '004', '052505', NULL);
INSERT INTO score VALUES('97002', '006', '052507', 92);
INSERT INTO score VALUES('97004', '005', '052502', 90);
INSERT INTO score VALUES('97004', '006', '052501', 85);
?注:把上面的實驗數據添加上再開始實驗。
2-1 簡單查詢語句
- 查詢年齡大于20的學生的學號、姓名和年齡,結果列別名為“學號”“姓名”“年齡”
select sno 學號, snme 姓名, datediff(now(),birthday)/365 年齡
from student where date_add(birthday,interval 20 year)<now();
- 查詢選修了課程的學生學號,結果表中學號顯示唯一
select distinct sno from score;
- 查詢不是計算機系或信息系的學生
select *from student where sdept not in ('計算機','信息');
- 查詢學時在1~50的課程信息
select *from course where ctime between 1 and 50;
查詢姓名長度至少是3個漢字且倒數第三個漢字必須是“馬”的學生
select *from student where snme like '%馬__';
- 查詢選修老師編號為052501、成績在80~90、學號為96xxx的學生成績
select *from score where sno like '96%'
and tno ='052501' and grade between 80 and 90;
- 查詢沒有成績的學生的學號和課程號
select *from score where grade is null;
2-2 分組統計
- 查詢學生總人數
select count(*) from student;
- 查詢選修了課程的學生人數
SELECT COUNT(DISTINCT 學號) AS 選修課程學生人數
FROM 選修;
- 查詢選修各門課程的最高、最低與平均成績
select cno,max(grade),min(grade),avg(grade) from score group by cno;
- 查詢學生人數不足3人的系別及其相應的學生人數
select sdept 系,count(*) from student group by sdept having count(*)<3 ;
- 查詢各系中各班的學生人數,結果按班級人數降序排列
select sdept,sclass,count(*) from student group by sdept,
sclass order by count(*) desc;