-- 班級表CREATETABLE CLASS(
classid VARCHAR(3)PRIMARYKEY,`subject`VARCHAR(20)NOTNULLDEFAULT'',
deptname VARCHAR(20)NOTNULLDEFAULT'',
enrolltime YEARNOTNULLDEFAULT9,
num INTEGERNOTNULLDEFAULT0,FOREIGNKEY(deptname)REFERENCES DEPARTMENT(deptname));-- 學生表CREATETABLE STUDENTS(
studentid VARCHAR(4)PRIMARYKEY,`name`VARCHAR(20)NOTNULLDEFAULT'',
age INTEGERNOTNULLDEFAULT0,
classid VARCHAR(3),FOREIGNKEY(classid)REFERENCES CLASS(classid));-- 系表CREATETABLE DEPARTMENT(
departmentid VARCHAR(4)PRIMARYKEY,
deptname VARCHAR(20)UNIQUENOTNULLDEFAULT'');-- 插入數據INSERTINTO DEPARTMENT VALUES(001,'數學');INSERTINTO DEPARTMENT VALUES(002,'計算機');INSERTINTO DEPARTMENT VALUES(003,'化學');INSERTINTO DEPARTMENT VALUES(004,'中文');INSERTINTO DEPARTMENT VALUES(005,'經濟');INSERTINTO class VALUES(101,'軟件','計算機',1995,20);INSERTINTO class VALUES(102,'微電子','計算機',1996,30);INSERTINTO class VALUES(111,'無機化學','化學',1995,29);INSERTINTO class VALUES(112,'高分子化學','化學',1996,25);INSERTINTO class VALUES(121,'統計數學','數學',1995,20);INSERTINTO class VALUES(131,'現代語言','中文',1996,20);INSERTINTO class VALUES(141,'國際貿易','經濟',1997,30);INSERTINTO class VALUES(142,'國際金融','經濟',1996,14);INSERTINTO hsp_student VALUES(8101,'張三',18,101);INSERTINTO hsp_student VALUES(8102,'錢四',16,121);INSERTINTO hsp_student VALUES(8103,'王玲',17,131);INSERTINTO hsp_student VALUES(8105,'李飛',19,102);INSERTINTO hsp_student VALUES(8109,'趙四',18,141);INSERTINTO hsp_student VALUES(8110,'李可',20,142);INSERTINTO hsp_student VALUES(8201,'張飛',18,111);INSERTINTO hsp_student VALUES(8302,'周瑜',16,112);INSERTINTO hsp_student VALUES(8203,'王亮',17,111);INSERTINTO hsp_student VALUES(8305,'董慶',19,102);INSERTINTO hsp_student VALUES(8409,'趙龍',18,101);-- 3.1SELECT*FROM STUDENTSWHERE`name`LIKE'李%'-- 3.2SELECTCOUNT(DISTINCT subject)AS nums, deptname FROM classGROUPBY deptname HAVING nums >1-- 3.3 列出人數大于等于30的系的編號和名字。-- 1. 先查出各個系有多少人, 并得到 >= 30 的系SELECTSUM(num)AS nums, deptname FROM class GROUPBY deptname HAVING nums >=30-- 2. 將上面的結果看成一個臨時表 和 department 聯合查詢即可SELECT tmp.*, department.departmentidFROM department ,(SELECTSUM(num)AS nums, deptname FROM class GROUPBY deptname HAVING nums >=30) tmp WHERE department.deptname = tmp.deptname;-- (4) 學校又新增加了一個物理系,編號為006-- 添加一條數據INSERTINTO department VALUES('006','物理系');-- (5) 學生張三退學,請更新相關的表-- 分析:1. 張三所在班級的人數-1 -- 2. 將張三從學生表刪除 -- 3. 需要使用事務控制-- 開啟事務STARTTRANSACTION;-- 張三所在班級的人數-1 UPDATE class SET num = num -1WHERE classid =(SELECT classid FROM students WHERE NAME ='張三');DELETEFROM studentsWHERE NAME ='張三';-- 提交事務COMMIT;