小編給大家分享一下SQL數據庫的案例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
/* 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, '數學', 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, '李四');
1、查詢“語文”課程比“數學”課程成績低的所有學生的學號
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分的同學的學號和平均成績
select userid,avg(score) from Mark group by userid having avg(score)>60;
3、查詢所有同學的學號、姓名、選課數、總成績
select s.userid ,s.username ,count_courseid as 選課數, 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、查詢姓‘李'的老師的個數:
select count(teachername ) from Teacher where teachername like '張%';
5、檢索語文課程分數小于60,按分數降序排列的同學學號:
select userid ,score from Mark where courseid ='3001' and score<60 order by score desc;
6、查詢學/沒學過”張三”老師講授的任一門課程的學生姓名
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、查詢全部學生選修的課程和課程號和課程名:
select courseid ,courseme from Course where courseid in (select courseid from Mark group by courseid);
8、檢索選修兩門課程的學生學號:
select userid from Mark group by userid having count(8) == 2;
9、查詢各個課程及相應的選修人數
select courseid ,count(*) from Course group by courseid ;
10、查詢選修“張三”老師所授課程的學生中,成績最高的學生姓名及其成績
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、求選了課程的學生人數:
select count(2) from (select distinct userid from Mark)a;
12、查詢課程編號為“語文”且課程成績在80分以上的學生的學號和姓名
select Mark.userid,Student.username from Mark left join Student on Mark.userid = Student.userid where Mark.courseid = '3001' and Mark.score>80;
13、查詢每門課程的平均成績,結果按平均成績升序排序,平均成績相同時,按課程號降序排列
select courseid ,avg(score) from Mark group by courseid order by avg(score),courseid desc;
14、查詢課程名稱為“數學”,且分數高于85的學生名字和分數:
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 = '數學' and Mark.score>85;
以上是“SQL數據庫的案例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。