SQL數(shù)據(jù)庫(kù)十四種案例介紹
數(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, '語(yǔ)文', 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"."Student";
CREATE TABLE Student(
userid integer primary key autoincrement,
username varchar(32),
userage int,
usersex varchar(32)
);
-- ----------------------------
-- Records of Student
-- ----------------------------
INSERT INTO "main"."Student" VALUES (2001, '小明', 18, '男');
INSERT INTO "main"."Student" VALUES (2002, '小紅', 18, '女');
-- ----------------------------
-- Table structure for Teacher
-- ----------------------------
DROP TABLE IF EXISTS "main"."Teacher";
CREATE TABLE Teacher(
teacherid integer primary key autoincrement,
teachername varchar(32)
);
-- ----------------------------
-- Records of Teacher
-- ----------------------------
INSERT INTO "main"."Teacher" VALUES (1001, '張三');
INSERT INTO "main"."Teacher" VALUES (1002, '李四');
問(wèn)題:
1、查詢“語(yǔ)文”課程比“數(shù)學(xué)”課程成績(jī)低的所有學(xué)生的學(xué)號(hào)
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、查詢平均成績(jī)大于60分的同學(xué)的學(xué)號(hào)和平均成績(jī)
select userid,avg(score) from Mark group by userid having avg(score)>60;
3、查詢所有同學(xué)的學(xué)號(hào)、姓名、選課數(shù)、總成績(jī)
select s.userid ,s.username ,count_courseid as 選課數(shù), sum_score as 總成績(jī) 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、查詢姓‘李'的老師的個(gè)數(shù):
select count(teachername ) from Teacher where teachername like '張%';
5、檢索語(yǔ)文課程分?jǐn)?shù)小于60,按分?jǐn)?shù)降序排列的同學(xué)學(xué)號(hào):
select userid ,score from Mark where courseid ='3001' and score<60 order by score desc;
6、查詢學(xué)/沒(méi)學(xué)過(guò)”張三”老師講授的任一門(mén)課程的學(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é)生選修的課程和課程號(hào)和課程名:
select courseid ,courseme from Course where courseid in (select courseid from Mark group by courseid);
8、檢索選修兩門(mén)課程的學(xué)生學(xué)號(hào):
select userid from Mark group by userid having count(8) == 2;
9、查詢各個(gè)課程及相應(yīng)的選修人數(shù)
select courseid ,count(*) from Course group by courseid ;
10、查詢選修“張三”老師所授課程的學(xué)生中,成績(jī)最高的學(xué)生姓名及其成績(jī)
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、查詢課程編號(hào)為“語(yǔ)文”且課程成績(jī)?cè)?0分以上的學(xué)生的學(xué)號(hào)和姓名
select Mark.userid,Student.username from Mark left join Student on Mark.userid = Student.userid where Mark.courseid = '3001' and Mark.score>80;
13、查詢每門(mén)課程的平均成績(jī),結(jié)果按平均成績(jī)升序排序,平均成績(jī)相同時(shí),按課程號(hào)降序排列
select courseid ,avg(score) from Mark group by courseid order by avg(score),courseid desc;
14、查詢課程名稱(chēng)為“數(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ù)庫(kù)十四種案例介紹的文章就介紹到這了,更多相關(guān)SQL數(shù)據(jù)庫(kù)案例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 5.7.13 安裝配置方法圖文教程(win10)
這篇文章主要為大家分享了mysql 5.7.13 安裝配置方法圖文教程,感興趣的朋友可以參考一下2016-06-06
MySL實(shí)現(xiàn)如等級(jí)成色等特殊順序的排序詳解
這篇文章主要為大家介紹了MySL實(shí)現(xiàn)如等級(jí)成色等特殊順序的排序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
windows 64位下MySQL 8.0.15安裝教程圖文詳解
本文通過(guò)圖文并茂的形式給大家介紹了MySQL 8.0.15安裝教程(windows 64位),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
mysql利用group_concat()合并多行數(shù)據(jù)到一行
把查詢name字段得到的多行記錄進(jìn)行合并,可以通過(guò)程序?qū)崿F(xiàn),但也可直接在sql層完成,需要的朋友可以參考下2014-07-07
mysql 控制臺(tái)程序的提示符 prompt 字符串設(shè)置
mysql 控制臺(tái)程序的提示符 prompt 字符串設(shè)置,學(xué)習(xí)mysql的朋友可以參考下。2011-08-08

