数据库应用与设计的四个实验

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 数据库应用与设计的四个实验

(一定要注意:执行的代码中不能有中文符号,这篇文章中实验一、三、四都是博主自己敲的,难免有中文符合,有问题大家可以手动敲一下,加深理解 ,感谢阅读 )

实验一:建立数据库

实验要求:

1.

(1)创建数据库test1(使用一个数据文件和一个日志文件),要求指定一个数据文件、一个事务日志文件,并把他们安排在不同的硬盘上。

CREATE DATABASE TEST1 ON
(NAME=TEST,FILENAME=’D:\数据库\数据\test.mdf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5)
LOG ON
(NAME=TEST_LOG,FILENAME=’D:\数据库\日志\test.ldf’,SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)

(2)创建test2(使用多个数据文件和多个日志文件),要求使用三个数据文件和两个事务日志文件,主文件是列表中的第一个文件或者用关键字primary指定(文件扩展名):主数据文件使用.mdf,次数据文件使用.ndf,事务日志文件使用.ldf)。

CREATE DATABASE TEST2 ON PRIMARY
(NAME=T1,FILENAME=’D:\数据库\数据\A1.mdf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=T2,FILENAME=’D:\数据库\数据\A2.ndf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=T3,FILENAME=’D:\数据库\数据\A3.ndf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5)
LOG ON
(NAME=T1_L0G,FILENAME=’D:\数据库\数据\A1.ldf’,SIZE=5MB,MAXSIZE=2MB,FILEGROWTH=5MB),
(NAME=T2_LOG,FILENAME=’D:\数据库\数据\A2.ldf’,SIZE=10MB,MAXSIZE=25MB,FILEGROWTH=5MB)

(3)创建数据库test3(使用文件组),要求使用3个文件组(含主文件组,即默认的文件组),每个文件组包含两个数据文件,并且每个文件组要安排在不同的硬盘上。

CREATE DATABASE TEST3 ON PRIMARY
(NAME=T0,FILENAME=’D:\数据库\数据\B0.mbf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5),
FILEGROUP G1
(NAME=G11,FILENAME=’D:\数据库\数据\b1.mdf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=G12,FILENAME=’D:\数据库\数据\b2.ndf,SIZE=10,MAXSIZE=50,FILEGROWTH=5’),
FILEGROUP G2
(NAME=G21,FILENAME=’D:\数据库\数据\b3.mdf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=G22,FILENAME=’D:\数据库\数据\b4.ndf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5),
FILEGROUP G3
(NAME=G31,FILENAME=’D:\数据库\数据\b5.mdf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=G32,FILENAME=’D:\数据库\数据\b6.ndf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5)

2、修改建立的test1数据库,为之添加一个5MB大小的新数据文件

ALTER DATABASE TEST1
ADD FILE
(NAME=TEST1,FILENAME=’D:\数据库\数据\test1.mdf’),SIZE=10,MAXSIZE=50,FILEGROWTH=5)

3、修改建立的test2数据库,将其中的主数据库文件增加5MB的储存空间。

ALTER DATABASE TEST2
MODIFY FILE
(NAME=T1,FILENAME=’D:\数据库\数据\A1.mdf’,SIZE=15,MAXSIZE=55,FILEGROWTH=10)

4.删除建立的数据库test1

DROP DATABASE TEST1

实验二:建立表和定义完整性约束

实验要求:

  1. 用CREATE SCHEMA命令建立模式(自己命令模式名称)
  2. 在定义的模式下参照表3-4和表3-10使用CREATE TABLE 命令建立表并定义完整性约束。
  3. 使用ALTER TABLE 命令按如下要求修改表结构:  (1)为订单表增加一个新的字段‘完成日期’,类型为日期时间型,默认是空值。  (2)为订单明细表的‘数量’字段重新定义约束:大于0,小于等于1000的正整数,不允许为空值。  (3)将供应商表的供应商名字段的类型修改为varchar(30)

1、用CREATE SCHEMA命令建立模式(自己命令模式名称)

CREATE DATABASE 实验
CREATE SCHEMA WCP

2、在定义的模式下参照表3-4和表3-10使用CREATE TABLE 命令建立表并定义完整性约束。

CREATE TABLE WCP.仓库
(仓库号CHAR(6) PRIMARY KEY CHECK(仓库号like’[A-Z][0-9][0-9][0-9]’),
城市CHAR(10) UNIQUE NOT NULL,
面积INT CHECK(面积>=50))
CREATE TABLE WCP.职工
(职工号char(8) PRIMARY KEY CHECK(职工号like’[A-Z][A-Z][0-9] [0-9] [0-9] [0-[0-9]9] [0-9]’),
仓库号CHAR(6) FOREIGN KEY REFERENCES WCP.仓库(仓库号),
工资money CHECK(工资>=1000 and 工资<=10000))
CREATE TABLE WCP.供应商
(供应商号char(4) PRIMARY KEY(供应商号like’S[0-9] [0-9] [0-9]’),
供应商名char(16),
地址char(30))
CREATE  TABLE WCP.订购单
(职工号char(8) NOT NULL FOREIGN KEY REFERENCES WCP.职工(职工号)),
供应商号char(4)NULL FOREIGN KEY REFERENCES WCP.供应商(供应商号),
订购单号char(6)PRIMARY KEY CHECK(订购单号like’OP[0-9] [0-9] [0-9] [0-9]’),
订购日期datetime default getdate(),
金额money default null)
CREATE TABLE WCP.订购明细
(订购单号char(6)NOT NULL FOREIGN KEY REFERENCES WCP.订购单(订购单号),
序号char(2),
产品名称char(20),
单价money default null check(单价>0),
数量 int NOT NULL CHECK(数量>0),
PRIMARY KEY(订购单号,序号)

3、

(1)使用ALTER TABLE 命令按如下要求修改表结构:为订单表增加一个新的字段‘完成日期’,类型为日期时间型,默认是空值。

ALTER TABLE WCP.订购单
ADD 完成日期 datetime default null

(2)为订单明细表的‘数量’字段重新定义约束:大于0,小于等于1000的正整数,不允许为空值。

ALTER TABLE WCP.订单明细
ADD CHECK(数量 between 0 and 1000)

(3)将供应商表的供应商名字段的类型修改为varchar(30)

ALTER COLUMN 供应商名varchar(30)

实验三 :数据操作和完整性约束的作用

实验要求:

  1. 读者自信设计各个表的记录,其中仓库表至少5条记录,职工表至少10条记录,供应商表至少5条记录,订购单表至少20条记录,订购单名细表至少50条记录。
INSERT INTO wcp.仓库VALUES('AA1111','广州',51)
INSERT INTO wcp.仓库VALUES('AA1112','深圳',51)
INSERT INTO wcp.仓库VALUES('AA1113','上海',51)
INSERT INTO wcp.仓库VALUES('AA1114','北京',51)
INSERT INTO wcp.仓库VALUES('AA1115','汕头',51)
INSERT INTO wcp.职工VALUES('AA111111','AA1111',1001)
INSERT INTO wcp.职工VALUES('AA111112','AA1112',1002)
INSERT INTO wcp.职工VALUES('AA111113','AA1113',1003)
INSERT INTO wcp.职工VALUES('AA111114','AA1114',1004)
INSERT INTO wcp.职工VALUES('AA111115','AA1115',1005)
INSERT INTO wcp.职工VALUES('AA111116','AA1111',1006)
INSERT INTO wcp.职工VALUES('AA111117','AA1112',1007)
INSERT INTO wcp.职工VALUES('AA111118','AA1113',1008)
INSERT INTO wcp.职工VALUES('AA111119','AA1114',1009)
INSERT INTO wcp.职工VALUES('AA111110','AA1115',1000)
INSERT INTO wcp.供应商VALUES('S111','广工','广州')
INSERT INTO wcp.供应商VALUES('S112','广工','广州')
INSERT INTO wcp.供应商VALUES('S113','广工','广州')
INSERT INTO wcp.供应商VALUES('S114','广工','广州')
INSERT INTO wcp.供应商VALUES('S115','广工','广州')
INSERT INTO wcp.订购单VALUES('AA111111','S111','OR1111','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S112','OR1112','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S113','OR1113','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S114','OR1114','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S115','OR1115','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S111','OR1116','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S112','OR1117','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S113','OR1118','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S114','OR1119','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S115','OR1110','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S111','OR1101','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S111','OR1111','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S112','OR1121','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S112','OR1131','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S113','OR1141','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S112','OR1151','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S115','OR1161','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S114','OR1171','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S112','OR1181','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订购单VALUES('AA111111','S111','OR1191','2019-5-28',1000,'2019-5-29')
INSERT INTO wcp.订单明细VALUES('OR1110','01','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1111','01','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1112','02','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1113','04','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1114','05','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1115','06','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1116','07','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1117','08','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1118','09','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1119','10','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1110','11','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1111','12','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1112','13','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1113','14','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1114','15','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1115','16','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1116','17','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1117','18','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1118','19','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1119','20','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1110','21','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1112','22','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1111','23','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1113','24','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1115','25','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1114','26','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1116','27','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1117','28','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1118','29','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1119','30','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1110','32','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1111','31','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1112','33','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1113','34','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1114','35','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1115','36','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1116','37','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1117','38','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1118','39','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1119','40','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1110','41','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1111','42','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1112','43','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1113','44','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1114','45','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1115','46','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1117','47','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1118','48','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1119','49','洗洁精',10,10)
INSERT INTO wcp.订单明细VALUES('OR1110','50','洗洁精',10,10)

2、使用INSERT命令完成记录的插入操作,要求分别设计若干违反实体完整性,参照完整性和用户定义完整性的插入操作,并分析原因。

违反实体完整性:

INSERT INTO WCP.仓库VALUES(‘AA1111’,’广州’51)

原因:违反了PRIMARY KEY 约束‘PK_仓库——480B400’。不能再在对象‘WCP仓库’中插入重复键。

违反参照完整性:

INSERT INTO WCP.职工VALUES(‘AA111122’,’AA1122’,1001)

原因:职工表的仓库号参照仓库表的仓库号,此时仓库表中没有仓库号为‘AA1111222’的元组。INSERT语句与FOREIGN KEY 约束“FK_职工_4EDDB18”冲突。该冲入发生于数据库“master”,表“WCP.仓库”,COLUMN’仓库号’。

违反用户定义完整性:

INSERT INTO WCP.仓库VALUES(‘AA1123’,‘珠海’,49)

原因:仓库表中的面积要求大于50.INSERT语句与CHECK约束“CK_仓库_面积_4B0D20AB”冲突,该冲突发生于数据库“master”,表“wcp.仓库”,column‘面积’。

3、设计若干删除操作,体会执行删除操作时检查参照完整性规则的效果(要求涉及拒绝删除,空值删除和联级删除等不同的处理方式)

拒绝删除:

DELETE WCP.仓库 WHERE 城市=‘广州’

操作失败,因为职工表参照了该记录

空值删除:

DELETE WCP.供应商 WHERE 供应商=‘S116’

4、设计若干更新操作,体会执行更新操作时检查实体完整性规则,参照完整性规则和用户定义完整性规则的效果。

UPDATE WCP.职工表SET 仓库号=‘aa2222’ WHERE 职工号=‘AA111111’

违背参照完整性:仓库表中没有仓库号为‘aa2222’的元组

UPDATE WCP.仓库SET 城市 =null  where 仓库号=‘AA1111’

违背实体完整性:城市不为空值

UPDATE WCP.仓库 SET 面积=49 WHERE 仓库号=‘AA1111’

违反用户定义完整性规则:因为面积被定义约束大于或等于50

5、将x城市仓库的职工工资提高10%。

UPDATE WCP.职工SET 工资=(工资*1.1)

6、用UPDATE语句完成订购单表金额字段的计算(提升:某张订购单的订购金额为该订购单所有订购项目(订购单明细)单价乘以数量的总和)

UPDATE WCP.订购单 SET 金额=(SELECT SUM(单价*数量)FROM WCP.订单明细
WHERE 订购单.订购单号=订单明细.订购单号)

7、设计2~~3个删除操作,它需要另外一个表中的数据作为删除条件(例如,按指定的供应商名称删除订购单记录)

DELETE WCP.职工 WHERE 仓库号 IN (SELECT 仓库号 FROM WCP.仓库 WHERE 城市=‘深圳’)
DELETE WCP.订购单 WHERE 供应商号 IN (SELECT 供应商号 FROM wcp.供应商 WHERE 地址=‘广工’)

实验四:数据查询

1、从职工表中查询所有工资表(考虑去掉和不去掉重复项两种情况)

SELECT DISTINCT 工资 FROM WCP.职工(去掉重复)
SELECT ALL 工资 FROM WCP.职工(不去掉重复)

2、查询仓库表中的全部信息。

SELECT *  FROM WCP.仓库

3、查询工资多于x元的职工号。

SELECT 职工号 FROM WCP.职工 WHERE 工资>1000

4、查询哪些仓库有工资多余y元的职工

SELECT 仓库号 FROM WCP.职工 WHERE 工资>y

5、给出在仓库x或y(x,y是仓库号)工作,并且工作少于z元的职工号。

SELECT 职工号 FROM WCP.职工 WHERE 仓库号=‘X’ OR 仓库号=‘Y’ and工资<z

6、查询工资在x~y范围内的职工信息(x>y)

SELECT* FROM WCP.职工 WHERE 工资 BETWEEN X AND Y

7从供应商表中查询出所有公司的信息(不要工厂或其他供应商的信息,即供应商名最后两个汉字是‘公司’的记录)

SELECT* FROM WCP.供应商

8 查询城市不是x的全部仓库信息

SELECT* FROM WCP.仓库 WHERE 城市!=‘广州’

9 查询尚未确定供应商的订单号(即订购单的供应商号为空值的记录)

SELECT* FROM WCP.订购单 WHERE 供应商号 IS NULL

说明:订购单表中没有供应商号为空的元组

10 查询已经确定了供应商的订购单信息

SELECT* FROM WCP.订购单 WHERE 供应商号 IS NOT NULL

11 按职工的工资值升序列出全部职工信息

SELECT* FROM WCP.职工 order by 工资 asc

12 先按仓库号升序,再按工资降序列出全部职工信息

SELECT* FROM WCP.职工 order by 仓库号asc ,工资desc

13 ~21使用连接查询

13 查询工资多于x元的职工号和他们所在的城市

SELECT 职工号,城市
FROM WCP.仓库 JOIN WCP.职工
ON 仓库.仓库号=职工.仓库号
WHERE 工资>1000

14 查询工作在面积大于x的仓库的职工号以及这些职工工作所在的城市

SELECT 职工号,城市 FROM WCP.职工 JOIN WCP.仓库
ON 职工.仓库号=仓库.仓库号
WHERE 面积>50

15 根据职工表列出上一级经理以及职工(被其领导)的清单(即列出谁领导谁的清单)

 无答案

16、列出仓库表和职工表的广义笛卡尔积的运算结果

SELECT* FROM WCP.仓库 CROSS JOIN WCP.职工

17  根据仓库表和职工表的广义笛卡尔积得到仓库表和职工表进行自然连接的结果

SELECT* FROM WCP.仓库 CROSS JOIN WCP.职工 WHERE 仓库.仓库号=职工.仓库号

18—22  分别用内连接、左连接、有连接和全连接完成,分析他们的效果

18 查询供应商-订购单信息,查询结果中包括供应商号,供应商名,订购单号和订购日期这4个字段。

SELECT 供应商.供应商号,供应商名,订购单号,订购日期 FROM 
WCP.供应商 JOIN WCP.订购单 ON 
供应商.供应商号=订购单.供应商号

19  查询供应商-订购单信息,查询结果中包含供应商号,供应商名,订购单号,订购日期这四个字段,要求结果中列出所有供应商信息(包括目前没有订购单的)

SELECT 供应商,供应商号,供应商名,订购单号,订购日期 FROM
WCP.供应商 LEFT JOIN WCP.订购单 ON 
供应商.订购商号=订购单.供应商号

20 查询供应商-订购单信息,查询结果中包含供应商号,供应商名,订购单号和订购日期这4个字段,要求结果中能够反应目前没有确定供应商的订购单情况

SELECT 供应商,供应商号,供应商名,订购单号,订购日期 FROM 
WCP.供应商 RIGHT JOIN WCP.订购单 ON 
供应商.供应商号=订购单.供应商号

21 查询供应商-订购单信息,查询结果中包括供应商号、供应商名,订购单号和订购日期这4个字段,要求结果中既能反应目前没有订购单的供应商信息,又能反映目前没有明确供应商的订购单情况。

SELECT 供应商,供应商号,供应商名,订购单号,订购日期 FROM 
WCP.供应商 FULL JOIN WCP.订购单 ON 
供应商.供应商号 = 订购单.供应商号

22—31 使用嵌套查询(注意使用ANY,ALL,和EXISTS)

22 查询哪些城市至少有一个仓库的职工的工资为x元。

SELECT 城市 FROM WCP.仓库 WHERE 仓库号 IN 
(SELECT 仓库号 FROM WCP.职工 WHERE 工资=1000)

23 查询所有职工的工资都多于x元的仓库的信息

SELECT* FROM WCP.仓库 WHERE 仓库号 NOT IN
(SELECT 仓库号 FROM WCP.职工 WHERE 工资<=1000)

  (取相反的)

24 查询和职工x挣相同工资的所有职工信息

SELECT* FROM WCP.职工 WHERE 工资=
(SELECT 工资 FROM WCP.职工 WHERE 职工号=‘AA11111’)

25 查询哪些城市的仓库向地址x的供应商发出了订购单

SELECT 城市 FROM WCP.仓库 WHERE 仓库号 IN
(SELECT 仓库号 FROM WCP.职工 WHERE 职工号 IN
(SELECT 职工号 FROM WCP.订购单 WHERE 供应商号 IN
(SELECT 供应商号 FROM WCP.供应商 WHERE 地址=‘广州’)))

26 查询地址为x的供应商目前有y城市仓库的订购单的供应商的名称(分别用嵌套查询和连接查询完成,分析各种效率)

连接查询:

SELECT 供应商名 FROM WCP.供应商 JOIN WCP.订购单 ON 
供应商.供应商号=订购单.供应商号
JOIN WCP.职工 ON 
订购单.职工号=职工.职工号
JOIN WCP.仓库 ON 
职工.仓库号=仓库.仓库号
WHERE 地址=‘广州’ AND 城市=‘广州’

嵌套查询:

SELECT 供应商名 FROM WCP.供应商 WHERE 地址=‘广州’ AND 供应商号 IN
(SELECT 供应商号 FROM WCP.订购单 JOIN WCP.职工 ON 
订购单.职工号=职工.职工号
JOIN WCP.仓库 ON 
职工.仓库号=仓库.仓库号 
WHERE 城市=‘广州’)

27 查询有职工的工资大于或等于x仓库中任何一名职工的工资的仓库号

SELECT 仓库号 FROM WCP.仓库 WHERE 仓库号 IN
(SELECT 仓库号 FROM WCP.职工 WHERE 工资>ANY
(SELECT 工资 FROM WCP.职工 JOIN WCP.仓库 ON 
职工.仓库号=仓库.仓库号
WHERE 仓库.仓库号=’X’) AND 仓库号!=‘X’)

28 查询有职工的工资大于或等于x仓库中任何一名职工的仓库号

SELECT 仓库号 FROM WCP.仓库 WHERE 仓库号 IN
(SELECT 仓库号 FROM WCP.职工 WHERE 工资>=ALL(
SELECT 工资 FROM WCP.职工 WHERE 仓库号=‘X’))

29 列出每个职工经手的具有最高金额的订购单信息

SELECT* FROM WCP.订购单A WHERE 金额=
(SELECT MAX(金额) FROM WCP.订购单B WHERE A.职工号=B.职工号)ORDER BY 职工号ASC

30 查询目前还没有职工的仓库的信息

SELECT* FROM WCP.仓库 WHERE 仓库号=
(SELECT 仓库号 FROM WCP.职工 WHERE 职工号 IS NULL)

31 查询目前至少已经有一个职工的仓库的信息

   

SELECT*  FROM WCP.仓库 WHERE NOT EXISTS
(SELECT*  FROM WCP.职工 WHERE 职工号 IS NULL AND 职工.仓库号=仓库.仓库号)

32---42 汇总和分组查询

32 查询目前仓库所在城市的数量

SELECT COUNT(DISTINCT 城市)FROM WCP.仓库 WHERE 城市 IS NOT NULL

33 查询目前需要支付的职工工资总和

SELECT SUM(工资) FROM WCP.职工

34 查询x和y两个城市的仓库职工的工资总和

SELECT SUN(工资) FROM WCP.仓库 JOIN WCP.职工 ON 
仓库.仓库号=职工.仓库号 
WHERE 城市=‘广州’OR城市=‘深圳’

35 查询所有职工的工资都多余x元的仓库的平均面积

SELECT AVG(面积) FROM WCP.仓库 WHERE 仓库号 NOT IN
(SELECT 仓库号 FROM WCP.职工 WHERE 工资<x)

36 查询工资大于x元的职工所经手的订购单的最高金额

SELECT MAX(金额) FROM WCP.订购单 WHERE 职工号 IN
(SELECT 职工号 FROM WCP.职工 WHERE 工资>x)

37 查询每个仓库的职工的平均工资

SELECT 仓库号,AVG(工资) FROM WCP.职工 GROUP BY 仓库号

38 查询每个仓库的订购单的最高金额,最低金额和平均金额

SELECT 仓库号,MAX(金额),MIN(金额),AVG(金额) FROM 
WCP.订购单 JOIN WCP.职工 ON
订购单.职工号=职工.职工号
GROUP BY 仓库号

39 查询至少有5个订购项目的每张订购单的平均金额。

SELECT 订购单.订购单号,AVG(金额) FROM 
WCP.订购单 JOIN WCP.订单明细 ON 
订购单.订购单号=订单明细.订购单号
GROUP BY 订购单.订购单号 HAVING COUNT(订购单.订购单号)>=5

算的是一个订购单号里面有多少个订购项目

42 列出全部订购单记录并计算所有订购单平均金额和金额总计(使用COMPUTER)

SELECT* FROM WCP.订购单
COMPUTE SUM(金额),AVG(金额)
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
26天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
151 64
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
海亮科技选择引入阿里云PolarDB开源分布式版(PolarDB for Xscale)数据库,不仅能解决海亮科技数据库业务中面临的可靠性、稳定性问题,也为海亮科技业务的高速发展提供了更好的灵活性和可扩展性。
|
7天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
14天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
14天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
31 2
|
24天前
|
XML 存储 数据库
XML在数据库中有哪些应用?
【10月更文挑战第17天】XML在数据库中有哪些应用?
23 2
|
25天前
|
供应链 数据库
数据库事务安全性控制有什么应用场景吗
【10月更文挑战第15天】数据库事务安全性控制有什么应用场景吗
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
61 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
109 5