目录

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

实验一:建立数据库

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

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

实验四:数据查询


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

实验一:建立数据库

实验要求:

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(金额)

参考以下博主文章,十分感觉大佬!!!

专栏文章 (lofter.com)

专栏文章 (lofter.com)

专栏文章 (lofter.com)

专栏文章 (lofter.com)

数据库应用与设计的四个实验相关推荐

  1. 【数据库 Microsoft SQL Server】实验六 物业收费管理系统数据库设计与实施综合实验

    实验六 物业收费管理系统数据库设计与实施综合实验 一.实验目的 1.掌握数据库概念模型和逻辑模型设计,学会使用数据库规范化理论规范关系模式. 2.熟练掌握和使用SQL语言定义数据库.表.索引和视图等对 ...

  2. mysql实验四数据库查询和视图_数据库-第四次实验报告-视图-t-sql语句

    实验十报告 创建视图 实验目的 1.掌握创建视图的SQL语句的用法. 2.掌握使用企业管管理器创建视图的方法. 3.掌握使用创建视图向导创建视图的方法. 4.掌握查看视图的系统存储过程的用法. 5.掌 ...

  3. 数据库设计的四个阶段

    数据库设计分为四个阶段: 1)需求分析阶段:编写软件规格说明书及初步的用户手册,提交评审. 2)概念设计(概要设计)阶段:E-R图设计阶段. 3)逻辑设计阶段:主要是E_R转换成关系模式. 4)物理设 ...

  4. 【数据库考试】数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计

    一.选择题 (1) 在下列四个选项中,不属于基本关系运算的是(D ). A) 连接B) 投影C) 选择D) 排序 (2) 如果一个班只能有一个班长,而且一班长不能同时担任其它班的班 长,班级和班长两个 ...

  5. 考研复试数据库原理面试题(四)—关系数据库设计与设计理论

    写作目的:为了应对考研复试中的面试,我整理了导师可能提问的地方,力求用口语化的语言描述出来. 这只是一部分,陆续还有数据库原理的其它章节,还会推出数据结构.计算机网络复试题整理. 数据库原理我的参考书 ...

  6. 【自建分布式数据库详细指南】(四)设计:CITUS分布式数据仓库OLAP/OLTP的架构选择及PG数据库优化方法策略

    关于数据库的整体设计,很少有书籍专门试讲,因为这需要博大精深的理论水平以及阅历丰富的工作经验,但往往这两者不可兼得,在设计数据库时需要考虑多方面的因素,如需求,数据体量,数据库架构,硬件环境,成本.这 ...

  7. 伤感网络验证系统_可验证云数据库架构与设计

    区块链的发展到了一个关键阶段.向左走,是一眼望不到尽头的公链和交易所.向右走,是一脸茫然的探寻:区块链如何和古典互联网行业相结合.就像文章<货币.区块链和社交扩展性>所阐述的根本原理,区块 ...

  8. 软件工程实训有必要吗_软件工程实验(四个实验)

    <软件工程实验(四个实验)>由会员分享,可在线阅读,更多相关<软件工程实验(四个实验)(21页珍藏版)>请在人人文库网上搜索. 1.武汉轻工大学软件工程实验报告院系: 数学和计 ...

  9. 数据库应用课程设计 教学管理系统 大学编程作业(TUST天津科技大学2022年)

    教学管理系统 目录 教学管理系统 一.项目简介 二.交流学习 数据库应用课程设计报告 教学管理系统 一.设计题目:教学管理系统 1. 课题简介 : 二.设计目的: 三.设计内容和步骤: 1.需求分析: ...

最新文章

  1. 构建高性能.NET应用之配高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)
  2. 微信小程序UI组件、开发框架、实用库...
  3. [scikit-learn 机器学习] 8. 非线性分类和决策树
  4. Leecode刷题热题HOT100(9)——回文数
  5. 如何在XenDesktop中映射USB设备
  6. 【javascript】js检验注册密码强度效果
  7. 如何用iMazing Profile Editor编辑配置文件
  8. java编写flash相册的制作软件,Flash电子相册制作工具(Amazing Flash Gallery Maker)
  9. Activiti 单环节多人办理一件
  10. python提取身份证信息查询_Python+Opencv身份证号码区域提取及识别实现
  11. grub2启动出错(Error11:Unrecognized device string)
  12. AT24Cxx读写全面理解
  13. 如何讲好FISHER确切概率法
  14. 《佛密诸事》第十一章:解读大悲咒
  15. 《自控力》读后感——意志力与认识自己
  16. percona-tool文档说明(5)- 复制类
  17. 尚硅谷mycat2.0安装和配置
  18. Echarts 图表制作建议指南思维导图,教你什么数据画什么图
  19. 从未在一起更让人遗憾_从未在一起和最终没有在一起哪个更让人遗憾你认为?...
  20. 速卖通商标授权怎么弄?速卖通官方授权模板书分享

热门文章

  1. 关于在软件开发过程中建立三道风险防线的想法
  2. C#压缩ZIP,JAVA无法解压
  3. openstack登陆密码忘记?如何重置dashboard界面登陆密码
  4. 净利润同比增长54%,阿里巴巴下沉市场称王?
  5. 最小二乘法在飞思卡尔智能车路径搜索中的应用
  6. GIS+WebGL地下智慧管廊三维可视化综合监控平台
  7. Cfa一级史上最优质GD网课免费分享(2020更新版)
  8. 浅谈 SAP UI5 框架对一些其他前端框架比如 Vue 的支持
  9. SX1301吞吐量是SX1278的多少倍?
  10. shell 文件查找和字符串搜索