数据库实验八SQL语句的综合使用
生活随笔
收集整理的這篇文章主要介紹了
数据库实验八SQL语句的综合使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本博文源于校內數據庫原理的學習,本周布置了數據庫的SQL語句綜合使用的作業。博主將作業寫完后,并將其撰寫為博文,以備期末考試復習,因為很多語句都需要看書,或者百度。這肯定不行的,爭取需要背誦和記住。為了整個博文的清晰,我在首頁又設置了目錄,通過目錄的點擊,便可以輕松的對任務一一完成。因為語句都已上機調試過,為了更加快速撰寫,我只將代碼進行搬運,有需要便可以收藏此博文。謝謝讀者的觀看瀏覽。
文章目錄
- 1. 建立一圖書借閱庫(TSJY),并在在該庫下建立以下四個表:
- 2. 要求為每個表建立一個主鍵
- 3. 建立“管理員”表時要求其“性別”一列的默認值為“男”。
- 4. 為“圖書”的“分類號”建立一個索引ts_flh。
- 5. 為“借閱”表建立一唯一索引jycx,要求按“借書證號 ”升序,“借書日期 ” 降序。
- 6. 為“管理員”表建立一檢查約束,要求“基本工資”在(100,10000)之間。
- 7. 建立“借閱”與“圖書”及“讀者”表之間的參照關系。
- 8. 為每個表插入3-5條記錄(記錄數據自定)。
- 9. 查詢出“圖書”數據庫中作者姓“劉”的所有圖書
- 10. 查詢出“圖書”數據庫中高等教育出版社出版的、單價低于25元的所有種類的圖書。
- 11. 求出“讀者”數據庫中的總人數。
- 12. 求出“圖書”數據庫中的所有圖書的最高價、最低價和平均價。
- 13. 求出“借閱”庫中借書證號為“112”的所借圖書的冊數。
- 14. 按分類號降序顯示“圖書”庫中各種圖書的分類號、書名合作者。
- 15. 按單價升序顯示“圖書”庫中的高等教育出版社出版的所有圖書。
- 16. 按單價升序顯示出“圖書”庫中由清華大學出版社和電子工業出版社出版的所有圖書。
- 17. 按書名和作者分組統計出“圖書”庫中每種圖書的數量。
- 18. 統計出“圖書”數據庫中15至25元之間的圖書數量。
- 19. 查詢出“圖書”數據庫中書名中含有“應用基礎”字串的所有圖書。
- 20. 分組統計出“借閱”數據庫中每一種借書證號所借圖書的冊數。
- 21. 按單位分組統計出“讀者”數據庫中每個單位的人數。
- 22. 分組統計出1997年底以前借閱不低于2本圖書的借書證號和數量。
- 23. 聯接查詢“借閱”庫和“圖書”,得到借閱每一本書的信息。
- 24. 聯接查詢“借閱”庫和“讀者”庫,得到每一個以借閱者的借書證號、姓名、單位。
- 25. 聯接查詢“借閱”、“讀者”、“圖書”三個庫,得到每一本所借圖書的讀者的借書證號、姓名、單位、書名。
- 26. 從“圖書”數據庫中(通過對“借閱”庫的嵌套)查詢出所有被借圖書的信息。
- 27. 按單位分組統計出被借圖書的數量。
- 28. 按單位分組統計出借閱圖書的人數。
- 29. 從讀者庫中查詢出每個借閱圖書的讀者的情況。
- 30. 查詢‘管理員’表中職稱為教授或副教授,并且在1950年(含該年)以后出生的所有職工記錄。
- 31. 查詢‘管理員’表中基本工資在250到380元之間的職工記錄。
- 32. 將基本工資小于500的管理員,工資加上100元。
- 33. 列出藏書在十本以上的圖書(書名、作者、出版社)。
- 34. 數據庫系統原理教程,王珊編,清華大學出版社,1998年出版”還有幾本?
- 文末:附完整源碼
1. 建立一圖書借閱庫(TSJY),并在在該庫下建立以下四個表:
create database TSJY; create table book(編號 char(6) not null,分類號 char(8),書名 char(16),作者 char(6),出版單位 char(16),單價 numeric(7,2),總藏書量 INT,現有庫存 INT);create table reader(借書證號 char(4) not null, 單位 char(10), 姓名 char(6), 性別 char(2),職稱 char(6), 地址 char(16));create table borrow(借書證號 char(4), 編號 char(6),借書日期 datetime,還書日期 datetime, );create table administrator(職工號 char(6) not null, 姓名 char(6), 性別 char(2), 出生日期 datetime,職稱 char(6),基本工資 numeric(7,2), );2. 要求為每個表建立一個主鍵
/*(1) 要求為每個表建立一個主鍵。*/ alter table Book add primary key (編號) ; alter table reader add primary key (借書證號) ; alter table administrator add primary key (職工號 ) ;3. 建立“管理員”表時要求其“性別”一列的默認值為“男”。
/*(2) 建立“管理員”表時要求其“性別”一列的默認值為“男”。*/ alter table administrator add constraint Defaultsex default '男' for 性別;4. 為“圖書”的“分類號”建立一個索引ts_flh。
/*(3) 為“圖書”的“分類號”建立一個索引ts_flh。*/ create index ts_flh on book(分類號);5. 為“借閱”表建立一唯一索引jycx,要求按“借書證號 ”升序,“借書日期 ” 降序。
/*(4) 為“借閱”表建立一唯一索引jycx,要求按“借書證號 ”升序,“借書日期 ” 降序。*/ create unique index jycx on borrow(借書證號 asc,借書日期 desc);6. 為“管理員”表建立一檢查約束,要求“基本工資”在(100,10000)之間。
/*(5) 為“管理員”表建立一檢查約束,要求“基本工資”在(100,10000)之間。*/alter table administrator add constraint val_check check(基本工資 between 100 and 10000);7. 建立“借閱”與“圖書”及“讀者”表之間的參照關系。
/*(6) 建立“借閱”與“圖書”及“讀者”表之間的參照關系。 */ alter table borrow add foreign key(編號) references book(編號); alter table borrow add foreign key(借書證號) references reader(借書證號);8. 為每個表插入3-5條記錄(記錄數據自定)。
/* 為每個表插入3-5條記錄(記錄數據自定)。*/ insert into book values('001','5843','離散數學','耿素云','清華大學出版社',33.00,20,16),('002','6379','電子技術基礎','康華光','高等教育出版社',59.90,20,10),('003','6538','新編大學英語','應惠蘭','外語教學出版社',39.90,20,20),('004','7096','醫藥數據庫','杜建強','中國中醫藥出版社',49.00,20,15)insert into reader values('110','浙中醫大','張三','男','學生','立業園'),('111','浙中醫大','李四','女','學生','立業園'),('112','浙中醫大','王五','男','學生','立業園'),('113','浙中醫大','趙六','女','學生','立業園'),('114','浙中醫大','田七','男','學生','立業園')insert into borrow values('110','001','1999-11-19','1999-12-19'),('110','002','1992-11-06','1992-12-06'),('110','004','1997-10-29','1997-11-29'),('111','003','1998-11-19','1998-12-19'),('112','001','1997-10-22','1997-11-22'),('112','002','1999-11-25','1999-12-25'),('113','001','1996-10-01','1996-11-01'),('114','004','1999-11-18','1999-12-18')insert into administrator values('200','jack','男','1990-05-23','老師',5000),('201','tom','男','1990-06-04','老師',5500),('202','lucy','女','1990-03-18','老師',5500)9. 查詢出“圖書”數據庫中作者姓“劉”的所有圖書
/* 查詢出“圖書”數據庫中作者姓“劉”的所有圖書。*/ insert into book values('005','8023','數學分析','劉星武','清華大學出版社',33.00,20,16); select * from book where 作者 like '劉%'10. 查詢出“圖書”數據庫中高等教育出版社出版的、單價低于25元的所有種類的圖書。
/* 查詢出“圖書”數據庫中高等教育出版社出版的、單價低于25元的所有種類的圖書。*/ insert into book values('006','8024','線性代數','張文星','高等教育出版社',23.00,20,16); select * from book where 出版單位='高等教育出版社' and 單價 < 25.0;11. 求出“讀者”數據庫中的總人數。
/*求出“讀者”數據庫中的總人數。*/ select count(*) as 總人數 from reader;12. 求出“圖書”數據庫中的所有圖書的最高價、最低價和平均價。
/* 求出“圖書”數據庫中的所有圖書的最高價、最低價和平均價。*/ select max(單價) as 最高價 ,min(單價) as 最低價,avg(單價) as 平均價 from book;13. 求出“借閱”庫中借書證號為“112”的所借圖書的冊數。
/* 求出“借閱”庫中借書證號為“112”的所借圖書的冊數。*/ select count(*) as 借書冊數 from borrow where 借書證號='112';14. 按分類號降序顯示“圖書”庫中各種圖書的分類號、書名合作者。
/* 按分類號降序顯示“圖書”庫中各種圖書的分類號、書名he作者。*/ select 分類號,書名,作者 from book order by 分類號 desc;15. 按單價升序顯示“圖書”庫中的高等教育出版社出版的所有圖書。
/* 按單價升序顯示“圖書”庫中的高等教育出版社出版的所有圖書。*/ select * from book where 出版單位='高等教育出版社' order by 單價 asc;16. 按單價升序顯示出“圖書”庫中由清華大學出版社和電子工業出版社出版的所有圖書。
/* 按單價升序顯示出“圖書”庫中由清華大學出版社和電子工業出版社出版的所有圖書。*/ select * from book where 出版單位='清華大學出版社' or 出版單位='電子工業出版社' order by 單價 asc;17. 按書名和作者分組統計出“圖書”庫中每種圖書的數量。
/* 按書名和作者分組統計出“圖書”庫中每種圖書的數量。*/ select count(*) as '數量' from book group by 書名,作者;18. 統計出“圖書”數據庫中15至25元之間的圖書數量。
/* 統計出“圖書”數據庫中15至25元之間的圖書數量。*/ select count(*) as '數量' from book where 單價 between 15 and 25;19. 查詢出“圖書”數據庫中書名中含有“應用基礎”字串的所有圖書。
/* 查詢出“圖書”數據庫中書名中含有“應用基礎”字串的所有圖書。*/ insert into book values('007','8025','java應用基礎','劉星星','高等教育出版社',13.00,21,15); insert into book values('008','8026','應用基礎c++','趙芳芳','高等教育出版社',9.00,26,15); select * from book where 書名 like '%應用基礎%';20. 分組統計出“借閱”數據庫中每一種借書證號所借圖書的冊數。
/* 分組統計出“借閱”數據庫中每一種借書證號所借圖書的冊數。 */ select 借書證號,count(*) as '數量' from borrow group by 借書證號;21. 按單位分組統計出“讀者”數據庫中每個單位的人數。
/*(14) 按單位分組統計出“讀者”數據庫中每個單位的人數。*/ select 單位,count(*) as '數量' from reader group by 單位;22. 分組統計出1997年底以前借閱不低于2本圖書的借書證號和數量。
/* )分組統計出1997年底以前借閱不低于2本圖書的借書證號和數量。*/ --select * from borrow where ; insert into borrow values('110','005','1992-11-19','1992-12-19'); select 借書證號,count(*) as 數量 from borrow where 借書日期<'1997-12-31' group by 借書證號 having count(*) > 2;23. 聯接查詢“借閱”庫和“圖書”,得到借閱每一本書的信息。
/*(16) 聯接查詢“借閱”庫和“圖書”,得到借閱每一本書的信息。*/ select book.書名,borrow.* from book,borrow where borrow.編號=book.編號;24. 聯接查詢“借閱”庫和“讀者”庫,得到每一個以借閱者的借書證號、姓名、單位。
/*(17)聯接查詢“借閱”庫和“讀者”庫,得到每一個以借閱者的借書證號、姓名、單位。*/ select distinct re.借書證號,re.姓名,re.單位 from reader as re,borrow as bo where bo.借書證號=re.借書證號;25. 聯接查詢“借閱”、“讀者”、“圖書”三個庫,得到每一本所借圖書的讀者的借書證號、姓名、單位、書名。
/* 聯接查詢“借閱”、“讀者”、“圖書”三個庫,得到每一本所借圖書的讀者的借書證號、姓名、單位、書名。*/select distinct bo.借書證號,re.單位,re.姓名,book.書名 from borrow as bo,reader as re,book where book.編號=bo.編號 and bo.借書證號=re.借書證號;26. 從“圖書”數據庫中(通過對“借閱”庫的嵌套)查詢出所有被借圖書的信息。
/* 從“圖書”數據庫中(通過對“借閱”庫的嵌套)查詢出所有被借圖書的信息。*/ select * from book where 編號 in (select 編號 from borrow);27. 按單位分組統計出被借圖書的數量。
/*(20) 按單位分組統計出被借圖書的數量。*/ select 單位,count(單位) as 數量 from reader,borrow where reader.借書證號=borrow.借書證號 group by 單位;28. 按單位分組統計出借閱圖書的人數。
/*(21) 按單位分組統計出借閱圖書的人數。*/ select 單位,count(單位) as 人數 from reader where 借書證號 in(select distinct borrow.借書證號 from reader,borrow where reader.借書證號 = borrow.借書證號 ) group by 單位;29. 從讀者庫中查詢出每個借閱圖書的讀者的情況。
/*(22)從讀者庫中查詢出每個借閱圖書的讀者的情況。*/ select * from reader as re where 借書證號 in (select distinct 借書證號 from borrow);30. 查詢‘管理員’表中職稱為教授或副教授,并且在1950年(含該年)以后出生的所有職工記錄。
/* 查詢‘管理員’表中職稱為教授或副教授,并且在1950年(含該年)以后出生的所有職工記錄。*/ insert into administrator values('203','sara','男','1990-05-24','教授',8000); select * from administrator where 職稱 in ('教授','副教授') and year(出生日期)>1950;31. 查詢‘管理員’表中基本工資在250到380元之間的職工記錄。
/* 查詢‘管理員’表中基本工資在250到380元之間的職工記錄。*/ insert into administrator values('205','alice','男','1990-05-25','老師',320); select * from administrator where 基本工資 between 250 and 380;32. 將基本工資小于500的管理員,工資加上100元。
/*( 將基本工資小于500的管理員,工資加上100元。*/ update administrator set 基本工資 += 100 where 基本工資<500;33. 列出藏書在十本以上的圖書(書名、作者、出版社)。
/*(26) 列出藏書在十本以上的圖書(書名、作者、出版社)。*/ select 書名,作者,出版單位 from Book where 總藏書量>10;34. 數據庫系統原理教程,王珊編,清華大學出版社,1998年出版”還有幾本?
/*(27) “數據庫系統原理教程,王珊編,清華大學出版社,1998年出版”還有幾本?*/ insert into book values('010','5846','數據庫系統','王珊','清華大學出版社',33.00,20,16); select 書名,現有庫存 from Book where 書名='數據庫系統' and 作者='王珊' and 出版單位='清華大學出版社';文末:附完整源碼
create database TSJY; /*(1) 圖書 (編號 C(6), 分類號 C(8), 書名 C(16), 作者 C(6), 出版單位 C(16), 單價N(7,2),總藏書量 INT,現有庫存INT) */ use TSJY; create table book(編號 char(6) not null,分類號 char(8),書名 char(16),作者 char(6),出版單位 char(16),單價 numeric(7,2),總藏書量 INT,現有庫存 INT);create table reader(借書證號 char(4) not null, 單位 char(10), 姓名 char(6), 性別 char(2),職稱 char(6), 地址 char(16));create table borrow(借書證號 char(4), 編號 char(6),借書日期 datetime,還書日期 datetime, );create table administrator(職工號 char(6) not null, 姓名 char(6), 性別 char(2), 出生日期 datetime,職稱 char(6),基本工資 numeric(7,2), );/*(1) 要求為每個表建立一個主鍵。*/ alter table Book add primary key (編號) ; alter table reader add primary key (借書證號) ;alter table administrator add primary key (職工號 ) ;/*(2) 建立“管理員”表時要求其“性別”一列的默認值為“男”。*/ alter table administrator add constraint Defaultsex default '男' for 性別;/*(3) 為“圖書”的“分類號”建立一個索引ts_flh。*/ create index ts_flh on book(分類號);/*(4) 為“借閱”表建立一唯一索引jycx,要求按“借書證號 ”升序,“借書日期 ” 降序。*/ create unique index jycx on borrow(借書證號 asc,借書日期 desc);/*(5) 為“管理員”表建立一檢查約束,要求“基本工資”在(100,10000)之間。*/alter table administrator add constraint val_check check(基本工資 between 100 and 10000);/*(6) 建立“借閱”與“圖書”及“讀者”表之間的參照關系。 */ alter table borrow add foreign key(編號) references book(編號); alter table borrow add foreign key(借書證號) references reader(借書證號);/*(1) 為每個表插入3-5條記錄(記錄數據自定)。*/ insert into book values('001','5843','離散數學','耿素云','清華大學出版社',33.00,20,16),('002','6379','電子技術基礎','康華光','高等教育出版社',59.90,20,10),('003','6538','新編大學英語','應惠蘭','外語教學出版社',39.90,20,20),('004','7096','醫藥數據庫','杜建強','中國中醫藥出版社',49.00,20,15)insert into reader values('110','浙中醫大','張三','男','學生','立業園'),('111','浙中醫大','李四','女','學生','立業園'),('112','浙中醫大','王五','男','學生','立業園'),('113','浙中醫大','趙六','女','學生','立業園'),('114','浙中醫大','田七','男','學生','立業園')insert into borrow values('110','001','1999-11-19','1999-12-19'),('110','002','1992-11-06','1992-12-06'),('110','004','1997-10-29','1997-11-29'),('111','003','1998-11-19','1998-12-19'),('112','001','1997-10-22','1997-11-22'),('112','002','1999-11-25','1999-12-25'),('113','001','1996-10-01','1996-11-01'),('114','004','1999-11-18','1999-12-18')insert into administrator values('200','jack','男','1990-05-23','老師',5000),('201','tom','男','1990-06-04','老師',5500),('202','lucy','女','1990-03-18','老師',5500)/*(2) 查詢出“圖書”數據庫中作者姓“劉”的所有圖書。*/ insert into book values('005','8023','數學分析','劉星武','清華大學出版社',33.00,20,16); select * from book where 作者 like '劉%'/*(3) 查詢出“圖書”數據庫中高等教育出版社出版的、單價低于25元的所有種類的圖書。*/ insert into book values('006','8024','線性代數','張文星','高等教育出版社',23.00,20,16);select * from book where 出版單位='高等教育出版社' and 單價 < 25.0;/*(4) 求出“讀者”數據庫中的總人數。*/ select count(*) as 總人數 from reader;/*(5) 求出“圖書”數據庫中的所有圖書的最高價、最低價和平均價。*/ select max(單價) as 最高價 ,min(單價) as 最低價,avg(單價) as 平均價 from book;/*(6) 求出“借閱”庫中借書證號為“112”的所借圖書的冊數。*/ select count(*) as 借書冊數 from borrow where 借書證號='112';/*(7) 按分類號降序顯示“圖書”庫中各種圖書的分類號、書名he作者。*/ select 分類號,書名,作者 from book order by 分類號 desc;/*(8) 按單價升序顯示“圖書”庫中的高等教育出版社出版的所有圖書。*/ select * from book where 出版單位='高等教育出版社' order by 單價 asc;/*(9) 按單價升序顯示出“圖書”庫中由清華大學出版社和電子工業出版社出版的所有圖書。*/ select * from book where 出版單位='清華大學出版社' or 出版單位='電子工業出版社' order by 單價 asc;/*(10) 按書名和作者分組統計出“圖書”庫中每種圖書的數量。*/ select count(*) as '數量' from book group by 書名,作者;/*(11) 統計出“圖書”數據庫中15至25元之間的圖書數量。*/ select count(*) as '數量' from book where 單價 between 15 and 25;/*(12 查詢出“圖書”數據庫中書名中含有“應用基礎”字串的所有圖書。*/ insert into book values('007','8025','java應用基礎','劉星星','高等教育出版社',13.00,21,15); insert into book values('008','8026','應用基礎c++','趙芳芳','高等教育出版社',9.00,26,15); select * from book where 書名 like '%應用基礎%';/*(13) 分組統計出“借閱”數據庫中每一種借書證號所借圖書的冊數。 */ select 借書證號,count(*) as '數量' from borrow group by 借書證號;/*(14) 按單位分組統計出“讀者”數據庫中每個單位的人數。*/ select 單位,count(*) as '數量' from reader group by 單位;/*(15)分組統計出1997年底以前借閱不低于2本圖書的借書證號和數量。*/ --select * from borrow where ; insert into borrow values('110','005','1992-11-19','1992-12-19'); select 借書證號,count(*) as 數量 from borrow where 借書日期<'1997-12-31' group by 借書證號 having count(*) > 2;/*(16) 聯接查詢“借閱”庫和“圖書”,得到借閱每一本書的信息。*/ select book.書名,borrow.* from book,borrow where borrow.編號=book.編號;/*(17)聯接查詢“借閱”庫和“讀者”庫,得到每一個以借閱者的借書證號、姓名、單位。*/ select distinct re.借書證號,re.姓名,re.單位 from reader as re,borrow as bo where bo.借書證號=re.借書證號;/*(18) 聯接查詢“借閱”、“讀者”、“圖書”三個庫,得到每一本所借圖書的讀者的借書證號、姓名、單位、書名。*/select distinct bo.借書證號,re.單位,re.姓名,book.書名 from borrow as bo,reader as re,book where book.編號=bo.編號 and bo.借書證號=re.借書證號;/*(19) 從“圖書”數據庫中(通過對“借閱”庫的嵌套)查詢出所有被借圖書的信息。*/ select * from book where 編號 in (select 編號 from borrow);/*(20) 按單位分組統計出被借圖書的數量。*/ select 單位,count(單位) as 數量 from reader,borrow where reader.借書證號=borrow.借書證號 group by 單位;/*(21) 按單位分組統計出借閱圖書的人數。*/ select 單位,count(單位) as 人數 from reader where 借書證號 in(select distinct borrow.借書證號 from reader,borrow where reader.借書證號 = borrow.借書證號 ) group by 單位;/*(22)從讀者庫中查詢出每個借閱圖書的讀者的情況。*/ select * from reader as re where 借書證號 in (select distinct 借書證號 from borrow);/*(23) 查詢‘管理員’表中職稱為教授或副教授,并且在1950年(含該年)以后出生的所有職工記錄。*/ insert into administrator values('203','sara','男','1990-05-24','教授',8000); select * from administrator where 職稱 in ('教授','副教授') and year(出生日期)>1950;/*(24) 查詢‘管理員’表中基本工資在250到380元之間的職工記錄。*/ insert into administrator values('205','alice','男','1990-05-25','老師',320); select * from administrator where 基本工資 between 250 and 380;/*(25) 將基本工資小于500的管理員,工資加上100元。*/ update administrator set 基本工資 += 100 where 基本工資<500;/*(26) 列出藏書在十本以上的圖書(書名、作者、出版社)。*/ select 書名,作者,出版單位 from Book where 總藏書量>10;/*(27) “數據庫系統原理教程,王珊編,清華大學出版社,1998年出版”還有幾本?*/ insert into book values('010','5846','數據庫系統','王珊','清華大學出版社',33.00,20,16); select 書名,現有庫存 from Book where 書名='數據庫系統' and 作者='王珊' and 出版單位='清華大學出版社';總結
以上是生活随笔為你收集整理的数据库实验八SQL语句的综合使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle批量update
- 下一篇: what is ssao