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

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

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

实验一:建立数据库

实验要求:

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日志并进行多维度分析。
相关文章
|
1月前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
28 2
|
1月前
|
存储 Oracle 搜索推荐
电子商务中数据库的应用以及选择
【4月更文挑战第10天】电子商务依赖数据库进行数据存储与管理,涵盖产品信息、订单、用户数据。数据库支持数据分析,揭示市场趋势,助力企业决策。在客户关系管理中,数据库帮助理解客户行为,实现个性化服务。订单处理也离不开数据库,确保操作准确高效。数据库系统如MySQL、Oracle满足不同业务需求,选择时要考虑性能、规模及管理特性。合适的数据库对电商业务的性能和稳定性至关重要。
41 4
|
2月前
|
存储 监控 关系型数据库
数据库核心术语解析与应用
数据库核心术语解析与应用
65 0
|
5天前
|
缓存 关系型数据库 Java
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
13 0
|
3天前
|
存储 NoSQL 搜索推荐
探索新一代数据库技术:基于图数据库的应用与优势
传统关系型数据库在处理复杂的关系数据时存在着诸多限制,而基于图数据库的新一代数据库技术则提供了更为灵活和高效的解决方案。本文将深入探讨图数据库的核心概念、应用场景以及与传统数据库相比的优势,带领读者一窥未来数据库技术的发展趋势。
|
10天前
|
存储 运维 Kubernetes
多态关联在数据库设计中的应用和解决方案
多态关联在数据库设计中的应用和解决方案
17 0
|
12天前
|
存储 算法 数据库
矢量数据库在图像识别与检索中的应用实践
【4月更文挑战第30天】本文探讨了矢量数据库在图像识别与检索中的应用,通过特征提取(如SIFT、SURF)、编码和相似度度量实现快速识别。在图像检索流程中,经过预处理、特征提取和编码后,矢量数据库用于查询相似特征,排序后展示给用户。实际案例显示,矢量数据库能提升电商平台的商品图像搜索效率和用户体验。随着技术发展,这一领域应用前景广阔。
|
12天前
|
机器学习/深度学习 搜索推荐 数据库
矢量数据库的未来发展趋势:新技术与应用展望
【4月更文挑战第30天】随着AI和机器学习的发展,矢量数据库在处理非结构化数据方面的重要性日益增强。预测到2028年,全球矢量数据库市场将从2023年的15亿美元增长至43亿美元。未来趋势包括:并行计算与分布式架构提升处理能力,硬件加速技术(如TPU和昇腾芯片)提高性能,自适应索引机制优化查询效率。应用领域将拓展至NLP、图像视频分析和推荐系统,为各行业带来更多创新和价值。
|
12天前
|
机器学习/深度学习 存储 人工智能
矢量数据库在机器学习领域的应用与前景
【4月更文挑战第30天】本文探讨了矢量数据库在机器学习领域的应用,包括特征存储、相似性搜索、模型训练与调优及实时分析。随着AI技术发展,矢量数据库将深度融合,提升扩展性和可伸缩性,增强智能化功能,并加强安全性与隐私保护。未来,矢量数据库将在机器学习领域扮演关键角色。
|
12天前
|
存储 数据可视化 关系型数据库
矢量数据库在地理空间数据处理中的应用
【4月更文挑战第30天】矢量数据库在地理空间数据处理中展现优势,高效存储管理高维向量数据,支持快速查询、空间分析与可视化。分布式处理能力适应大数据量需求,提供高效、灵活、可扩展及可视化支持,是处理地理空间数据的理想选择。随着技术进步,其应用将更加广泛。