數(shù)據(jù)庫表的查詢操作實(shí)踐演練(實(shí)驗(yàn)三)
繼前兩次的實(shí)驗(yàn),本次實(shí)驗(yàn)以熟練掌握利用select語句進(jìn)行各種查詢操作:單表查詢、多表連接及查詢、嵌套查詢、集合查詢等,鞏固數(shù)據(jù)庫查詢操作。
下面就跟著小編一起練習(xí)吧!
在實(shí)驗(yàn)一創(chuàng)建并插入數(shù)據(jù)的表(Student, Course,SC,Teacher,TC)的基礎(chǔ)上,完成以下操作。
(1)將教師‘羅莉'的名字改為‘羅莉莉'。
(2)將兩個(gè)同學(xué)(數(shù)據(jù)自己臨時(shí)設(shè)置,用后即刪除)的兩門課程的成績以運(yùn)行sql程序文件的形式插入score表中。該題用以驗(yàn)證、理解和掌握關(guān)系模型的完整性規(guī)則;
插入:
insert into Score(sno,cno,grade) values('04261007','C004','79')
查詢:
刪除:
(3)求每門課的平均成績,并把結(jié)果存入average表(自行設(shè)計(jì)并創(chuàng)建);
(
cno CHAR(8),
avscore numeric(5,2),
constraint a1 primary key (cno),
constraint a2 foreign key (cno) references Course(cno),
)
insert into average(cno,avscore)
select distinct cno ,avg(grade) from Score group by cno
(4)將學(xué)生“馬麗”的年齡改為24;
(5)將所有學(xué)生的szipcode屬性列值填補(bǔ)上;
(6)將average表中的所有課程的平均成績置零;
(7)刪除average表中的課程號(hào)為‘C007'的平均成績記錄;
(8)刪除所有average表中平均成績記錄;
(9)建立一個(gè)臨時(shí)學(xué)生信息表(tstudent),刪除該表中的學(xué)號(hào)含‘101'的所有學(xué)生記錄。
Delete from tstudent where Sno like '001011%';
(10)查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名;
(11)查詢?nèi)w學(xué)生的學(xué)號(hào)、姓名、所屬系;
(12)查詢?nèi)w學(xué)生的詳細(xì)記錄;
(13)查詢?nèi)w學(xué)生的姓名及其年齡;
(14)查詢?nèi)w學(xué)生的姓名、出生年份;
(15)查詢所有修過課的學(xué)生的學(xué)號(hào);
select distinct student.sno from Student,Score where Student.sno=Score.sno and Score.grade>0 ;
(16)查詢“計(jì)算機(jī)系”班全體學(xué)生名單;
(17)查詢查詢所有年齡在23歲以下的學(xué)生姓名及其年齡;
(18)查詢考試成績有不及格的學(xué)生的學(xué)號(hào);
(19)查詢年齡在20至22歲之間的學(xué)生姓名、系和年齡;
(20)查詢年齡不在20至22歲之間的學(xué)生姓名、系和年齡;
(21)查詢“計(jì)算機(jī)系”和“電商系”的學(xué)生的姓名;
(22)查詢既不是“計(jì)11”也不是“計(jì)61”班的學(xué)生的姓名和班級(jí)信息;
(23)查詢學(xué)號(hào)為“04262002”的學(xué)生的詳細(xì)情況;
[code]select student.sno,sname,ssex,2014-year(sbirth),sclass,grade from Student,Score where Student.sno=Score.sno and Student.sno='04262002';
(24)查詢學(xué)號(hào)以“04262”打頭的學(xué)生信息;
(25)查詢所有姓“張”學(xué)生的學(xué)號(hào)、姓名、性別、年齡;
(26)查詢名字中第二個(gè)字有“海”字的學(xué)生的學(xué)號(hào)、姓名、性別、年齡;
(27)查詢所有不姓“劉”學(xué)生的姓名;
(28)查詢課程號(hào)以“C”開頭的最后兩個(gè)字母為“05”的課程號(hào)和課程名;
(29)某些學(xué)生選修某門課程后沒有參加考試,所以有選修課記錄,但沒有考試成績,試查找缺少考試成績的學(xué)生和相應(yīng)的課程號(hào);
(30)查找全部有成績記錄的學(xué)生學(xué)號(hào)、課程號(hào);
(31)查找“計(jì)算機(jī)系”年齡在22歲以下的學(xué)生學(xué)號(hào)、姓名;
(32)查找選修了“C001”號(hào)課程的學(xué)生學(xué)號(hào)及其成績,查詢結(jié)果按分?jǐn)?shù)降序排序;
(33)查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系升序排列,對(duì)同一系中的學(xué)生按年齡降序排列;
(34)查詢學(xué)生總?cè)藬?shù);
(35)查詢選修了課程的學(xué)生人數(shù);
(36)在所有課程中查詢最高分的學(xué)生學(xué)號(hào)和成績;
(37)查詢學(xué)習(xí)“C001”課程的學(xué)生最高分?jǐn)?shù);
(38)計(jì)算各個(gè)課程號(hào)與相應(yīng)的選課人數(shù);
(39)查詢“計(jì)算機(jī)系”選修了兩門課程以上的學(xué)生學(xué)號(hào)、姓名;
(select Student.sno from Student,Score where
sdept='計(jì)算機(jī)系'and Student.sno=Score.sno group by Student.sno having count(cno)>=2);
(40)自然連接student和score表;
(41)使用自身連接查詢每一門課程的間接先行課(即先行課的先行課)
(42)使用復(fù)合條件連接查詢選修“c001”號(hào)課程且成績?cè)?0分以上的所有同學(xué);
(43)使用復(fù)合條件連接查詢每個(gè)學(xué)生選修的課程名及其成績;
(44)查詢選修了全部課程的學(xué)生;
(45)查詢所有選修了C001號(hào)課程的學(xué)生學(xué)號(hào)、姓名;
(46)查詢選修了課程C001或C007的學(xué)生學(xué)號(hào)、姓名;
[code]select student.sno,sname,cno from student,Score where student.sno=Score.sno and cno in ('C001','C007');
(47)查詢“計(jì)算機(jī)系”的學(xué)生及年齡不大于23歲的學(xué)生;
(48)查詢既選修了課程C001又選修了課程C007的所有學(xué)生學(xué)號(hào)、姓名;
(49)查詢選修了課程名為“數(shù)據(jù)庫原理”的學(xué)生的學(xué)號(hào)、姓名、性別、年齡;
(50)查詢其他班中比“計(jì)算機(jī)系”所有學(xué)生年齡都小的學(xué)生名單;
(51)查詢與“夏天”在同一個(gè)系學(xué)習(xí)的學(xué)生學(xué)號(hào)、姓名、性別、年齡;
(52)建立“計(jì)算機(jī)系”學(xué)生的視圖1;
as select sno,sname,ssex,sbirth,sclass from student where sclass='13z網(wǎng)絡(luò)'
(53)建立“計(jì)算機(jī)系”學(xué)生的視圖2,并要求進(jìn)行修改與插入時(shí),仍須保證該視圖只有“計(jì)算機(jī)系”班學(xué)生;
as select sno,sname,ssex,sbirth,sclass from student where sclass='13z網(wǎng)絡(luò)' with check option;
(54)建立“計(jì)算機(jī)系”選修了“C001”課程的學(xué)生的視圖,定義視圖名為“v_cs_C001_student1”;
as select student.sno,sname,ssex,sbirth,sclass from Student ,Score where
student.sno=Score.sno and sclass='13z網(wǎng)絡(luò)' and cno='C001';
(55)建立“計(jì)算機(jī)系”班選修了“C001”課程且成績?cè)?0分以上的學(xué)生的視圖,定義視圖名為“cs_c001_student2”;
as
select student.sno,sname ,ssex,sbirth,sclass,cno from student,Score where
student.sno=Score.sno and cno='C001' and sclass='13z網(wǎng)絡(luò)'and student.sno in (select student.sno from student,Score where student.sno=Score.sno and grade>90)
(56)定義一個(gè)反映學(xué)生年齡的視圖,定義視圖名為“v_birth_student”;
as
select sno,sname,2014-year(sbirth) age from student
(57)將學(xué)生表中所有女生記錄定義為一個(gè)視圖,視圖名為“v_female_student”;
as
select * from student where ssex='女';
(58)將學(xué)生的學(xué)號(hào)及其平均成績定義為一個(gè)視圖,視圖名為“v_average_student”;
as
select sno,avg(grade) avscore from Score group by sno;
(59)在“計(jì)算機(jī)系”學(xué)生視圖中找出年齡小于22歲的學(xué)生;
(60)利用視圖查詢“計(jì)算機(jī)系”選修了“C001”課程的學(xué)生;
(61)通過(52)中的“計(jì)算機(jī)系”視圖修改某個(gè)學(xué)生的名字;
(62)通過(53)中的“計(jì)算機(jī)系”視圖,插入一個(gè)新學(xué)生記錄。
(63)通過(53)中的“計(jì)算機(jī)系”視圖,刪除一個(gè)學(xué)生記錄。
實(shí)驗(yàn)課結(jié)束了,相信通過本節(jié)課的實(shí)踐操作,小伙伴們都對(duì)數(shù)據(jù)庫表的操作有了更進(jìn)一步的了解。
以上就是查詢數(shù)據(jù)庫表的基本操作,幾乎涵蓋了各種查詢操作所遇到的情況,值得大家親自操作一下,相信對(duì)大家的學(xué)習(xí)有所幫助。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信