1. 程式人生 > >sql 經典練習題

sql 經典練習題

use fuxi;

CREATE TABLE STUDENT
(
SNO VARCHAR(3) NOT NULL,
SNAME VARCHAR(4) NOT NULL,
SSEX VARCHAR(2) NOT NULL,
SBIRTHDAY DATETIME,
CLASS VARCHAR(5)
);

CREATE TABLE COURSE
(
CNO VARCHAR(5) NOT NULL,
CNAME VARCHAR(10) NOT NULL,
TNO VARCHAR(10) NOT NULL
);

CREATE TABLE SCORE
(
SNO VARCHAR(3) NOT NULL,
CNO VARCHAR(5) NOT NULL,
DEGREE NUMERIC(10, 1) NOT NULL
);

CREATE TABLE TEACHER
(
TNO VARCHAR(3) NOT NULL,
TNAME VARCHAR(4) NOT NULL,
TSEX VARCHAR(2) NOT NULL,
TBIRTHDAY DATETIME NOT NULL,
PROF VARCHAR(6),
DEPART VARCHAR(10) NOT NULL
);

INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS) VALUES (108, ‘曾華’
, ‘男’, ‘1977-09-01’, 95033);
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS) VALUES (105, ‘匡明’
, ‘男’, ‘1975-10-02’, 95031);
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS) VALUES (107, ‘王麗’
, ‘女’, ‘1976-01-23’, 95033);
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS) VALUES (101, ‘李軍’
, ‘男’, ‘1976-02-20’, 95033);
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS) VALUES (109, ‘王芳’
, ‘女’, ‘1975-02-10’, 95031);
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS) VALUES (103, ‘陸君’
, ‘男’, ‘1974-06-03’, 95031);

INSERT INTO COURSE (CNO, CNAME, TNO) VALUES (‘3-105’, ‘計算機導論’, 825);
INSERT INTO COURSE (CNO, CNAME, TNO) VALUES (‘3-245’, ‘作業系統’, 804);
INSERT INTO COURSE (CNO, CNAME, TNO) VALUES (‘6-166’, ‘資料電路’, 856);
INSERT INTO COURSE (CNO, CNAME, TNO) VALUES (‘9-888’, ‘高等數學’, 100);

INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (103, ‘3-245’, 86);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (105, ‘3-245’, 75);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (109, ‘3-245’, 68);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (103, ‘3-105’, 92);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (105, ‘3-105’, 88);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (109, ‘3-105’, 76);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (101, ‘3-105’, 64);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (107, ‘3-105’, 91);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (101, ‘6-166’, 85);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (107, ‘6-106’, 79);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (108, ‘3-105’, 78);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (108, ‘6-166’, 81);

INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES (804, ‘李誠’, ‘男’, ‘1958-12-02’, ‘副教授’, ‘計算機系’);
INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES (856, ‘張旭’, ‘男’, ‘1969-03-12’, ‘講師’, ‘電子工程系’);
INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES (825, ‘王萍’, ‘女’, ‘1972-05-05’, ‘助教’, ‘計算機系’);
INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES (831, ‘劉冰’, ‘女’, ‘1977-08-14’, ‘助教’, ‘電子工程系’);

– 1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。
select
SNAME,
SSEX,
CLASS
from STUDENT;

– 2、 查詢教師所有的單位即不重複的Depart列。
select distinct DEPART
from TEACHER1;

– 3、 查詢Student表的所有記錄。
select *
from STUDENT;

– 4、 查詢Score表中成績在60到80之間的所有記錄。
select *
from SCORE
where DEGREE > 60 and DEGREE < 80;

– 5、 查詢Score表中成績為85,86或88的記錄。
select *
from SCORE
where DEGREE = 85 or DEGREE = 86 or DEGREE = 88;

– 6、 查詢Student表中“95031”班或性別為“女”的同學記錄。
select *
from STUDENT
where CLASS = ‘95031’ or SSEX = ‘女’;

– 7、 以Class降序查詢Student表的所有記錄。
select *
from STUDENT
order by CLASS desc;

– 8、 以Cno升序、Degree降序查詢Score表的所有記錄。
select *
from SCORE
order by CNO asc, DEGREE desc;

– 9、 查詢“95031”班的學生人數。
select count(*)
from STUDENT
where CLASS = ‘95031’;

– 10、查詢Score表中的最高分的學生學號和課程號。
select
sno,
CNO
from SCORE
where DEGREE = (
select max(DEGREE)
from SCORE
);

– 11、查詢‘3-105’號課程的平均分。
select avg(DEGREE)
from SCORE
where CNO = ‘3-105’;

– 12、查詢Score表中至少有5名學生選修的並以3開頭的課程的平均分數。
select
avg(DEGREE),
CNO
from SCORE
where cno like ‘3%’
group by CNO
having count(*) > 5;

– 13、查詢最低分大於70,最高分小於90的Sno列。
select SNO
from SCORE
group by SNO
having min(DEGREE) > 70 and max(DEGREE) < 90;

– 14、查詢所有學生的Sname、Cno和Degree列。
select
SNAME,
CNO,
DEGREE
from STUDENT, SCORE
where STUDENT.SNO = SCORE.SNO;

– 15、查詢所有學生的Sno、Cname和Degree列。
select
SCORE.SNO,
CNO,
DEGREE
from STUDENT, SCORE
where STUDENT.SNO = SCORE.SNO;

– 16、查詢所有學生的Sname、Cname和Degree列。
SELECT
A.SNAME,
B.CNAME,
C.DEGREE
FROM STUDENT A
JOIN (COURSE B, SCORE C)
ON A.SNO = C.SNO AND B.CNO = C.CNO;

– 17、查詢“95033”班所選課程的平均分。
select avg(DEGREE)
from SCORE
where sno in (select SNO
from STUDENT
where CLASS = ‘95033’);

– 18、假設使用如下命令建立了一個grade表:
create table grade (
low numeric(3, 0),
upp numeric(3),
rank char(1)
);
insert into grade values (90, 100, ‘A’);
insert into grade values (80, 89, ‘B’);
insert into grade values (70, 79, ‘C’);
insert into grade values (60, 69, ‘D’);
insert into grade values (0, 59, ‘E’);
– 現查詢所有同學的Sno、Cno和rank列。
SELECT
A.SNO,
A.CNO,
B.RANK
FROM SCORE A, grade B
WHERE A.DEGREE BETWEEN B.LOW AND B.UPP
ORDER BY RANK;

– 19、查詢選修“3-105”課程的成績高於“109”號同學成績的所有同學的記錄。
select *
from SCORE
where CNO = ‘3-105’ and DEGREE > ALL (
select DEGREE
from SCORE
where SNO = ‘109’
);

set @@global.sql_mode = ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
set sql_mode = ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;

– 20、查詢score中選學一門以上課程的同學中分數為非最高分成績的記錄
select *
from SCORE
where DEGREE < (select MAX(DEGREE)
from SCORE)
group by SNO
having count(*) > 1;

– 21、查詢成績高於學號為“109”、課程號為“3-105”的成績的所有記錄。
– 同19

– 22、查詢和學號為108的同學同年出生的所有學生的Sno、Sname和Sbirthday列。
select
SNO,
SNAME,
SBIRTHDAY
from STUDENT
where year(SBIRTHDAY) = (
select year(SBIRTHDAY)
from STUDENT
where SNO = ‘108’
);

– 23、查詢“張旭“教師任課的學生成績。
select *
from SCORE
where cno = (
select CNO
from COURSE
inner join TEACHER on COURSE.TNO = TEACHER.TNO and TNAME = ‘張旭’
);

– 24、查詢選修某課程的同學人數多於5人的教師姓名。
select TNAME
from TEACHER
where TNO = (
select TNO
from COURSE
where CNO = (select CNO
from SCORE
group by CNO
having count(SNO) > 5)
);

– 25、查詢95033班和95031班全體學生的記錄。
select *
from STUDENT
where CLASS in (‘95033’, ‘95031’);

– 26、查詢存在有85分以上成績的課程Cno.
select cno
from SCORE
group by CNO
having MAX(DEGREE) > 85;

– 27、查詢出“計算機系“教師所教課程的成績表。
select *
from SCORE
where CNO in (select CNO
from TEACHER, COURSE
where DEPART = ‘計算機系’ and COURSE.TNO = TEACHER.TNO);

– 28、查詢“計算機系”與“電子工程系“不同職稱的教師的Tname和Prof
select
tname,
prof
from TEACHER
where depart = ‘計算機系’ and prof not in (
select prof
from TEACHER
where depart = ‘電子工程系’
);

– 29、查詢選修編號為“3-105“課程且成績至少高於選修編號為“3-245”的同學的Cno、Sno和Degree,並按Degree從高到低次序排序。
select
CNO,
SNO,
DEGREE
from SCORE
where CNO = ‘3-105’ and DEGREE > any (
select DEGREE
from SCORE
where CNO = ‘3-245’
)
order by DEGREE desc;

– 30、查詢選修編號為“3-105”且成績高於選修編號為“3-245”課程的同學的Cno、Sno和Degree.
SELECT *
FROM SCORE
WHERE DEGREE > ALL (
SELECT DEGREE
FROM SCORE
WHERE CNO = ‘3-245’
)
ORDER by DEGREE desc;

– 31、查詢所有教師和同學的name、sex和birthday.
select
TNAME name,
TSEX sex,
TBIRTHDAY birthday
from TEACHER
union
select
sname name,
SSEX sex,
SBIRTHDAY birthday
from STUDENT;

– 32、查詢所有“女”教師和“女”同學的name、sex和birthday.
select
TNAME name,
TSEX sex,
TBIRTHDAY birthday
from TEACHER
where TSEX = ‘女’
union
select
sname name,
SSEX sex,
SBIRTHDAY birthday
from STUDENT
where SSEX = ‘女’;

– 33、查詢成績比該課程平均成績低的同學的成績表。
SELECT A.*
FROM SCORE A
WHERE DEGREE < (SELECT AVG(DEGREE)
FROM SCORE B
WHERE A.CNO = B.CNO);

– 34、查詢所有任課教師的Tname和Depart.
select
TNAME,
DEPART
from TEACHER a
where exists(select *
from COURSE b
where a.TNO = b.TNO);

– 35、查詢所有未講課的教師的Tname和Depart.
select
TNAME,
DEPART
from TEACHER a
where tno not in (select tno
from COURSE);

– 36、查詢至少有2名男生的班號。
select CLASS
from STUDENT
where SSEX = ‘男’
group by CLASS
having count(SSEX) > 1;

– 37、查詢Student表中不姓“王”的同學記錄。
select *
from STUDENT
where SNAME not like “王%”;

– 38、查詢Student表中每個學生的姓名和年齡。
select
SNAME,
year(now()) - year(SBIRTHDAY)
from STUDENT;

– 39、查詢Student表中最大和最小的Sbirthday日期值。
select min(SBIRTHDAY) birthday
from STUDENT
union
select max(SBIRTHDAY) birthday
from STUDENT;

– 40、以班號和年齡從大到小的順序查詢Student表中的全部記錄。
select *
from STUDENT
order by CLASS desc, year(now()) - year(SBIRTHDAY) desc;

– 41、查詢“男”教師及其所上的課程。
select *
from TEACHER, COURSE
where TSEX = ‘男’ and COURSE.TNO = TEACHER.TNO;

– 42、查詢最高分同學的Sno、Cno和Degree列。
select
sno,
CNO,
DEGREE
from SCORE
where DEGREE = (select max(DEGREE)
from SCORE);

– 43、查詢和“李軍”同性別的所有同學的Sname.
select sname
from STUDENT
where SSEX = (select SSEX
from STUDENT
where SNAME = ‘李軍’);

– 44、查詢和“李軍”同性別並同班的同學Sname.
select sname
from STUDENT
where (SSEX, CLASS) = (select
SSEX,
CLASS
from STUDENT
where SNAME = ‘李軍’);

– 45、查詢所有選修“計算機導論”課程的“男”同學的成績表
select *
from SCORE, STUDENT
where SCORE.SNO = STUDENT.SNO and SSEX = ‘男’ and CNO = (
select CNO
from COURSE
where CNAME = ‘計算機導論’);

– 46、使用遊標方式來同時查詢每位同學的名字,他所選課程及成績。

declare
cursor student_cursor is
select S.SNO,S.SNAME,C.CNAME,SC.DEGREE as DEGREE
from STUDENT S, COURSE C, SCORE SC
where S.SNO=SC.SNO
and SC.CNO=C.CNO;

student_row student_cursor%ROWTYPE;

begin
open student_cursor;
loop
fetch student_cursor INTO student_row;
exit when student_cursor%NOTFOUND;
dbms_output.put_line( student_row.SNO || ‘’ ||

student_row.SNAME|| ‘’ || student_row.CNAME || ‘’ ||

student_row.DEGREE);
end loop;
close student_cursor;
END;
/

– 47、 宣告觸發器指令,每當有同學轉換班級時執行觸發器顯示當前和之前所在班級。

CREATE OR REPLACE TRIGGER display_class_changes
AFTER DELETE OR INSERT OR UPDATE ON student
FOR EACH ROW
WHEN (NEW.sno > 0)

BEGIN

dbms_output.put_line('Old class: ’ || :OLD.class);
dbms_output.put_line('New class: ’ || :NEW.class);
END;
/

Update student
set class=95031
where sno=109;

– 48、 刪除已設定的觸發器指令

DROP TRIGGER display_class_changes;

相關推薦

sql 經典練習題

use fuxi; CREATE TABLE STUDENT ( SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL, SSEX VARCHAR(2) NOT NULL, SBIRT

SQL資料庫經典練習題

select c_id 課程ID,        (select cname from course t1 where t1.c_id=t2.c_id) 課程名稱,        count(distinct case when score between 85 and 100 then s_id end )

SQL經典面試題集錦

create var nod size int 創建 mark art nbsp 1、問題背景 (1)學生表(學號,姓名,年齡,性別) student(S#,Sname,Sage,Ssex) (2)課程表(課程編號,課程名稱,教師

sql語句練習題及答案

統計 not 分數 where ren records else 升序 ble 表結構 創建表數據 SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- -------------------

sql 經典四表查詢

要求 信息 arch 1-1 size having select lec BE 題 目 : student(sid, sname, sage, ssex) -- 學生信息表(學生編號 自增,學生姓名, 學生出生年月, 性別); teacher(tid, tname) --

Python經典練習題1:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

span range pytho 能夠 break clas 完全平方數 imp 經典 Python經典練習題 網上能夠搜得到的答案為: for i in range(1,85): if 168 % i == 0: j = 168 / i;

SQL 經典題型解答(4)

() 分享圖片 特征 交叉 core 和平 兩個 true order by SQL 經典題型解答(4) 18、查詢各科成績最高分、最低分和平均分:以如下形式顯示:課程ID,課程name,最高分,最低分,平均分,及格率,中等率,優良率,優秀率 及格為>=60,中等為:

SQL 經典題型解答(5)

如果 ref 功能 tween avg des name each 知識 SQL 經典題型解答(5) @(數據庫) 20、查詢學生的總成績並進行排名 SELECT a.s, a.Sname, SUM( b.score ) AS sumscore,

SQL 經典題型解答(6)

排列 百分比 每一個 學習 cname .html between 分數 arch SQL 經典習題解答(6) 23、統計各科成績各分數段人數:課程編號,課程名稱,[100-85],[85-70],[70-60],[0-60]及所占百分比 SELECT t1.*,

sql經典筆試題

詳見此處   表結構 1.自行新增測試資料 2.查詢平均成績大於60分的同學的學號和平均成績; SELECT t1.sid 學生編號, AVG( t2.number ) 平均分 FROM student t1 LEFT JOIN score t2 O

【筆試/面試】SQL 經典面試題

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

sql經典題50例(學生表篇)(上)

這周開始徒手練習sql語句 對著上篇的sql學習路徑跟上一遍 現在上建表sql語句 SHOW CREATE TABLE COURSE – 1.學生表 Student(SNO,Sname,Sage,Ss

關於面試總結6-SQL經典面試題

前言 用一條SQL 語句查詢xuesheng表每門課都大於80 分的學生姓名,這個是面試考sql的一個非常經典的面試題 having和not in 查詢 xuesheng表每門課都大於80 分的學生姓名 name kecheng score

PL-SQL經典試題

6.1 賦值語句:通過變數實現查詢語句 declare   v_emp_record employees%rowtype;   v_employee_id employees.employee_id%type; begin   --使用賦值符號位變數進行賦值

Sql經典面試題

第一題: 為管理業務培訓資訊,建立3個表: S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學號,學員姓名,所屬單位,學員年齡 C(C#,CN)C#,CN分別代表課程編號,課程名稱 SC(S#,C#,G) S#,C#,G分別代表學號,所選的課程編號,學

sql 經典命令列建立資料庫 (增刪改查)

--主鍵:不允許為空值 create table gsbh ( bianhao int primary key,--主鍵為編號 xingming nvarchar(10), nianlin int ) --新增欄位記錄 注意沒有逗號, insert into gsbh values(1, '悟

SQL經典面試題目總結

Sql常用語法 下列語句部分是Mssql語句,不可以在access中使用。 SQL分類: DDL—資料定義語言(CREATE,ALTER,DROP,DECLARE) DML—資料操縱語言(SELECT,DELETE,UPDATE,INSERT) DCL—資料控制語言

SQL Server 練習題1

題目1 問題描述:為管理崗位業務培訓資訊,建立3個表:S (S#,SN,SD,SA)   S#,SN,SD,SA 分別代表學號、學員姓名、所屬單位、學員年齡C (C#,CN )        C#,CN       分別代表課程編號、課程名稱SC ( S#,C#,G )    S#,C#,G     分別

初學mysql經典練習題及答案

建立如下各表   班級表:class學生表:student教師表:teacher課程表:course成績表:score建立各表的語句:class表建立語句 create table class(cid int not null auto_increment primary k

SQL經典講解之配置SQL Server伺服器屬性

為了確保SQL Server 伺服器安全、穩定、高效地執行,應對伺服器屬性進行優化配置,主要從記憶體、安全性、資料庫設定和許可權等4個方面根據具體業務需求進行重新設定。 啟動SSMS主介面,在物件資源管理器中點選滑鼠右鍵,選擇“屬性”,開啟“伺服器屬性視窗”,對伺服器的記憶