資料庫sql 練習一

2021-08-19 06:11:02 字數 4461 閱讀 1781

最近接觸了一到資料庫sql的題目,在這裡記錄一下,方便以後檢視,也歡迎各位小夥伴一起學習,如果不對,還請指出,萬分感激。

題目:一。根據下面四個表,寫出sql

我直接在資料庫中新建了這幾張表,建庫指令碼語句如下:

create table pe_student(

id int(9),

grade_id int(9),

stu_name varchar(20)

);

學生表

create table pe_grade(

id int(9),

grade_name varchar(13)

);

年級表,id與pe_student 表中的grade_id 關聯

create table pr_stu_elective(

id int(9),

fk_stu_id int(9),

fk_course_id int(9)

);

選課表pr_stu_elective, 其中fk_stu_id 與pe_student表中的id關聯, fk_course_id 與下表pe_tch_course 表中的id 關聯

create table pe_tch_course(

id int(9),

course_name varchar(20)

);

課程表pe_tch_course

下面是我寫的一些假資料的指令碼:

insert into pe_student() values (1001, 2001, '張三1');

insert into pe_student() values (1002, 2002, '張三2');

insert into pe_student() values (1003, 2002, '張三3');

insert into pe_student() values (1004, 2002, '張三4');

insert into pe_student() values (1005, 2003, '張三5');

insert into pe_student() values (1006, 2003, '張三6');

insert into pe_student() values (1007, 2004, '張三7');

insert into pe_student() values (1008, 2005, '張三8');

insert into pe_student() values (1009, 2006, '張三9');

insert into pe_student() values (1010, 2006, '張三10');

insert into pe_student() values (1011, 2006, '張三11');

insert into pe_student() values (1012, 2006, '張三12');

insert into pe_student() values (1013, 2006, '張三13');

insert into pe_student() values (1014, 2002, '張三14');

insert into pe_student() values (1015, 2001, '張三15');

insert into pe_grade() values (2001, '一年級');

insert into pe_grade() values (2002, '二年級');

insert into pe_grade() values (2003, '三年級');

insert into pe_grade() values (2004, '四年級');

insert into pe_grade() values (2005, '五年級');

insert into pe_grade() values (2006, '六年級');

insert into pr_stu_elective () values (3001, 1001, 4001);

insert into pr_stu_elective () values (3002, 1002, 4002);

insert into pr_stu_elective () values (3003, 1003, 4001);

insert into pr_stu_elective () values (3004, 1004, 4003);

insert into pr_stu_elective () values (3005, 1005, 4003);

insert into pr_stu_elective () values (3006, 1006, 4002);

insert into pr_stu_elective () values (3007, 1007, 4002);

insert into pr_stu_elective () values (3008, 1008, 4004);

insert into pr_stu_elective () values (3009, 1009, 4006);

insert into pr_stu_elective () values (3010, 1010, 4005);

insert into pr_stu_elective () values (3011, 1011, 4003);

insert into pr_stu_elective () values (3012, 1012, 4006);

insert into pe_tch_course() values (4001, '語文');

insert into pe_tch_course() values (4002, '數學');

insert into pe_tch_course() values (4003, '英語');

insert into pe_tch_course() values (4004, '物理');

insert into pe_tch_course() values (4005, '化學');

insert into pe_tch_course() values (4006, '生物');

題目1.寫sql統計各個年級每門課程的選課數量,查詢結果顯示為一下格式:

年級名稱    課程名稱    選課數量

我寫的sql:

select n.grade_name, o.course_name, m.stu_sum

from (

select b.`grade_id`, a.`fk_course_id`, count(b.`id`) stu_sum

from pr_stu_elective a, pe_student b

where a.`fk_stu_id`=b.`id`

group by a.`fk_course_id`, b.`grade_id`

) m, pe_grade n, pe_tch_course o

where m.grade_id=n.id and m.fk_course_id=o.id

order by m.grade_id

其中: 

select b.`grade_id`, a.`fk_course_id`, count(b.`id`) stu_sum

from pr_stu_elective a, pe_student b

where a.`fk_stu_id`=b.`id`

group by a.`fk_course_id`, b.`grade_id`

為各個年級的每門課程的選課數量,都是以id關聯的,外層為按照題目需要將id轉換成名稱

題目二:寫sql統計各個年級沒有選課的學生數,查詢結果顯示的列如下:

年級名稱     學生數量

我寫的sql為:

select c2.grade_name, c1.sum_stu

from (

select b1.grade_id, count(b1.id) sum_stu

from (

select a1.id, a1.grade_id, a2.fk_course_id

from pe_student a1 left join pr_stu_elective a2

on a1.id=a2.fk_stu_id

) b1

where b1.fk_course_id is null

group by b1.grade_id

) c1, pe_grade c2

where c1.grade_id=c2.id

歡迎指正。

SQL資料庫操作練習(3)

1.多次insert過於麻煩,可以將插入資料併入一條insert,使用逗號分隔 2.設定主鍵和外來鍵 約束條件 3.巢狀查詢,注意第二個條件查詢結果要前後一致,x in select x 或 x not in select x 4.查詢條件與查詢元素不矛盾 例 s1 商乙個 了兩個零件 p1和p2,...

資料庫 SQL語法一

建立表語句 create table tablename col name1 type,col name2 type,常用type說明 int 正數 char length 定長字串,短於指定長度用空格填充 varchar length 變長字串 刪除表語句 drop table tablename...

資料庫之SQL 一

模式 描述關於庫和表的布局的以及特徵的資訊 列和資料型別 行 主鍵 在資料庫增刪改查時用sql的關鍵字進行構成 sql的關鍵字不能是列表的名 sql語句由子句構成,有些子句是必須的,有些是可選的.乙個子句通常是由乙個關鍵字和所提供的資料組成的 not操作符 upper 可以將文字轉換成大寫 lowe...