SQL數(shù)據(jù)庫十四種案例介紹
數(shù)據(jù)表
/*
Navicat SQLite Data Transfer
Source Server : school
Source Server Version : 30808
Source Host : :0
Target Server Type : SQLite
Target Server Version : 30808
File Encoding : 65001
Date: 2021-12-23 16:06:04
*/
PRAGMA foreign_keys = OFF;
-- ----------------------------
-- Table structure for Course
-- ----------------------------
DROP TABLE IF EXISTS "main"."Course";
CREATE TABLE Course(
courseid integer primary key autoincrement,
courseme varchar(32),
teacherid int
);
-- ----------------------------
-- Records of Course
-- ----------------------------
INSERT INTO "main"."Course" VALUES (3001, '語文', 1001);
INSERT INTO "main"."Course" VALUES (3002, '數(shù)學(xué)', 1002);
-- ----------------------------
-- Table structure for Mark
-- ----------------------------
DROP TABLE IF EXISTS "main"."Mark";
CREATE TABLE Mark(
userid integer,
courseid integer not null,
score int default 0
);
-- ----------------------------
-- Records of Mark
-- ----------------------------
INSERT INTO "main"."Mark" VALUES (2001, 3001, 89);
INSERT INTO "main"."Mark" VALUES (2001, 3002, 90);
INSERT INTO "main"."Mark" VALUES (2002, 3001, 66);
INSERT INTO "main"."Mark" VALUES (2003, 3002, 85);
-- ----------------------------
-- Table structure for sqlite_sequence
-- ----------------------------
DROP TABLE IF EXISTS "main"."sqlite_sequence";
CREATE TABLE sqlite_sequence(name,seq);
-- ----------------------------
-- Records of sqlite_sequence
-- ----------------------------
INSERT INTO "main"."sqlite_sequence" VALUES ('Teacher', 1002);
INSERT INTO "main"."sqlite_sequence" VALUES ('Student', 2002);
INSERT INTO "main"."sqlite_sequence" VALUES ('Course', 3002);
-- ----------------------------
-- Table structure for Student
-- ----------------------------
DROP TABLE IF EXISTS "main"."Stude
問題:
1、查詢“語文”課程比“數(shù)學(xué)”課程成績低的所有學(xué)生的學(xué)號
select a.userid from (select userid,score from Mark where courseid ='3001')a, (select userid,score from Mark where courseid ='3002')b where a.userid = b.userid and a.score<b.score;
2、查詢平均成績大于60分的同學(xué)的學(xué)號和平均成績
select userid,avg(score) from Mark group by userid having avg(score)>60;
3、查詢所有同學(xué)的學(xué)號、姓名、選課數(shù)、總成績
select s.userid ,s.username ,count_courseid as 選課數(shù), sum_score as 總成績 from Student s left join (select userid,count(courseid ) as count_courseid,sum(score) as sum_score from Mark group by userid )sc on s.userid = sc.userid;
4、查詢姓‘李'的老師的個數(shù):
select count(teachername ) from Teacher where teachername like '張%';
5、檢索語文課程分?jǐn)?shù)小于60,按分?jǐn)?shù)降序排列的同學(xué)學(xué)號:
select userid ,score from Mark where courseid ='3001' and score<60 order by score desc;
6、查詢學(xué)/沒學(xué)過”張三”老師講授的任一門課程的學(xué)生姓名
select username
from Student
where userid in (
select userid
from Mark,Course,Teacher
where Course.teacherid = Teacher.teacherid and Mark.courseid = Course.courseid
and Teacher.teachername ='張三'
);
7、查詢?nèi)繉W(xué)生選修的課程和課程號和課程名:
select courseid ,courseme from Course where courseid in (select courseid from Mark group by courseid);
8、檢索選修兩門課程的學(xué)生學(xué)號:
select userid from Mark group by userid having count(8) == 2;
9、查詢各個課程及相應(yīng)的選修人數(shù)
select courseid ,count(*) from Course group by courseid ;
10、查詢選修“張三”老師所授課程的學(xué)生中,成績最高的學(xué)生姓名及其成績
select Student.username ,Mark.score from Mark left join Student on Mark.userid = Student.userid left join Course on Mark.courseid = Course.courseid left join Teacher on Course.teacherid = Teacher.teacherid where Teacher.teachername = '張三' and Mark.score = ( select max(score) from Mark sc_1 where Mark.courseid = sc_1.courseid);
11、求選了課程的學(xué)生人數(shù):
select count(2) from (select distinct userid from Mark)a;
12、查詢課程編號為“語文”且課程成績在80分以上的學(xué)生的學(xué)號和姓名
select Mark.userid,Student.username from Mark left join Student on Mark.userid = Student.userid where Mark.courseid = '3001' and Mark.score>80;
13、查詢每門課程的平均成績,結(jié)果按平均成績升序排序,平均成績相同時,按課程號降序排列
select courseid ,avg(score) from Mark group by courseid order by avg(score),courseid desc;
14、查詢課程名稱為“數(shù)學(xué)”,且分?jǐn)?shù)高于85的學(xué)生名字和分?jǐn)?shù):
select c.courseme ,Student.userid ,Student.username ,Mark.score from Course c left join Mark on Mark.courseid = c.courseid LEFT JOIN Student on Student.userid = Mark.userid where c.courseme = '數(shù)學(xué)' and Mark.score>85;
到此這篇關(guān)于SQL數(shù)據(jù)庫十四種案例介紹的文章就介紹到這了,更多相關(guān)SQL數(shù)據(jù)庫案例內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信