1. 程式人生 > >SQL 45道經典練習

SQL 45道經典練習

前言

最近學了SQL,但對查詢等操作還是不熟練,於是網上找了一套題目自己做,從實際操縱中一點一點學習sql的語句,相信大家耐心做完題後,會和我一樣對sql有一個新的領悟

一:準備工作

準備建庫
下面是建庫程式碼

CREATE TABLE students
(sno VARCHAR(3) NOT NULL, 
sname VARCHAR(4) NOT NULL,
ssex VARCHAR(2) NOT NULL, 
sbirthday DATETIME,
class VARCHAR(5))

CREATE TABLE courses
(cno VARCHAR(5) NOT NULL, 
cname VARCHAR(10
) NOT NULL, tno VARCHAR(10) NOT NULL) CREATE TABLE scores (sno VARCHAR(3) NOT NULL, cno VARCHAR(5) NOT NULL, degree NUMERIC(10, 1) NOT NULL) CREATE TABLE teachers (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 STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾華' ,'男' ,'1977-09-01',95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,'1975-10-02',95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王麗' ,'女' ,'1976-01-23'
,95033); INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李軍' ,'男' ,'1976-02-20',95033); INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,'1975-02-10',95031); INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陸君' ,'男' ,'1974-06-03',95031); INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('3-105' ,'計算機導論',825); INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('3-245' ,'作業系統' ,804); INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('6-166' ,'資料電路' ,856); INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('9-888' ,'高等數學' ,100); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,'3-245',86); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,'3-245',75); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,'3-245',68); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,'3-105',92); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,'3-105',88); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,'3-105',76); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,'3-105',64); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,'3-105',91); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,'3-105',78); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,'6-166',85); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,'6-106',79); INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,'6-166',81); INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,'李誠','男','1958-12-02','副教授','計算機系'); INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,'張旭','男','1969-03-12','講師','電子工程系'); INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,'王萍','女','1972-05-05','助教','計算機系'); INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,'劉冰','女','1977-08-14','助教','電子工程系');

問題:

1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。
2、 查詢教師所有的單位即不重複的Depart列。
3、 查詢Student表的所有記錄。
4、 查詢Score表中成績在6080之間的所有記錄。
5、 查詢Score表中成績為858688的記錄。
6、 查詢Student表中“95031”班或性別為“女”的同學記錄。
7、 以Class降序查詢Student表的所有記錄。
8、 以Cno升序、Degree降序查詢Score表的所有記錄。
9、 查詢“95031”班的學生人數。
10、查詢Score表中的最高分的學生學號和課程號。
11、查詢‘3-105’號課程的平均分。
12、查詢Score表中至少有5名學生選修的並以3開頭的課程的平均分數。
13、查詢最低分大於70,最高分小於90的Sno列。
14、查詢所有學生的Sname、Cno和Degree列。
15、查詢所有學生的Sno、Cname和Degree列。
16、查詢所有學生的Sname、Cname和Degree列。
17、查詢“95033”班所選課程的平均分。
18、假設使用如下命令建立了一個grade表:
create table grade(low   number(3,0),upp   number(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’);
commit;
現查詢所有同學的Sno、Cno和rank列。
19、查詢選修“3-105”課程的成績高於“109”號同學成績的所有同學的記錄。
20、查詢score中選學一門以上課程的同學中分數為非最高分成績的記錄。
21、查詢成績高於學號為“109”、課程號為“3-105”的成績的所有記錄。
22、查詢和學號為108的同學同年出生的所有學生的Sno、Sname和Sbirthday列。
23、查詢“張旭“教師任課的學生成績。
24、查詢選修某課程的同學人數多於5人的教師姓名。
25、查詢95033班和95031班全體學生的記錄。
26、查詢存在有85分以上成績的課程Cno.
27、查詢出“計算機系“教師所教課程的成績表。
28、查詢“計算機系”與“電子工程系“不同職稱的教師的Tname和Prof。
29、查詢選修編號為“3-105“課程且成績至少高於選修編號為“3-245”的同學的Cno、Sno和Degree,並按Degree從高到低次序排序。
30、查詢選修編號為“3-105”且成績高於選修編號為“3-245”課程的同學的Cno、Sno和Degree.
31、查詢所有教師和同學的name、sex和birthday.
32、查詢所有“女”教師和“女”同學的name、sex和birthday.
33、查詢成績比該課程平均成績低的同學的成績表。
34、查詢所有任課教師的Tname和Depart.
35  查詢所有未講課的教師的Tname和Depart. 
36、查詢至少有2名男生的班號。
37、查詢Student表中不姓“王”的同學記錄。
38、查詢Student表中每個學生的姓名和年齡。
39、查詢Student表中最大和最小的Sbirthday日期值。
40、以班號和年齡從大到小的順序查詢Student表中的全部記錄。
41、查詢“男”教師及其所上的課程。
42、查詢最高分同學的Sno、Cno和Degree列。
43、查詢和“李軍”同性別的所有同學的Sname.
44、查詢和“李軍”同性別並同班的同學Sname.
45、查詢所有選修“計算機導論”課程的“男”同學的成績表

部分參考答案

1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。
select Sname,Ssex,Class from students
2、 查詢教師所有的單位即不重複的Depart列。
select distinct Depart from teachers 
3、 查詢Student表的所有記錄。
select *from students
4、 查詢Score表中成績在6080之間的所有記錄。
select *from scores where degree>=60 and degree<=80
5、 查詢Score表中成績為858688的記錄。
select *from scores where degree=85 or degree=86 or degree=88
6、 查詢Student表中“95031”班或性別為“女”的同學記錄。
select *from students where class='95031' or ssex='女'
7、 以Class降序查詢Student表的所有記錄。
select *from students order by class desc
8、 以Cno升序、Degree降序查詢Score表的所有記錄。
select *from scores order by cno asc, degree desc
9、 查詢“95031”班的學生人數。
select count(distinct sno) from students where class='95031'
10、查詢Score表中的最高分的學生學號和課程號。
select sno,cno from scores where 
degree=(select max(degree)  from scores)
11、查詢'3-105'號課程的平均分。
select avg(degree) from scores where cno='3-105'
12、查詢Score表中至少有5名學生選修的並以3開頭的課程的平均分數。
select avg(degree) from scores where 
cno= (select cno from scores group by cno 
having cno like '3%' and count(*)>5 )

13、查詢最低分大於70,最高分小於90的Sno列。

select sno from scores group by sno having 
min(degree) >70 and max(degree) <90
14、查詢所有學生的Sname、Cno和Degree列。
select sname,cno,degree from students ,scores
where students.sno=scores.sno
15、查詢所有學生的Sno、Cname和Degree列。
select students.sno,cname,degree from students ,courses,scores
where students.sno=scores.sno and scores.cno=courses.cno

16、查詢所有學生的Sname、Cname和Degree列。
select Sname,cname,degree from students ,courses,scores
where students.sno=scores.sno and scores.cno=courses.cno
17、查詢“95033”班所選課程的平均分。
select avg(degree) from scores where 
sno in (select sno from students where class='95033')
18、假設使用如下命令建立了一個grade表:
create table grade(low float(3),upp   float(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');
commit;
現查詢所有同學的Sno、Cno和rank列。
select sno,cno,grade.rank from scores,grade
where degree  between low and upp 

19、查詢選修“3-105”課程的成績高於“109”號同學成績的所有同學的記錄。
select *from students where sno in
(select sno from scores where  cno='3-105' and  
degree>(select scores.degree from scores 
where sno='109' and cno='3-105'))
20、查詢score中選學一門以上課程的同學中分數為非最高分成績的記錄。
select * from scores a where a.degree != (
select MAX(degree) from scores b group by sno having 
COUNT (b.cno)>1 and a.sno=b.sno)
select * from scores order by sno 

21、查詢成績高於學號為“109”、課程號為“3-105”的成績的所有記錄。
select * from scores where  cno='3-105' and  
degree>(select scores.degree from scores 
where sno='109' and cno='3-105')
22、查詢和學號為108的同學同年出生的所有學生的Sno、Sname和Sbirthday列。
SELECT s1.Sno,s1.Sname,s1.Sbirthday
FROM Students AS s1 INNER JOIN Students AS s2
ON(YEAR(s1.Sbirthday)=YEAR(s2.Sbirthday))
WHERE s2.Sno='108';
23、查詢“張旭“教師任課的學生成績。
select sno,degree from scores where cno = 
(select cno from courses where tno =
(select tno from teachers where tname='張旭'))
24、查詢選修某課程的同學人數多於5人的教師姓名。
select tname from teachers where tno=(
select tno from courses where cno =(
select cno from scores  group by cno having COUNT(sno)>5))
25、查詢95033班和95031班全體學生的記錄。
select * from students where 
class='95033' or class='95031' order by  class desc
26、查詢存在有85分以上成績的課程Cno.
select cno from scores group by cno having MAX(degree)>85
27、查詢出“計算機系“教師所教課程的成績表。
select * from scores ,teachers,courses where 
depart='計算機系' and courses.tno=teachers.tno and
scores.cno=courses.cno

28、查詢“計算機系”與“電子工程系“不同職稱的教師的Tname和Prof。
select tname,prof from teachers where depart='計算機系' or depart='電子工程系'
29、查詢選修編號為“3-105“課程且成績至少高於選修編號為“3-245”的同學
的Cno、Sno和Degree,並按Degree從高到低次序排序。
select * from scores a where cno='3-105' and sno in
(select sno from scores b where cno='3-245' and a.degree>b.degree)
 order by degree desc
30、查詢選修編號為“3-105”且成績高於選修編號為“3-245”課程的同學的Cno、Sno和Degree.

31、查詢所有教師和同學的name、sex和birthday.
select tname as name ,tsex as sex ,tbirthday as birthday 
from teachers 
union
select sname as name ,ssex as sex ,sbirthday as birthday  
from students
32、查詢所有“女”教師和“女”同學的name、sex和birthday.
select tname as name ,tsex as sex ,tbirthday as birthday 
from teachers where tsex='女'
union
select sname as name ,ssex as sex ,sbirthday as birthday  
from students where ssex='女'
33、查詢成績比該課程平均成績低的同學的成績表。
select *from scores a where a.degree <
(select AVG(degree) from scores b group by cno having b.cno=a.cno) 
select AVG(degree)as avg,cno from scores group by cno
34、查詢所有任課教師的Tname和Depart.
select tname,depart from teachers where tno in(
select tno from courses)
35  查詢所有未講課的教師的Tname和Depart. 
select tname,depart from teachers where tno not in(
select tno from courses)
36、查詢至少有2名男生的班號。
select class from students group by class having COUNT(ssex)>1
37、查詢Student表中不姓“王”的同學記錄。
select *from students where sname not like '王_'
38、查詢Student表中每個學生的姓名和年齡。

39、查詢Student表中最大和最小的Sbirthday日期值。
select MAX(sbirthday),MIN(sbirthday) from students 
40、以班號和年齡從大到小的順序查詢Student表中的全部記錄。
select * from students order by class desc ,sbirthday 
41、查詢“男”教師及其所上的課程。
select * from courses,teachers where tsex='男' and teachers.tno=courses.tno
42、查詢最高分同學的Sno、Cno和Degree列。
select * from scores a where a.degree=(
select MAX(b.degree) from scores b group by b.cno having a.cno=b.cno)
43、查詢和“李軍”同性別的所有同學的Sname.
select sname from students where sname!='李軍' and ssex=(
select ssex from students where sname='李軍')
44、查詢和“李軍”同性別並同班的同學Sname.
select a.sname from students a,students b where 
b.sname='李軍' and a.ssex=b.ssex and a.class=b.class
45、查詢所有選修“計算機導論”課程的“男”同學的成績表
select scores.* from scores,courses,students where 
cname='計算機導論'and courses.cno=scores.cno and 
scores.sno =students.sno and students.ssex='男'

相關推薦

SQL 45經典練習

前言 最近學了SQL,但對查詢等操作還是不熟練,於是網上找了一套題目自己做,從實際操縱中一點一點學習sql的語句,相信大家耐心做完題後,會和我一樣對sql有一個新的領悟 一:準備工作 準備建庫 下面是建庫程式碼 CREATE TABLE s

45經典SQL練習(四)

-- 31、查詢所有教師和同學的name、sex和birthday. SELECT TNAME AS '名字',TSEX AS SEX,TBIRTHDAY AS BIRTHDAY FROM TEACHER UNION SELECT SNAME AS '名字',SSEX AS SEX,SBIRTHD

45經典SQL練習(二)

-- 11、查詢‘3-105’號課程的平均分。 SELECT AVG(DEGREE) AS AVG_DEGREE FROM SCORE WHERE CNO='3-105'; -- 12、查詢Score表中至少有5名學生選修的並以3開頭的課程的平均分數。 SELECT CNO,AVG(DEGREE

45經典SQL練習(一)

-- 1.查詢Student表中的所有記錄的Sname、Ssex和Class列 SELECT SNAME,SSEX,SCLASS FROM STUDENT; -- 2. 查詢教師所有的單位即不重複的Depart列 SELECT DISTINCT DEPART FROM TEACHER; --

MySQL查詢語句的50經典練習

這50道查詢練習確實很經典,題是我在網上找的,做完後你的SQL編寫能力肯定有一個提升。發現問題的歡迎提出,有更好方法的,可以提出來大家共同學習。 ---------建立資料庫、表、插入資料---------------------- -- 建表 -- 學生表 CREATE

MySQL查詢練習45

題目:設有一資料庫,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師資訊表(Teacher)。              四個表的結構分別如表1-

MySql_34經典Sql試題

from copyright update ges mysql 直接 info 1.2 class MySql_34道經典Sql試題 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/xi

50經典SQL語句題

表 Student(S#,Sname,Sage,Ssex) 學生表 Course(C#,Cname,T#) 課程表 SC(S#,C#,score) 成績表 Teacher(T#,Tname) 教師表 問題: 1、查詢“001”課程比“002”課程成績

查詢練習45題)

題目:設有一資料庫,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師資訊表(Teacher)。              四個表的結構分別如表1-1的表(一)~表(四)所示,資料如表1-2的表(一)~表(四)所示。用SQL語句建立四

MySQL查詢語句的45練習

一、設有一資料庫,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師資訊表(Teacher)。四個表的結構分別如表1-1的表(一)~表(四)所示,資料如表1-2的表(一)~表(四)所示。用SQL語句建立四個表並完成相關題目。                 表1-1資料

Linux下C語言的幾經典面試題

ref 使用 linu 學習資源 chan ima 什麽 img c語言 本篇文章整理了幾道Linux下C語言的經典面試題,相信對大家更好的理解Linux下的C語言會有很大的幫助,歡迎大家探討指正。 1、如果在Linux下使用GCC編譯器執行下列程序,輸出結果是什麽? 答

SQL的基本語法練習

col to_char 通用 模糊 工資 轉換成 截斷 使用 round select EMPNO,SAL from emp where SAL BETWEEN 1000 and 2000--從enp中獲取sal中1000到2000之間的數據 select ENAME,S

Sql Server】經典SQL語句大全

left 提高 status 需要 minute etime 路徑 求和 組合 一、基礎 1、說明:創建數據庫 CREATE DATABASE database-name 2、說明:刪除數據庫 drop database dbname 3、說明:備份sql

分享幾經典的javascript面試題

cti function 一點 經典的 bsp log 分享 輸出 for 這幾道題目還是有一點意思的,大家可以研究一番,對自己的技能提升絕對有幫助。 1、調用過程中輸出的內容是什麽 function fun(n, o) { console.log(o);

45

gree pan student avg desc 助教 類型 arc 不重復 表1-1數據庫的表結構 表(一)Student (學生表) 屬性名 數據類型 可否為空

PHP數據庫45題整理~~~啦啦啦

order by 職稱 avg tab sel 課程 har sele 最大值 select * FROM student-- 二:查詢student表中所有記錄select * FROM score WHERE Degree>60 AND Degree<80-

MYSQL數據庫45練習題

練習題 l數據庫 tin 子查詢 teacher int mysql 職稱 values --第一題查詢Student表中的所有記錄的Sname、Ssex和Class列。select Sname,Ssex,Class from Student;--第二題查詢教師所有的單位即

2017年10月29日 數據庫查詢總結&45

存在 date birt 最大 電路 講課 ear col 類型 日期函數: 當前時間:GetDate() 兩個時間差:DateDiff() 一、 設有一數據庫,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師信息表(

經典練習及步驟分解

read 循環 *** 所有 sda 接收 console 數組 數字 5-1 輸出1000以內的水仙花數 for (int i = 100; i < 1000; i++) { int a = i / 100

SQL 連接查詢練習

sin join 表連接 sele 語句 練習 style using 連接 --連接查詢練習 --內連