SQL 練習題二


以下是一個訂貨管理數據庫,其中有倉庫表、職工表、訂購單表、供貨商表。

倉庫表:

倉庫號

城市

面積

wh1

北京

370

wh2

上海

500

wh3

廣州

200

wh4

武漢

400

職工表:

倉庫號

職工號

工資

wh2

e1

1220

wh1

e3

1210

wh2

e4

1250

wh3

e6

1230

wh1

e7

1250

 

 

 

 

 

訂購單表:

職工號

供應商號

訂購單號

訂購日期

e3

s7

or67

2001-6-23

e1

s4

or73

2001-7-28

e7

s4

or76

2001-5-25

e6

null

or77

  -   -

e3

s4

or79

2001-6-13

e1

null

or80

  -   -

e3

null

or90

  -   -

e3

s3

or91

2001-7-13

供應商表:

供應商號

供應商名

地址

s3

振華電子廠

西安

s4

華通電子公司

北京

s6

607廠

鄭州

s7

愛華電子廠

北京

  1. 從職工關系中檢索所有工資值。
  2. 檢索倉庫關系中的所有記錄
  3. 檢索工資多於1230元的職工號
  4. 檢索哪些倉庫有工資多於1210元的職工。
  5. 給出在倉庫“wh1”或“wh2”工作,並且工資少於1250元的職工號。
  6. 找出工資多於1230元的職工號和他們所在的城市。
  7. 找出工作在面積大於400的倉庫的職工號以及這些職工工作所在的城市。
  8. 哪些城市至少有一個倉庫的職工工資為1250元
  9. 查詢所有職工的工資都多於1210元的倉庫的信息。
  10. 找出和職工e4掙同樣工資的所有職工。
  11. 檢索出工資在1220元到1240元范圍內的職工信息。
  12. 從供應商關系中檢索出全部公司的信息,不要工廠或其他供應商的信息。
  13. 找出不在北京的全部供應商信息。
  14. 按職工的工資值升序檢索出全部職工信息。
  15. 先按倉庫號排序,再按工資排序並輸出全部職工信息。
  16. 找出供應商所在地的數目。
  17. 求支付的工資總數
  18. 求北京和上海的倉庫職工的工資總和
  19. 求所有職工的工資都多於1210元的倉庫的平均面積
  20. 求在wh2倉庫工作的職工的最高工資值
  21. 求每個倉庫的職工的平均工資
  22. 求至少有兩個職工的每個倉庫的平均工資。
  23. 找出尚未確定供應商的訂購單
  24. 列出已經確定了供應商的訂購單信息
  25. 查詢供應商名
  26. 在訂購單表中加入一個新字段總金額,說明完成該訂購單所應付出的總金額數。
  27. 列出每個職工經手的具有最高總金額的訂購單信息。
  28. 檢索哪些倉庫中還沒有職工的倉庫的信息
  29. 檢索哪些倉庫中至少已經有一個職工的倉庫的信息
  30. 檢索有職工的工資大於或等於wh1倉庫中任何一名職工工資的倉庫號
  31. 檢索有職工的工資大於或等於wh1倉庫中所有職工工資的倉庫號。

答案僅供參考:

create database 訂貨管理數據庫

create table 倉庫表(

倉庫號 varchar(50) not null,城市 varchar(50) not null,面積 int not null,primary key(倉庫號))

create table 職工表(

倉庫號 varchar(50) not null,職工號 varchar(50) not null,工資 money not null,

primary key(職工號),foreign key(倉庫號) references  倉庫表(倉庫號))

create table 訂購單表(

職工號 varchar(50) not null,供應商號 varchar(50) ,訂購單號 varchar not null,訂購日期 datetime,

foreign key(職工號) references 職工表(職工號),foreign key(供應商號) references 供應商表(供應商號))

create table 供應商表(

供應商號 varchar(50) not null,供應商名 varchar(50) not null,地址 varchar(50) not null,primary key(供應商號))

 

insert into 倉庫表(倉庫號,城市,面積)

values('wh1','北京',370),

           ('wh2','上海',500),

           ('wh3','廣州',200),

           ('wh4','武漢',400)

 

 

insert into 職工表(倉庫號,職工號,工資)

values('wh2','e1',1220),

           ('wh1','e3',1210),

           ('wh2','e4',1250),

           ('wh3','e6',1230),

           ('wh1','e7',1250)

   

    --修改變量范圍

    alter   table 訂購單表 alter column 訂購單號 varchar(50)   

 insert into 訂購單表(職工號,供應商號,訂購單號,訂購日期)

values('e3','s7','or67','2001-6-23'),

           ('e1','s4','or73','2001-7-28'),

           ('e7','s4','or76','2001-5-25'),

           ('e6',null,'or77',null),

           ('e3','s4','or79','2001-6-13'),

           ('e1',null,'or80', null ),

           ('e3',null,'or90',null),

           ('e3','s3','or91','2001-7-23')

  

    insert into 供應商表(供應商號,供應商名,地址)

values('s3','振華電子廠','西安'),

           ('s4','華通電子公司','北京'),

           ('s6','607廠','鄭州'),

           ('s7','愛華電子廠','北京')

 

--1

select 工資 from 職工表    

--2

select * from 倉庫表

--3

select 職工號 from 職工表 where 工資>1230

--4

select 倉庫號 from 職工表 where 工資>1210

--5

select 職工號 from 職工表 where (倉庫號='wh1' or 倉庫號= 'wh2')  and 工資<1250

 --6

  select 職工號,城市 from 職工表,倉庫表 where 工資>1230 and 職工表.倉庫號=倉庫表.倉庫號

  --7

  select 職工號,城市 from 職工表,倉庫表 where   職工表.倉庫號=倉庫表.倉庫號 and 倉庫表.面積>400

  --8

  select 城市 from 倉庫表 where 倉庫號 in (select 倉庫號 from 職工表 where 工資=1250)

  --9

  select * from 倉庫表 where 倉庫號 not in(select 倉庫號 from 職工表 where 工資<=1210) and 倉庫號 in(select 倉庫號 from 職工表)

  --10

  select  職工號 from 職工表 where 工資=(select 工資 from 職工表 where 職工號='e4')

  --11

  select * from 職工表 where 工資 between 1220 and 1240

  --12

  select * from 供應商表 where 供應商名 like '%公司'

  --13

  select * from 供應商表 where 地址!='北京'

  --14

  select * from 職工表 order by 工資 asc

  --15

  select * from 職工表 order by 倉庫號 asc,工資 desc

  --16

  select COUNT(distinct 地址) as 地址數 from 供應商表

  --17

  select SUM(工資) as 工資總數 from 職工表

  --18

  select  sum(工資) from 職工表 where 倉庫號 in(select 倉庫號 from 倉庫表 where 城市='北京' or 城市='上海')

  --19

  select AVG(面積) as mavg from 倉庫表 where 倉庫號 not in(select 倉庫號 from 職工表 where 工資<=1210) and 倉庫號 in(select 倉庫號 from 職工表)

  --20

  select MAX(工資) from 職工表 where 倉庫號='wh2'

  --21

  select 倉庫號,AVG(工資) from 職工表 group by 倉庫號

  --22

  select 倉庫號,AVG(工資) from 職工表 group by 倉庫號 having COUNT(*)>=2

  --23

  select * from 訂購單表 where 供應商號 is null

  --24

  select * from 訂購單表

 left  join 供應商表 on 訂購單表.供應商號 = 供應商表.供應商號 where 訂購單表.供應商號 is not null

  --25

 select distinct  供應商名 from 供應商表

--26

alter table 訂購單表 add 總金額 money

 

--27

--28

select * from 倉庫表 where 倉庫號 not in (select 倉庫號 from 職工表 )

 

 --29

select * from 倉庫表 where 倉庫號 in (select 倉庫號 from 職工表 group by 倉庫號 having COUNT(職工號) >=1)

 

--30

select 倉庫號 from 職工表 where 工資>any(select 工資 from 職工表 where  倉庫號='wh1')

 --31

 select 倉庫號 from 職工表 where 工資>=all(select 工資 from 職工表 where  倉庫號='wh1')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM