1、实验 5 SQL 练习 一、实验目的: 熟悉 SQL SERVER 数据库的恢复技术。练习 SQL 查询语句。 二、实验内容: 1、 数据库恢复 2、 ER 图练习 3、 SQL 查询语言练习 三、表结构描述 3.1 Suppliers(供货厂商 ) 代码 描述 数据类型 长度 约束条件 SupplierID 供货厂商编号 INT 4 主码 CompanyName 厂名 VARCHAR 40 ContactName 联系人名 VARCHAR 30 ContactTitle 联系人职位 VARCHAR 30 Address 地址 VARCHAR 60 City 城市名 VARCHAR 15 Re
2、gion 地区 VARCHAR 15 PostalCode 邮政编码 VARCHAR 10 Country 国家 VARCHAR 15 Phone 电话 VARCHAR 24 Fax 传真 VARCHAR 24 HomePage 主页 VARCHAR 16 3.2 Region(地区) 代码 描述 数据类型 长度 约束条件 RegionID 地区编号 INT 4 主码 RegionDescription 地区描述 VARCHAR 50 3.3 Products(产品) 代码 描述 数据类型 长度 约束条件 ProductID 产品编号 INT 4 主码 ProductName 品名 VARCH
3、AR 40 SupplierID 供货厂商编号 INT 4 CategoryID 所属种类号 INT 4 QuantityPerUnit 单位数量 VARCHAR 20 UnitPrice 单价 FLOAT 8 UnitsInStock 库存 INT 2 UnitsOnOrder 定货数 INT 2 ReorderLevel 修订量 INT 2 Discontinued 是否进行 BIT 1 3.4 Orders(定单) 代码 描述 数据类型 长度 约束条件 OrderID 定单编号 INT 4 主码 CustomerID 顾客编号 VARCHAR 5 EmployeeID 职员编号 INT
4、4 OrderDate 定货日期 DATETIME 8 RequiredDate 交货日期 DATETIME 8 ShippedDate 载运日期 DATETIME 8 ShipVia 经由数 INT 4 Freight 运费 FLOAT 8 ShipName 船名 VARCHAR 40 ShipAddress 地址 VARCHAR 60 ShipCity 城市 VARCHAR 15 ShipRegion 地区 VARCHAR 15 PostalCode 邮政编码 VARCHAR 10 ShipCountry 国籍 VARCHAR 15 3.5 OrderDetails(定单详细信息) 代码
5、描述 数据类型 长度 约束条件 OrderID 定单编号 INT 4 主码 ProductID 产品编号 INT 4 主码 UnitPrice 单价 FLOAT 8 Quantity 数量 INT 2 Discount 折扣 FLOAT 4 3.6 Employees(职工) 代码 描述 数据类型 长度 约束条件 EmployeeID 职工编号 INT 4 主码 LastName 姓 VARCHAR 20 FirstName 名 VARCHAR 10 Title 头衔 VARCHAR 30 TitleOfCourtesy 性别 VARCHAR 25 BirthDate 生日 DATETIME
6、8 HireDate 受聘日期 DATETIME 8 Address 地址 VARCHAR 60 City 城市 VARCHAR 15 Region 地区 VARCHAR 15 PostalCode 邮政编码 VARCHAR 10 Country 国籍 VARCHAR 15 HomePhone 住宅电话 VARCHAR 24 Extension 分机号 VARCHAR 4 Photo 照片 IMAGE 16 Notes 备注 VARCHAR 16 ReportsTo 直接上级号 INT 4 Photopath 职工照片路径 VARCHAR 255 3.7 Customers(顾客) 代码 描述
7、 数据类型 长度 约束条件 CustomerID 顾客编号 VARCHAR 5 主码 CompanyName 公司名 VARCHAR 40 ContactName 联系人名 VARCHAR 30 ContactTitle 联系人头衔 VARCHAR 30 Address 地址 VARCHAR 60 City 城市 VARCHAR 15 Region 地区 VARCHAR 15 PostalCode 邮政编码 VARCHAR 10 Country 国籍 VARCHAR 15 Phone 电话 VARCHAR 24 Fax 传真 VARCHAR 24 3.8 OldSuppliers(供应厂商备份
8、表) 结构与 Suppliers 表相同 四、实验步骤 1、 运行 SQL SERVER 服务管理器,确认数据库服务器开始运行。 2、 运行企业管理器,以图示方式点击“ 附加数据库”,恢复 db目录下的数据库文件 3、 打开查询分析器,选择刚才恢复的数据库 exampleDB,输入SQL 指令,获得运行结果。 4、 完成以下 SQL 查询语句 查询顾客表 (Customer)中没有设定区域的顾客编号和公司名 SQL 语句: select CustomerID,CompanyName from Customers where not exists (select * from Region wh
9、ere RegionID is NULL); 运行结果: 统计职工表 (Employees)中头衔的 数量 SQL 语句: SELECT COUNT(Title) FROM Employees; 运行结果: 查找订单表 (Orders)中职员编号为 VICTE和 WELLI的 SQL 语句: select OrderID,Freight from Orders where CustomerID=VICTE or CustomerID=WELLI order by Freight; 运行结果: 职员生成的订单号和运费,并按照运费的降序排列 查找产品表 (Products)中的平均库存总价 (库存
10、 总价 =单价库存数 ) SQL 语句: select avg(UnitPrice*UnitsInStock) from Products 运行结果: 查找提供产品的各个 供应商编号 及其供应的产品数量 SQL 语句: select SupplierID,UnitsOnOrder from Products 运行结果: 查找提供产品的各个 供应商名称 及其供应的产品数量 SQL 语句: select CompanyName,UnitsOnOrder from Suppliers,Products where Suppliers.SupplierID=Products.SupplierID; 运行结果: 在订单详细信息表 (OrderDetails)中查找每个订单号对应的产品种类超过 4 种的订单号和产品种类数,并按照产品种类数升序排列 SQL 语句: select OrderID,count(distinct ProductID) from OrderDetails GROUP BY OrderID having count(distinct ProductID)4 order by count(distinct ProductID) 运行结果: