数据库系统原理与设计实验答案

数据库系统原理与设计实验答案
数据库系统原理与设计实验答案

SET DATEFORMAT YMD

GO

--选择数据库

USE OrderDB

GO

--实验一:简单查询

--1.1 查询所有业务部门的员工姓名、职务、薪水。

SELECT employeeName,headShip,salary

FROM Employee

--1.2 查询名字中含有“有限”的客户姓名和所在地。

SELECT customerName,address

FROM Customer

--1.3 查询出姓“王”并且姓名的最后一个字为“成”的员工。

SELECT *

FROM Employee

WHERE employeeName LIKE '王%成'

--1.4 查询住址中含有上海或南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示。

SELECT employeeName AS 姓名, department AS 所属部门, headShip AS 职称, address AS 住址, CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END AS 性别

FROM Employee

--1.5 在表sales中挑出销售金额大于等于5000元的订单。

SELECT *

FROM OrderMaster

WHERE orderSum>5000

--1.6 选取订单金额最高的前10%的订单数据。

SELECT TOP(10) PERCENT *

FROM OrderMaster

ORDER BY orderSum

--或

SELECT TOP 10 PERCENT orderNo,SUM(quantity*price) AS totalPrice

FROM OrderDetail

GROUP BY orderNO

ORDER BY SUM(quantity*price) DESC

--1.7 查询出职务为“职员”或职务为“科长”的女员工的信息。

SELECT *

FROM Employee

WHERE sex='女' AND (headShip='职员' OR headShip='科长')

--1.8 查找订单金额高于4000的所有客户编号。

SELECT customerNo

FROM OrderMaster

WHERE orderSum>4000

--1.9 选取编号介于C20050001~C20050004的客户编号、客户名称、客户地址。

SELECT customerNo,customerName,address

FROM Customer

WHERE customerNo BETWEEN 'C20050001' AND 'C20050004'

--1.10 找出同一天进入公司服务的员工。

SELECT *

FROM Employee

ORDER BY hireDate

--1.11 在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。

SELECT *

FROM OrderMaster

WHERE orderSum >(

SELECT MAX(orderSum)

FROM OrderMaster

WHERE salerNo='E2005002' AND orderDate='2008-1-9'

)

--或

SELECT *

FROM OrderMaster

WHERE orderSum >ALL(

SELECT orderSum

FROM OrderMaster

WHERE salerNo='E2005002' AND orderDate='2008-1-9'

)

--1.12 查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。

SELECT customerNo,orderNo,orderSum

FROM OrderMaster

WHERE orderNo IN(

SELECT o1.orderNo

FROM OrderDetail o1,OrderDetail o2

WHERE o1.orderNo=o2.orderNo

AND o1.productNo IN(

SELECT productNo

FROM Product

WHERE productName='52倍速光驱'

) AND o2.productNo IN(

SELECT productNo

FROM Product

WHERE productName='17寸显示器'

)

)

--1.13 查找与“陈诗杰”在同一个单位工作的员工姓名、性别、部门和职务。

SELECT employeeName,sex,department,headShip

FROM Employee

WHERE department IN(

SELECT department

FROM Employee

WHERE employeeName='陈诗杰'

)

--1.14 查询每种商品的商品编号、商品名称、订货数量和订货单价。

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail,Product

WHERE OrderDetail.productNo=Product.productNo

--1.15 查询单价高于400元的商品编号、商品名称、订货数量和订货单价。

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail,Product

WHERE OrderDetail.productNo=Product.productNo

AND price>400

--1.16 分别用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比较检索的结果。

--左外连接

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail LEFT JOIN Product ON OrderDetail.productNo=Product.productNo

WHERE price>400

--另一种理解

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail LEFT JOIN Product ON OrderDetail.productNo=Product.productNo AND price>400

--右外连接

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail RIGHT JOIN Product ON OrderDetail.productNo=Product.productNo

WHERE price>400

--另一种理解

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail RIGHT JOIN Product ON OrderDetail.productNo=Product.productNo AND price>400

--完整外部连接

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail FULL JOIN Product ON OrderDetail.productNo=Product.productNo

WHERE price>400

--另一种理解

SELECT Product.productNo,productName,quantity,price

FROM OrderDetail FULL JOIN Product ON OrderDetail.productNo=Product.productNo AND price>400

--1.17 查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男”和“女”表示,日期使用yyyy-mm-dd格式显示。

SELECT employeeNo,employeeName,sex=CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END,productName,quantity,price,quantity*price AS money,orderDate=ISNULL(CONVERT(char(10),orderDate,120),'日期不详')

FROM Employee,OrderMaster,OrderDetail,Product

WHERE Employee.employeeNo=OrderMaster.salerNo

AND OrderMaster.orderNo=OrderDetail.orderNo

AND OrderDetail.productNo=Product.productNo

--1.18 查找在2008年3月中有销售记录的客户编号、名称和订单总额。

SELECT Customer.customerNo,customerName,totalPrice=SUM(orderSum)

FROM Customer,OrderMaster

WHERE Customer.customerNo=OrderMaster.customerNo

AND YEAR(orderDate)=2008 AND MONTH(orderDate)=3

GROUP BY Customer.customerNo,customerName

--1.19 使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额,其中订货日期不要显示时间,日期格式为yyyy-mm-dd,按客户编号排序,同一客户再按订单金额降序排序输出。

SELECT

Customer.customerNo,customerName,orderDate=CONVERT(char(10),orderDate,120),orderSum FROM Customer LEFT JOIN OrderMaster ON Customer.customerNo=OrderMaster.customerNo ORDER BY Customer.customerNo,orderSum DESC

--1.20 查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别、销售日期、销售数量和金额,其中性别用“男”、“女”表示。

SELECT employeeName, sex=CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END, orderDate=CONVERT(char(10),orderDate,120),quantity,money=quantity*price

FROM Employee,OrderMaster,OrderDetail,Product

WHERE Employee.employeeNo=OrderMaster.salerNo

AND OrderMaster.orderNo=OrderDetail.orderNo

AND OrderDetail.productNo=Product.productNo

AND productName='16M DRAM'

--1.21 查找每个人的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期。

SELECT Employee.employeeNo,employeeName,sex=CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END,productName,quantity,price,totalPrice=quantity*price,orderDate=CONVERT(char(10),order Date,120)

FROM Employee,OrderMaster,OrderDetail,Product

WHERE Employee.employeeNo=OrderMaster.salerNo

AND OrderMaster.orderNo=OrderDetail.orderNo

AND OrderDetail.productNo=Product.productNo

--1.22 查询客户姓名为“客户丙”所购货物的客户名称、订单金额、订货日期和电话号码。SELECT customerName,orderSum,orderDate,telephone

FROM Customer,OrderMaster

WHERE Customer.customerNo=OrderMaster.customerNo

AND customerName='客户丙'

--1.23 找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。

SELECT orderNo,orderSum

FROM Employee,OrderMaster

WHERE Employee.employeeNo=OrderMaster.salerNo

AND sex='M' AND orderSum>=2000

--1.24 查询来自上海市的客户的姓名、电话、订单号及订单金额。

SELECT customerName,telephone,orderNo,orderSum

FROM Customer,OrderMaster

WHERE Customer.customerNo=OrderMaster.customerNo

AND address LIKE '上海市%'

--实验二:复杂查询

--2.1 查找有销售记录的客户编号、名称和订单总额。

SELECT Customer.customerNo,customerName,SUM(orderSum) AS totalPrice

FROM Customer,OrderMaster

WHERE Customer.customerNo=OrderMaster.customerNo

GROUP BY Customer.customerNo,customerName

--2.2 在订单明细表中查询订单金额最高的订单。

FROM OrderDetail

WHERE orderNo IN(

SELECT orderNo

FROM OrderDetail

GROUP BY orderNo

HAVING SUM(quantity*price)>=ALL(

SELECT SUM(quantity*price)

FROM OrderDetail

GROUP BY orderNo

)

)

--2.3 查询没有订购商品的客户编号和客户名称。

SELECT customerNo,customerName

FROM Customer

WHERE customerNo NOT IN(

SELECT customerNo

FROM OrderMaster

)

--2.4 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。

SELECT productNo,orderNo,quantity,quantity*price AS totalPrice

FROM OrderDetail

WHERE productNo IN(

SELECT productNo

FROM OrderDetail

GROUP BY productNo

HAVING COUNT(*)>=3

)

ORDER BY quantity DESC

--2.5 使用子查询查找“16M DRAM”的销售情况,要求显示相应的销售员的姓名、性别、销售日期、销售数量和金额,其中性别用“男”、“女”表示。

SELECT employeeName,sex=CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END,orderDate,quantity,totalPrice=quantity*price

FROM Employee,OrderMaster,OrderDetail

WHERE Employee.employeeNo=OrderMaster.salerNo

AND OrderMaster.orderNo=OrderDetail.orderNo

AND productNo IN(

SELECT productNo

FROM Product

WHERE productName='16M DRAM'

--2.6 查询sales表中订单金额最高的订单号及订单金额。

SELECT orderNo,orderSum

FROM OrderMaster

WHERE orderSum>=ALL(

SELECT orderSum

FROM OrderMaster

)

--2.7 计算出一共销售了几种商品。

SELECT COUNT(DISTINCT productNo) AS productNum

FROM OrderDetail

--2.8 显示OrderDetail表中每种商品的订购金额总和,并且依据销售金额由大到小排序输出。SELECT productNo,SUM(quantity*price) AS totalPrice

FROM OrderDetail

GROUP BY productNo

ORDER BY SUM(quantity*price) DESC

--2.9 查找销售总额少于1000元的销售员编号、姓名和销售额。

SELECT employeeNo,employeeName,SUM(orderSum) AS totalPrice

FROM Employee,OrderMaster

WHERE Employee.employeeNo=OrderMaster.salerNo

GROUP BY employeeNo,employeeName

HAVING SUM(orderSum)<1000

--2.10 找出目前业绩未超过5000元的员工,并按销售业绩的降序排序输出。

SELECT Employee.employeeNo,employeeName,SUM(orderSum) AS totalPrice

FROM Employee,OrderMaster

GROUP BY Employee.employeeNo,employeeName

HAVING SUM(orderSum)<5000

ORDER BY SUM(orderSum) DESC

--2.11 在Employee表中查询薪水超过员工平均薪水的员工信息。

SELECT *

FROM Employee

WHERE salary>=(

SELECT AVG(salary)

FROM Employee

)

--2.12 计算每一种商品的销售数量、平均销售单价和总销售金额。

SELECT productNo,SUM(quantity) AS totalNum,SUM(price*quantity)/SUM(quantity) AS

avgPrice,SUM(price*quantity) AS totalPrice

FROM OrderDetail

GROUP BY productNo

--2.13 查找至少有3次销售的业务员名单和销售日期。

SELECT salerNo,orderDate

FROM OrderMaster

WHERE salerNo IN(

SELECT salerNo

FROM OrderMaster

GROUP BY salerNo

HAVING COUNT(*)>=3

)

--2.14 用存在量词查找没有订货记录的客户名称。

SELECT customerNo

FROM Customer

WHERE NOT EXISTS(

SELECT *

FROM OrderMaster

WHERE Customer.customerNo=OrderMaster.customerNo

)

--2.15 查询订单中所订购的商品数量没有超过10个的客户编号和客户名称。SELECT customerNo,customerName

FROM Customer

WHERE customerNo IN(

SELECT customerNo

FROM OrderMaster

WHERE orderNo IN(

SELECT orderNo

FROM OrderDetail

WHERE quantity<10

)

)

--2.16 在销售明细表中按商品编号进行汇总,统计每种商品的销售数量和金额。SELECT productNo,SUM(quantity) AS totalNum,SUM(quantity*price) AS totalPrice FROM OrderDetail

GROUP BY productNo

--2.17 按客户编号统计每个客户2008年2月的订单总金额。

SELECT customerNo,SUM(orderSum) AS totalPrice

FROM OrderMaster

WHERE YEAR(orderDate)=2008 AND MONTH(orderDate)=2

GROUP BY customerNo

--2.18 查找订单金额高于8000的所有客户编号。

SELECT customerNo

FROM OrderMaster

WHERE orderSum>=8000

--2.19 显示每种商品的销售金额总和,并以销售金额由大到小输出。

SELECT productNo,SUM(price*quantity) AS totalPrice

FROM OrderDetail

GROUP BY productNo

ORDER BY SUM(price*quantity)

--2.20 查找销售金额最大的客户名称和总货款。

SELECT customerName,SUM(orderSum) AS totalPrice

FROM Customer,OrderMaster

WHERE Customer.customerNo=OrderMaster.customerNo

GROUP BY customerName

HAVING SUM(orderSum)>=ALL(

SELECT SUM(orderSum)

FROM OrderMaster

GROUP BY customerNo

)

--2.21 查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额。SELECT x.customerNo,customerName,p.productNo,productName,quantity,quantity*price AS totalPrice

FROM Customer x,OrderMaster y,OrderDetail z,Product p

WHERE x.customerNo=y.customerNo

AND y.orderNo=z.orderNo

AND z.productNo=p.productNo

AND EXISTS(

SELECT *

FROM OrderMaster a,OrderDetail b

WHERE a.orderNo=b.orderNo

AND a.orderNo IN(

SELECT orderNo

FROM OrderMaster c

WHERE c.customerNo=x.customerNo

)

GROUP BY a.customerNo

HAVING COUNT(DISTINCT productNo)>=3

)

ORDER BY x.customerNo

--2.22 找出目前业绩超过232000元的员工编号和姓名。

SELECT Customer.customerNo,customerName

FROM Customer,OrderMaster

WHERE Customer.customerNo=OrderMaster.customerNo

GROUP BY Customer.customerNo,customerName

HAVING SUM(orderSum)>=232000

--2.23 找出目前销售业绩超过40000元的业务员编号及销售业绩,并按销售业绩从大到小排序输出。

SELECT customerNo,SUM(orderSum) AS totalPrice

FROM OrderMaster

GROUP BY customerNo

HAVING SUM(orderSum)>=4000

ORDER BY SUM(orderSum)

--2.24 求出每位客户的总订购金额,显示出客户号及总订购金额,并按总订购金额降序排列。SELECT customerNo,SUM(orderSum) AS totalPrice

FROM OrderMaster

GROUP BY customerNo

ORDER BY SUM(orderSum) DESC

--2.25 求每位客户订购的每种商品的总数量及平均单价,并按客户号、商品号从小到大排列。SELECT customerNo,productNo,SUM(quantity) AS totalNum,SUM(quantity*price)/SUM(quantity) AS avgPrice

FROM OrderMaster,OrderDetail

WHERE OrderMaster.orderNo=OrderDetail.orderNo

GROUP BY customerNo,productNo

ORDER BY customerNo,productNo

--2.26 查询业绩最好的业务员号、业务员名及其总销售金额。

SELECT Employee.employeeNo,employeeName,SUM(orderSum) AS totalPrice

FROM Employee,OrderMaster

WHERE Employee.employeeNo=OrderMaster.salerNo

GROUP BY Employee.employeeNo,employeeName

HAVING SUM(orderSum)>=ALL(

SELECT SUM(orderSum)

FROM OrderMaster

GROUP BY salerNo

)

--2.27 查询订购的商品至少包含了订单“200803010001”中所订购商品的订单。

SELECT orderNo

FROM OrderMaster

WHERE NOT EXISTS(

SELECT *

FROM OrderDetail a

WHERE orderNo='200803010001'

AND NOT EXISTS(

SELECT *

FROM OrderDetail b

WHERE b.orderNo=OrderMaster.orderNo

AND b.productNo=a.productNo

)

)

--2.28 求每种商品的总销售数量及总销售金额,要求显示出商品编号、商品名称、总数量及总金额,并按商品号从小到大排列。

SELECT Product.productNo,productName,SUM(quantity) AS totalNum,SUM(quantity*price) AS totalPrice

FROM Product,OrderDetail

WHERE Product.productNo=OrderDetail.productNo

GROUP BY Product.productNo,productName

ORDER BY Product.productNo

--2.29 查询总订购金额超过“C20070002”客户的总订购金额的客户号、客户名及其住址。SELECT customerNo,customerName,address

FROM Customer

WHERE customerNo IN(

SELECT customerNo

FROM OrderMaster

GROUP BY customerNo

HAVING SUM(orderSum)>=ALL(

SELECT SUM(orderSum)

FROM OrderMaster

GROUP BY customerNo

)

)

--2.30 查询销售金额最高的销售员编号、订单编号、订单日期和订单金额。

SELECT salerNo,orderNo,orderDate,orderSum

FROM OrderMaster

WHERE orderSum=(

SELECT MAX(orderSum)

FROM OrderMaster

)

--实验三:数据定义操作

--3.1 创建OrderDB数据库和表

--略,参见OrderDB.sql

--3.2 在创建基本表时设置合理的主、外键约束。

--略,参见OrderDB.sql

--3.3 表结构的修改:

--3.3.1 修改客户表结构,要求客户名称和客户电话属性为NOT NULL。

ALTER TABLE Customer

ALTER COLUMN customerName varchar(40) NOT NULL

ALTER TABLE Customer

ALTER COLUMN telephone varchar(20) NOT NULL

--3.3.2 修改员工表结构,要求员工姓名和电话属性为NOT NULL。

ALTER TABLE Employee

ALTER COLUMN employeeName varchar(10) NOT NULL

ALTER TABLE Employee

ALTER COLUMN telephone varchar(20) NOT NULL

--3.3.3 修改订单主表结构,要求发票号码属性为NOT NULL。

ALTER TABLE OrderMaster

ALTER COLUMN invoiceNo varchar(10) NOT NULL

--3.4 创建基本表时,同时完成以下索引。

--3.4.1 在员工表中按所得薪水建立一个非聚集索引salaryIdx。

CREATE INDEX salaryIdx

ON Employee(salary)

--3.4.2 在订单主表中,首先按订单金额的升序,然后按业务员编号的降序建立一个非聚集索引salenosumIdx。

CREATE INDEX salenosumIdx

ON OrderMaster(orderSum, salerNo DESC)

--3.5 创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、客户地址、建立日期。

CREATE VIEW view_Customer_shanghai

AS

SELECT customerNo,customerName,address--,createDate

FROM Customer

WHERE address LIKE '上海%'

WITH CHECK OPTION

--实验四:数据更新操作

--4.1 对表的基本操作有以下内容。

--4.1.1 分别给这五张表添加元组信息,要求员工表、客户表、商品表各插入5个元组,订单主表8个元组,订单明细表20个元组。

--略,参见OrderDB.sql

--4.1.2 将作废订单(发票号码5197791779)由订单明细表中删除。

DELETE OrderDetail

WHERE orderNo=(

SELECT orderNo

FROM OrderMaster

WHERE invoiceNo='5197791779'

)

--4.1.3 将上海的客户住址全都改为深圳。

UPDATE Customer

SET address='深圳'

WHERE address='上海'

--4.1.4 将工作满2周年的员工薪水上调5%,工作满5周年的员工薪水上调8%。UPDATE Employee

SET salary=salary*1.05

WHERE DATEDIFF(YEAR,hireDate,GETDATE())>=2

--WHERE YEAR(GETDATE())-YEAR(hireDate)>2 OR YEAR(GETDATE())=2 AND MONTH(hireDate)

UPDATE Employee

SET salary=salary*1.08

WHERE DATEDIFF(YEAR,hireDate,GETDATE())>=5

--4.1.5 将客户c20090001在2009年1月购买的所有商品单价打9折。

UPDATE OrderDetail

SET price=price*0.9

WHERE orderNo=(

SELECT orderNo

FROM OrderMaster

WHERE customerNo='c20090001'

AND YEAR(orderDate)=2009

AND MONTH(orderDate)=1

)

--4.1.6 根据订单明细表,修改订单主表的订单金额信息。

UPDATE OrderMaster

SET orderSum=(

SELECT SUM(price*quantity)

FROM OrderDetail

WHERE orderNo=OrderMaster.orderNo

)

--4.2 对视图的基本操作有以下内容。

--4.2.1 对视图添加一条记录数据(注意:分别查看Customer表和该视图的结果)。INSERT view_Customer_shanghai VALUES('C20120001','红三环卷烟厂', '滁州市')

INSERT view_Customer_shanghai VALUES('C20120002','上海卷烟厂','上海市')

--4.2.2 删除视图中所有姓“王”的客户数据。

DELETE view_Customer_shanghai

WHERE customerName LIKE '王%'

--4.2.3 通过视图修改表内某一客户的姓名。

UPDATE view_Customer_shanghai

SET customerName='上海永久自行车股份有限公司'

WHERE customerNo='C20120002'

--4.2.4 对员工表和订单主表创建一个视图,该视图包含相同业务员的编号、姓名、订单号、订单金额。

CREATE VIEW view_Employee_OrderMaster

AS

SELECT TOP 100 PERCENT employeeNo,employeeName,orderNo,orderSum

FROM Employee,OrderMaster

WHERE Employee.employeeNo=OrderMaster.salerNo

ORDER BY employeeNo

--4.2.5 将上述视图中订单号为200808080808的记录的订单金额改为60000。

UPDATE view_Employee_OrderMaster

SET orderSum=60000

WHERE orderNo='200808080808'

--4.2.6 给上述视图添加一条记录数据。

INSERT view_Employee_OrderMaster VALUES('E2012001', '任正非', '201201090001', 60000)

--4.2.7 删除上述视图。

DROP VIEW view_Employee_OrderMaster

--实验六:安全性定义与检查

--请完成下面的实验内容。

--(1) 分别创建登录账号和用户账号john,mary(注意服务器角色的设置)。

sp_addlogin 'john'

GO

sp_grantdbaccess 'john','john'

--sp_revokedbaccess 'john'

--sp_droplogin 'john'

GO

sp_addlogin 'mary'

GO

sp_grantdbaccess 'mary','mary'

GO

--(2) 将员工表的所有权限给全部用户。

GRANT ALL ON Employee TO PUBLIC

GO

--(3) 创建角色r1,r2,将订单明细表所有列的SELECT权限、UNIT_PRICE列的UPDATE权限给r1。

sp_addrole 'r1'

GO

sp_addrole 'r2'

GO

GRANT SELECT ON OrderDetail TO r1

GRANT UPDATE ON OrderDetail(price) TO r1

--(4) 收回全部用户对员工表的所有权限。

REVOKE ALL ON Employee TO PUBLIC

GO

--(5) 将john,mary两个用户赋予r1角色。

sp_addrolemember 'r1','john'

GO

sp_addrolemember 'r1','mary'

GO

--(6) 收回john对订单明细表所有列的SELECT权限。

REVOKE SELECT ON OrderDetail TO john

GO

--(7) 在当前数据库中删除角色r2。

sp_droprole r2

GO

--实验七:完整性定义与检查

--重新创建OrderDB数据库中5张基本表,要求完成以下完整性约束。

--(1) 分别为每张表合理建立主、外键约束。

--注:OrderDB在创建时已经设置了合理的主、外键约束,以下示例语句仅仅给出了在基本表中没有设置主、外键的情况下增加主、外键约束的方法。

ALTER TABLE Employee ADD CONSTRAINT PK_Employee PRIMARY KEY(employeeNo)

ALTER TABLE Employee ADD CONSTRAINT FK_Employee_Department FOREIGN KEY(department) REFERENCES Department

--(2) 员工表:员工姓名、电话属性为NOT NULL;员工编号构成:年流水号,共8位,第1位为E,如E2008001,年份取雇佣日期的年份;性别:f表示女,m表示男。

ALTER TABLE Employee ALTER COLUMN telephone varchar(20) NOT NULL

ALTER TABLE Employee ADD CONSTRAINT CK_Employee_employeeNo CHECK(employeeNo LIKE '[E][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

ALTER TABLE Employee ADD CONSTRAINT CK_Employee_sex CHECK(sex='f' OR sex='m')

--(3) 商品表:商品编号、商品名称、商品类别、建立日期设为NOT NULL;商品编号构成:年流水号,共9位,第1位为P,如P2*******,年份取建立日期的年份。

ALTER TABLE Product ALTER COLUMN productClass varchar(20) NOT NULL

ALTER TABLE Product ADD CONSTRAINT CK_Product_productNo CHECK(productNo LIKE '[P][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

--(4) 客户表:客户编号、客户名称、客户电话设为NOT NULL;客户编号构成:年流水号,共9位,第1位为C,如C20080001,年份取建立日期的年份。

ALTER TABLE Customer ALTER COLUMN telephone varchar(20) NOT NULL

ALTER TABLE Customer ADD CONSTRAINT CK_Customer_customerNo CHECK(customerNo LIKE '[C][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

--(5) 订单主表:订单编号的构成:年月日流水号,共12位,如200708090001;订单编号、客户编号、员工编号、发票号码设为NOT NULL;业务员必须是员工;

--订货日期和出货日期的默认值为系统当前日期;订单金额默认值为0;发票号码建立UNIQUE约束。

ALTER TABLE OrderMaster ADD CONSTRAINT CK_OrderMatser_orderNo CHECK(orderNo LIKE '[1-2][0-9][0-9][0-9][0-1][0-9][0-1][0-9][0-9][0-9][0-9][0-9]')

ALTER TABLE OrderMaster ALTER COLUMN invoiceNo char(10) NOT NULL

ALTER TABLE OrderMaster ADD CONSTRAINT FK_OrderMaster_Employee FOREIGN KEY(salerNo) REFERENCES Employee(employeeNo)

ALTER TABLE OrderMaster ADD CONSTRAINT DF_OrderMaster_orderDate DEFAULT(GETDATE()) FOR orderDate

ALTER TABLE OrderMaster ADD CONSTRAINT DF_OrderMaster_orderSum DEFAULT(0) FOR orderSum

ALTER TABLE OrderMaster ADD CONSTRAINT UQ_OrderMaster_invoiceNo UNIQUE(invoiceNo)

--实验八:游标与存储过程

--(1) 利用游标查找所有女业务员的基本情况。

DECLARE cur_Employee_female SCROLL CURSOR

FOR

SELECT * FROM Employee WHERE sex='F'

OPEN cur_Employee_female

FETCH NEXT FROM cur_Employee_female

WHILE (@@FETCH_STATUS<>-1)

BEGIN

FETCH NEXT FROM cur_Employee_female

END

CLOSE cur_Employee_female

DEALLOCATE cur_Employee_female

GO

--(2) 创建一个游标,逐行显示表Customer的记录,要求按

--'客户编号'+'------'+'客户名称'+'----------------'+'客户地址'+'--------------------------'+

--'客户电话'+'------'+'客户邮编'+'------'格式输出,并且用WHILE结构来测试游标的函数@@Fetch_Status的返回值。

DECLARE @customerNo char(9),@customerName varchar(40),@address varchar(40), @telephone varchar(20),@zip char(6)

DECLARE cur_Customer CURSOR

FOR

SELECT customerNo,customerName,address,telephone,zip

FROM Customer

PRINT '客户编号'+'------'+'客户名称'+'----------------'+'客户地址'+'--------------------------'+ '客户电话'+'------'+'客户邮编'+'------'

OPEN cur_Customer

FETCH cur_Customer INTO @customerNo,@customerName,@address,@telephone,@zip WHILE(@@FETCH_STATUS=0)

BEGIN

PRINT CONVERT(char(14),@customerNo) + CONVERT(char(24),@customerName) + CONVERT(char(34),@address)

+ CONVERT(char(14),@telephone) + CONVERT(char(6),@zip)

FETCH cur_Customer INTO @customerNo,@customerName,@address,@telephone,@zip END

CLOSE cur_Customer

DEALLOCATE cur_Customer

GO

--(3) 利用游标修改OrderMaster表中orderSum的值。

DECLARE @orderNo char(12),@orderSum numeric(9,2)

DECLARE cur_OrderMaster CURSOR

FOR

SELECT orderNo,orderSum

FROM OrderMaster

OPEN cur_OrderMaster

FETCH cur_OrderMaster INTO @orderNo,@orderSum

WHILE (@@FETCH_STATUS=0)

BEGIN

--PRINT CONVERT(char(15),@orderNo) + CONVERT(char(15),@orderSum)

UPDATE OrderMaster SET orderSum=@orderSum+20000 WHERE CURRENT OF cur_OrderMaster

FETCH cur_OrderMaster INTO @orderNo,@orderSum

END

CLOSE cur_OrderMaster

DEALLOCATE cur_OrderMaster

GO

--(4) 利用游标显示出OrderMaster表中每一个订单所对应的明细数据信息。

DECLARE @orderNO char(12),@customerNo char(9),@salerNo char(8),@orderDate datetime DECLARE cur_OrderMaster CURSOR

FOR

SELECT orderNo,customerNo,salerNo,orderDate

FROM OrderMaster

OPEN cur_OrderMaster

FETCH cur_OrderMaster INTO @orderNo,@customerNo,@salerNO,@orderDate

WHILE (@@FETCH_STATUS=0)

BEGIN

PRINT CONVERT(char(15),'订单号') + CONVERT(char(15),'客户号') + CONVERT(char(15),'销售员号') + CONVERT(char(15),'销售日期')

PRINT CONVERT(char(15),@orderNo) + CONVERT(char(15),@customerNo) + CONVERT(char(15),@salerNO) + CONVERT(char(15),@orderDate,111)

PRINT CONVERT(char(15),'产品号') + CONVERT(char(15),'数量') + CONVERT(char(15),'单价') --DECLARE @orderNO char(12)='200801090001'

DECLARE @productNo char(9),@quantity int,@price numeric(7,2)

DECLARE cur_OrderDetail CURSOR

FOR

SELECT productNo,quantity,price

FROM OrderDetail

WHERE orderNo=@orderNo

OPEN cur_OrderDetail

FETCH cur_OrderDetail INTO @productNo,@quantity,@price

WHILE (@@FETCH_STATUS=0)

BEGIN

PRINT CONVERT(char(15),@productNo) + CONVERT(char(15),@quantity) + CONVERT(char(15),@price)

FETCH cur_OrderDetail INTO @productNo,@quantity,@price

END

CLOSE cur_OrderDetail

DEALLOCATE cur_OrderDetail

PRINT ''

FETCH cur_OrderMaster INTO @orderNo,@customerNo,@salerNo,@orderDate

END

CLOSE cur_OrderMaster

DEALLOCATE cur_OrderMaster

GO

--(5) 利用存储过程,给Employee表添加一条业务部门员工的信息。

CREATE PROCEDURE proc_Employee1

@employeeNo char(8),

@employeeName varchar(10),

@sex char(1),

@birthday datetime,

@address varchar(50),

@telephone varchar(20),

@hireDate datetime,

@department varchar(30),

@headShip varchar(10),

@salary numeric(8,2)

AS

INSERT Employee VALUES(@employeeNo,@employeeName,@sex,@birthday,@address,@telephone,

@hireDate,@department,@headShip,@salary)

GO

--EXEC proc_Employee1 'E2012001', '吕布', 'M', '1970-11-6','陕西省五原市阳关大道10号', NULL,'1990-11-18','保卫科','科长',5000.00

--(6) 利用存储过程输出所有客户姓名、客户订购金额及相应业务员的姓名。

CREATE PROCEDURE proc_OrderMaster

AS

SELECT orderNo,customerName,orderSum,employeeName

FROM OrderMaster,Customer,Employee

WHERE OrderMaster.customerNo=Customer.customerNo

AND OrderMaster.salerNo=Employee.employeeNo

GO

--EXEC proc_OrderMaster

--(7) 利用存储过程查找某员工的员工编号、订单编号、销售金额。

--IF EXISTS(SELECT name FROM sysobjects WHERE name='proc_Employee3' AND type='P')

IF OBJECT_ID ( 'proc_Employee2', 'P' ) IS NOT NULL

DROP PROCEDURE proc_Employee2

GO

CREATE PROCEDURE proc_Employee2

@employeeName varchar(10)

AS

SELECT employeeNo,orderNo,orderSum

FROM Employee,OrderMaster

WHERE Employee.employeeNo=OrderMaster.salerNo

AND employeeName=@employeeName

GO

--EXEC proc_Employee2 '张小梅'

--(8) 利用存储过程查找姓“李”并且职称为“职员”的员工编号、订单编号、销售金额。CREATE PROCEDURE proc_Employee3

@employeeName varchar(10),

@headShip varchar(10)

AS

SELECT employeeNo,employeeName,orderNo,orderSum

FROM Employee,OrderMaster

WHERE Employee.employeeNo=OrderMaster.salerNo

AND employeeName LIKE @employeeName

AND headShip=@headShip

GO

--EXEC proc_Employee3 '李%','职员'

--(9) 请使用游标和循环语句编写一个存储过程proSearchCustomer,根据客户编号,查找该客户

--的名称、地址以及所有与该客户有关的销售记录,销售记录按商品分组输出。

CREATE PROCEDURE proSearchCustomer

@customerNo char(9)

AS

DECLARE @customerName varchar(40)

DECLARE @address varchar(40)

SELECT @customerName=customerName,@address=address

FROM Customer

WHERE customerNo=@customerNo

PRINT CONVERT(char(15),@customerNo) + CONVERT(char(40),@customerName) + CONVERT(char(40),@address)

PRINT

'============================================================================== ====='

PRINT CONVERT(char(15),'订单号') + CONVERT(char(12),'商品号') + CONVERT(char(40),'商品名') +

数据库系统原理教程课后习题答案

第1章绪论 1 .试述数据、数据库、数据库系统、数据库管理系统得概念。 答: ( l )数据( Data):描述事物得符号记录称为数据。数据得种类有数字、文字、图形、图像、声音、正文等。数据与其语义就是不可分得。解析在现代计算机系统中数据得概念就是广义得。早期得计算机系统主要用于科学计算,处理得数据就是整数、实数、浮点数等传统数学中得数据。现代计算机能存储与处理得对象十分广泛,表示这些对象得数据也越来越复杂。数据与其语义就是不可分得。500 这个数字可以表示一件物品得价格就是500元,也可以表示一个学术会议参加得人数有500 人,还可以表示一袋奶粉重500 克。(2)数据库( DataBase,简称DB) :数据库就是长期储存在计算机内得、有组织得、可共享得数据集合。数据库中得数据按一定得数据模型组织、描述与储存,具有较小得冗余度、较高得数据独立性与易扩展性,并可为各种用户共享。 ( 3 )数据库系统(DataBas。Sytem ,简称DBS):数据库系统就是指在计算机系统中引入数据库后得系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。解析数据库系统与数据库就是两个概念。数据库系统就是一个人一机系统,数据库就是数据库系统得一个组成部分。但就是在日常工作中人们常常把数据库系统简称为数据库。希望读者能够从人们讲话或文章得上下文中区分“数据库系统”与“数据库”,不要引起混淆。 ( 4 )数据库管理系统( DataBase Management sytem,简称DBMs ):数据库管理系统就是位于用户与操作系统之间得一层数据管理软件,用于科学地组织与存储数据、高效地获取与维护数据。DBMS 得主要功能包括数据定义功能、数据操纵功能、数据库得运行管理功能、数据库得建立与维护功能。解析DBMS 就是一个大型得复杂得软件系统,就是计算机中得基础软件。目前,专门研制DBMS 得厂商及其研制得DBM S产品很多。著名得有美国IBM 公司得DBZ 关系数据库管理系统与IMS层次数据库管理系统、美国Oracle 公司得orade 关系数据库管理系统、s油ase 公司得s 油ase关系数据库管理系统、美国微软公司得SQL Serve ,关系数据库管理系统等。 2 .使用数据库系统有什么好处? 答: 使用数据库系统得好处就是由数据库管理系统得特点或优点决定得。使用数据库系统得好处很多,例如,可以大大提高应用开发得效率,方便用户得使用,减轻数据库系统管理人员维护得负担,等等。使用数据库系统可以大大提高应用开发得效率。因为在数据库系统中应用程序不必考虑数据得定义、存储与数据存取得具体路径,这些工作都由DBMS来完成。用一个通俗得比喻,使用了DBMS 就如有了一个好参谋、好助手,许多具体得技术工作都由这个助手来完成。开发人员就可以专注于应用逻辑得设计,而不必为数据管理得许许多多复杂得细节操心。还有,当应用逻辑改变,数据得逻辑结构也需要改变时,由于数据库系统提供了数据与程序之间得独立性,数据逻辑结构得改变就是DBA 得责任,开发人员不必修改应用程序,或者只需要修改很少得应用程序,从而既简化了应用程序得编制,又大大减少了应用程序得维护与修改。使用数据库系统可以减轻数据库系统管理人员维护系统得负担。因为DBMS 在数据库建立、运用与维护时对数据库进行统一得管理与控制,包括数据得完整性、安全性、多用户并发控制、故障恢复等,都由DBMS执行。总之,使用数据库系统得优点就是很多得,既便于数据得集中管理,控制数据冗余,提高数据得利用率与一致性,又有利于应用程序得开发与维护。读者可以在自己今后得工作中结合具体应用,认真加以体会与总结。 3.试述文件系统与数据库系统得区别与联系。 答: 文件系统与数据库系统得区别就是:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高得物理独立性与一定得逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据得安全性、完整性、并发控

数据库系统原理及应用教程第四版课后答案

第一章 1、(1)数据:数据用于载荷信息的物理符号。 (2)数据的特征;○1数据有“型”与“值”之分;○2数据受数据类型与取值范围的约束;○3数据有定性表示与定量之分;○4数据应具有载体与多种表现形式。 3、(1)数据管理的功能: ○1组织与保存数据功能,即将收集到的数据合理地分类组织,将其存储在物理载体上,使数据能够长期的被保存; ○2数据维护功能,即根据需要随时进行插入新数据,修改原数据与删除失效数据的操作; ○3数据查询与数据统计功能,即快速的得到需要的正确数据,满足各种使用要求;○4数据的安全与完整性控制功能,即能保护数据的安全与完整性。 (2)数据管理的目标:收集完整的信息,将信息用数据表示,按数据结构合理科学的组织并保存数据;为各种使用快速地提供需要的数据,并保护数据的安全与完整性。 4、(1)数据库:就是数据管理的新方法与技术,她就是一个按数据结构来存储与管理数据的计算机软件系统。 (2)数据库中的数据具有的特点:○1数据库中的数据具有整体性,即数据库中的数据要保持自身完整的数据结构;○2数据库中的数据具有数据共享性,不同的用户可以按各自的用法使用数据库中的数据,多个用户可以同时共享数据库中的数据资源。 5、(1)数据库管理系统:它就是专门用于管理数据库的计算机管理软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询与统计等操作功能,并完成对数据完整性、安全性进行操作的功能。 (2)数据库管理系统主要功能:就是数据存储、数据操作与数据控制功能。其数据存储与数据操作就是:数据库的定义功能,指未说明库中的数据情况而进行的建立数据库结构的操作;数据库建立功能,指大批数据录入到数据库的操作,它使得库中含有需要保护的数据记录;数据库维护功能,指对数据的插入、删除与修改操纵,其操作做能满足库中信息变化或更新的需求;数据库查询与统计功能,指通过对数据库的访问,为实际应用提供需要的数据。数据库管理系统的数据控制功能为:数据安全性控制功能,即为了保证数据库的数据安全可靠,防止不合法的使用造成数据库泄露与破坏,也就就是避免数据被人偷瞧、篡改或破坏;数据库完整性控制功能,指为了保证数据库中的数据的正确、有效与相容,防止不合语意的错误数据被输入或输出。 14、(1)数据库系统的软件由几部分组成?数据库系统的软件中包括操作系统(OS)、数据库管理系统(DBMS)、主语言系统、应用程序软件与用户数据库。 (2)作用:①操作系统或汉字操作系统:操作系统就是所有计算机软件的基础,在数据库系统中它起着支持DBMS及主语言系统工作的作用。如果管理的信息中有汉字,则需要中文操作系统的支持,以提供汉字的输入、输出方法与汉字信息的处理方法。②数据库管理系统与主语言系统:数据库管理系统就是为定义、建立、维护、使用及控制数据库而提供的有关数据管理的系统软件。主语言系统就是为应用程序提供的诸如程序控制、数据输入输出、功能函数、图形处理、计算方法等数据处理功能的系统软件。③应用开发工具软件:应用开发工具就是DBMS系统为应用开发人员与最终用户提供的高效率、多功能的应用生成器、第四代计算机语言等各种软件工具.如报表生成器、表单生成器、查询与视图设计器等,它们为数据库系统的开发与使用提供了良好的环境与帮助。④应用系统及数据库:数据库应用系统包括为特定的应用环境建立的数据库、开发的各类应用程序及编写的文档资料,它们就是一个有机整体。通过运行数据库应用系统,可以实现对数据库中数据的维护、查询、管理与处理操作。(3)关系:

数据库系统原理实验报告-基本操作

计算机学院 数据库系统原理实验报告 课程名称:数据库系统原理 开课学期:2015-2016学年第1学期 班级: 指导老师: 实验题目:SQLServer系统基本操作 学号: 姓名: 提交时间:第n周

一.实验目的 (一)通过实验了解大型数据库管理系统SQL SERVER2000基本架构,并且掌握验证SQL SERVER2000是否正确安装和基本的配置方法。 (二)通过实验,掌握SQL SERVER数据库与ACCESS数据库、EXCEL 表和文本文件的数据之间的导入-导出方法。 二.实验原理 大型数据库管理系统是数据库管理的基本平台。SQL SERVER2000数据存储在数据库中。在数据库中,数据被组织到用户可以看见的逻辑组件中。数据库还可以按物理方式,在磁盘上作为两个或更多的文件实现。使用数据库时使用的主要是逻辑组件,例如表、视图、过程和用户。文件的物理实现在很大程度上是透明的。一般只有数据库管理员需要处理物理实现。每个SQL Server 实例有四个系统数据库(master、model、tempdb 和msdb)以及一个或多个用户数据库。 三.实验内容和方法 (一)基本操作 1.启动和停止SQLServer服务 可以通过以下4种方法停止和启动SQLServer服务 (1)SQLServer服务管理器

(2)SQLServer企业管理器

(3)控制面板中的服务对话框

(4)NT服务器命令行 (二)数据的导入导出 1.奖SQL Server 数据库转移到access的数据库(1)启动office的access,建立一个空的数据库 (2)导出数据库

数据库系统原理与设计(第2版)-万常选版-第2章-关系模型与关系代数--课后答案

3.简述如下概念,并说明它们之间的联系与区别:。 (1)域,笛卡尔积,关系,元组,属性 答:域:域是一组具有相同数据类型的值的集合。 笛卡尔积:给定一组域D1,D2,…,Dn,这些域中可以有相同的。这组域的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di?Di,i=1,2,…,n }其中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)。元素中的每一个值di叫作一个分量(Component)。 关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为 R(D1,D2,…,Dn) 元组:关系中的每个元素是关系中的元组。 属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。 (2)超码,主码,候选码,外码 答:超码:对于关系r的一个或多个属性的集合A,如果属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码 (superkey) 。 候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。 主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)。 外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S 的主码Ks相对应,则称F是基本关系R的外码(Foreign key),简称外码。 基本关系R称为参照关系(Referencing relation),基本关系S称为被参照关系(Referenced relation)或目标关系(Target relation)。关系R和S可以是相同的关系。 (3)关系模式,关系,关系数据库 答:关系模式:关系的描述称为关系模式(Relation Schema)。它可以形式化地表示为:R(U,D,dom,F) 其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom 为属性向域的映象集合,F为属性间数据的依赖关系集合。 关系:在域D1,D2,…,Dn上笛卡尔积D1×D2×…×Dn的子集称为关系,表示为 R(D1,D2,…,Dn) 关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。 关系数据库:关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。 2.3.为什么需要空值null? 答:引入空值,可以方便于数据库的维护和建立,数字或者字符有时并不能解决想要解决的问题,毕竟它们是真实的存在,有了空值,那么有些操作,比如查询,插入,删除都可以更加方便,比如公司的部门,新增的部门,信息是不存在的,是之后数据库人员进行添加之后才有的,所以让它为空,比给它0更加贴近实际。空值是所有可能的域的一个取值,表明值未知或不存在。 2.3.关系模型的完整性规则有哪些? 答:关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。 其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的

数据库系统原理课后答案 第九章

9.1 名词解释 (1)OODBS:是指面向对象数据库系统,它既具数据库管理的基本功能,又能支持面向对象的数据模型。 (2)ORDBS:基于对象关系数据模型的DBS称为对象关系数据库系统(ORDBS)。 (3)平面关系模型:传统的关系模型称为“平面关系模型”,它要求关系模式具有第一范式(1NF)性质,关系具有规范化的结构。也就是规定属性值是不可分解的,即不允许属性值具有复合结构(元组或关系)。 (4)嵌套关系模型:是从平面关系模型发展而成的。它允许关系的属性值又可以是一个关系,而且可以出现多次嵌套。嵌套关系突破了1NF的定义框架,是“非1NF关系”。 (5)复合对象模型:在嵌套关系模型上进一步放宽要求。在关系定义上,集合与元组不再有交替出现的严格限制,此时的关系中,属性类型可以是基本数据类型、结构类型(元组类型)或集体类型(即关系类型)。 (6)数据的泛化/细化:是对概念之间联系进行抽象的一种方法。当在较低层上的抽象表达了 与之联系的较高层上抽象的特殊情况时,就称较高层上抽象是较低层上抽象的"泛化",而较低层上抽象是较高层上抽象的"细化"。 (7)对象关系模型:在传统关系数据基础上,提供元组、数组、集合等更为丰富的数据类型及处理新数据类型操作的能力而形成的数据模型。(注:传统关系模型只支持字符、数值、字串,布尔值等等基本数据类型及其处理功能) (8)类型级继承性:当继承性发生在类型级时,子类型继承了超类型的属性。也就是说,超类型所具有的属性,在子类上也具有。 (9)表级继承性:继承性也可发生在表级,(就是元组集合上发生继承),子表继承超表全部属性,超表中每个元组最多可以与子表中一个元组对应,而子表中的每个元组在超表中恰有一个元组对应,并在继承的属性值上具有相同的值。 (10)引用类型:数据类型可以嵌套定义,在嵌套引用时,不是引用对象本身,而是个用对象标识符(即指针),这种指针被称为引用类型。 (11)对象:客观世界中的实体经过抽象称为问题空间中的对象,它是对一组信息及其操作的描述。 (12)类:是具有相同的变量名和类型、相同的消息和使用方法的对象的集合。 (13)单重继承性:一个子类继承某一个超类的结构和特性,称为单重继承性。 (14)多重继承性:一个子类继承多个超类的结构和特性,称为多重继承性。 (15)对象标识:在面向对象语言中,对象标识是一个指针一级的概念,在对象创建的瞬间,由系统赋给每个对象一个“标识”,即系统内的一个唯一的指针,在对象生存期内,这个标识不可改变。 (16)对象包含:不同类的对象之间存在的包含关系称为对象包含。包含是一种“一部分”(is part of)的联系。 (17)类继承层次图:表示类继承关系的图,由超类名、子类名和一组线条自上而下有序的表示。(18)类包含层次图:表示对象包含关系的图,由一些具有包含关系的对象和线条自上而下表示(下方的对象为其连线所指上方对象的一部分)。 (19)持久数据:是指创建这些数据的程序运行终止后数据依然存在于系统之中。数据库中的关系就是持久数据。 (20)持久对象:程序运行结束后,被保留下来的对象称为持久对象。 (21)持久指针:持久指针可看作是数据库中指向对象的指针。持久化指针不像内存中的指针,它在程序执行后及数据重组后仍保持有效。 (22)持久化C++系统: 基于C++的持久化扩充的OODBS。

数据库系统原理与设计(第二版)实验一至实验三

实验一 1-1.查询员工的姓名、职务和薪水 select employeeName,headShip,salary from employee 图1-1 2.查询名字中含有“有限”的客户姓名和所在地 select CustomerName,address from Customer where CustomerName like '%有限%'

3. 查询出姓“张”并且姓名的最后一个字为“梅”的员工。 select * from employee where employeeName like '张%梅' 图1-3 4. 查询住址中含有上海或南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示 SELECT employeeName,department,address, isnull (convert(char(10),birthday,120),'不详')出生日期, case sex when 'M'then '男' when 'F'then'女' end as 性别 from employee where (address like '%上海%'or address like '%南昌%')and sex='F'

5. 查询出职务为“职员”或职务为“科长”的女员工的信息 select * from employee where (headship='职员' or headship='科长') and sex='F' 图1-5 6. 选取编号不在“C20050001”和“C20050004”的客户编号、客户名称、客户地址。 Select * from Customer where CustomerNo not in ( 'C20050001' ,'C20050004')

试验设计与统计分析

广东药学院自编教材试验设计与统计分析 卫生统计学教研室 2014.8

第一章绪论 在医药卫生、食品等专业研究领域,常需要开展大量的试验来确定或验证研究者在科研过程中提出的科学假设,例如临床上研究某种新的降糖药的疗效时,研究者需要将研究对象(如糖尿病患者)随机地分组,使其中一组患者服用研究中的该降糖药,另一组患者服用传统的降糖药,进而比较两组药物的疗效。但在具体的试验实施之前,研究者需要面对很多问题,如试验中试验对象应如何选择和分组?如何在试验过程中避免服用不同试验药物对试验对象心理产生影响,继而影响到最终疗效的判断?选择什么样的指标可更好的反映药物疗效?样本量需要多少?试验数据应如何收集以及运用何种统计方法进行分析等等问题。因为研究过程中研究结果会受到诸多因素影响,如研究对象的年龄、性别和病情可能影响药物疗效,如果不采取科学的方法使这些因素在比较组间分布均衡,就不能得到令人信服的结论。因此为使科学研究在消耗最少人力和物力的情况下,最大限度地减少误差,获得科学可靠的结论,需要在研究开始之前对整个试验过程做出精心安排,制定详细具体的试验实施方案,即进行试验设计(experimental design)。一个科学合理的试验设计,可以达到事半功倍的效果,是试验获得成功的关键。 一、试验设计的基本要素 医学试验包括三个基本要素:即处理因素、试验对象和试验效应。如研究某降糖新药的疗效,处理因素为降糖新药及比较的传统降糖药;研究者需用糖尿病患者作为试验对象;试验效应是能反映药物疗效的指标,如患者空腹血糖或餐后血糖的下降。处理因素作用于试验对象后产生试验效应(图1),三个要素缺一不可,因此试验设计时要先明确三个基本要素,再制定详细的研究计划。 1. 处理因素 处理因素(treatment)是指研究者根据研究目的施加于试验对象,以考察其试验效应的因素。如临床上研究降糖药的疗效,降糖药即为处理因素。在试验过程中处理因素的状态称为水平(level),如比较降糖新药和传统降糖药的疗效,

数据库系统原理(2018年版)课后习题参考答案解析

答案仅供参考 第一章数据库系统概述 选择题 B、B、A 简答题 1.请简述数据,数据库,数据库管理系统,数据库系统的概念。 P27 数据是描述事物的记录符号,是指用物理符号记录下来的,可以鉴别的信息。 数据库即存储数据的仓库,严格意义上是指长期存储在计算机中的有组织的、可共享的数据集合。 数据库管理系统是专门用于建立和管理数据库的一套软件,介于应用程序和操作系统之间。数据库系统是指在计算机中引入数据库技术之后的系统,包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员和用户。 2.请简述早数据库管理技术中,与人工管理、文件系统相比,数据库系统的优点。 数据共享性高 数据冗余小 易于保证数据一致性 数据独立性高 可以实施统一管理与控制 减少了应用程序开发与维护的工作量 3.请简述数据库系统的三级模式和两层映像的含义。 P31 答: 数据库的三级模式是指数据库系统是由模式、外模式和内模式三级工程的,对应了数据的三级抽象。 两层映像是指三级模式之间的映像关系,即外模式/模式映像和模式/内模式映像。 4.请简述关系模型与网状模型、层次模型的区别。 P35 使用二维表结构表示实体及实体间的联系 建立在严格的数学概念的基础上 概念单一,统一用关系表示实体和实体之间的联系,数据结构简单清晰,用户易懂易用 存取路径对用户透明,具有更高的数据独立性、更好的安全保密性。

第二章关系数据库 选择题 C、C、D 简答题 1.请简述关系数据库的基本特征。P48 答:关系数据库的基本特征是使用关系数据模型组织数据。 2.请简述什么是参照完整性约束。 P55 答:参照完整性约束是指:若属性或属性组F是基本关系R的外码,与基本关系S的主码K 相对应,则对于R中每个元组在F上的取值只允许有两种可能,要么是空值,要么与S中某个元组的主码值对应。 3.请简述关系规范化过程。 答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。 第三章数据库设计 选择题 B、C、C 简答题 1. 请简述数据库设计的基本步骤。 P66 需求分析设计;概念结构设计;逻辑结构设计;物理结构设计;数据库设计;数据库的运行和维护。 2. 请分别举例说明实体之间联系的三种表现情形。 P74 一对一联系:对于实体集A中的每个实体,实体集B中最多只有一个实体与之联系,反之亦然。举例:班级与班长,每个班只有一个班长,每个班长也只在一个班内任职。 一对多联系:对于实体集A中的每个实体,实体集B中有N个实体与之联系,反之,对于实体集B中的每个实体,实体集A中最多只有一个实体与之联系。举例:班级与班级成员,每个班级对应多个班级成员,每个班级成员只对应一个班级。 多对多联系:对于实体集A中的每个实体,实体集B中有N个实体与之联系,反之,对于实体集B中的每个实体,实体集A中有M个实体与之联系。举例:授课班级与任课教师,每个

《数据库系统原理及应用》习题集及参考答案要点

《数据库系统原理及应用》习题集及参考答案 一、简答题 1、什么是数据库管理系统? 一种负责数据库的建立、操作、管理和维护的软件系统。 2、数据库系统有哪几种模式?分别用来描述什么? (1)外模式 是用户的数据视图,用来描述数据的局部逻辑结构,是模式的子集。 (2)模式 是所有用户的公共数据视图,用来描述数据库中全体数据的全局逻辑结构和特征。(3)内模式 又称存储模式,描述数据的物理结构及存储方式 3、什么是事务?事务有哪些特征? 答:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 事务的特征:原子性、一致性、隔离性、持续性。 4、POWER BUILDER中事务对象有何作用? 答:PowerBuider的事务对象是应用程序与数据库之间进行通信的桥梁,在应用程序初启时,系统自动创一个为SQLCA(SQL Communication Area, SQL通讯区)的全局事务对象,该对象在应用程序的任何地方都可以访问 应用程序与数据库的所有通信都需要通过事务对象来完成,除了直接使用系统的缺省事务对SQLCA外,开发人员也可以创建自己的事务对象。 5、SQL SERVER中INSERTED表和DELETED表有何用? 答:触发器中用到两种特殊的表:删除表和插入表触发器中使用名为“deleted"和“inserted"来参照这些表;删除表存储受DELTE和UPDATE语句影响的行的副本当执行DELETE或UPDA TE语句时,行从触发器表中删除并传递到删除表中。删除表和触发器表通常没有共有的行。 插入表存储受INSERT和UPDA TE语句影响的行的副本当执行一NSERT或UPDA T语句时,新行同时增加到插入表和触发器表中。插入表中的行是触发器表中新行的副本可使用删除表和插入表中的行来参照相关表中的行, 或测试被删除或插入行中的值。 6、数据库系统由哪几部分构成? 答:数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。 7、什么是候选码?什么是主码?主码只能有一个属性吗? 答:能唯一标识实体的属性或属性组称为超码,其任意真子集都不能成为超码的最小超码称为候选码;

福建工程学院《实验指导书(数据库系统原理及应用)》

数据库系统原理 实验指导书 (本科)

目录 实验一数据定义语言 (1) 实验二SQL Sever中的单表查询 (3) 实验三SQL Serve中的连接查询 (4) 实验四SQL Serve的数据更新、视图 (5) 实验五数据控制(完整性与安全性) (7) 实验六语法元素与流程控制 (9) 实验七存储过程与用户自定义函数 (11) 实验八触发器 (12)

实验一数据定义语言 一、实验目的 1.熟悉SQL Server2000/2005查询分析器。 2.掌握SQL语言的DDL语言,在SQL Server2000/2005环境下采用Transact-SQL实现表 的定义、删除与修改,掌握索引的建立与删除方法。 3.掌握SQL Server2000/2005实现完整性的六种约束。 二、实验内容 1.启动SQL Server2000/2005查询分析器,并连接服务器。 2.创建数据库: (请先在D盘下创建DB文件夹) 1)在SQL Server2000中建立一个StuDB数据库: 有一个数据文件:逻辑名为StuData,文件名为“d:\db\S tuDat.mdf”,文件初始大小为5MB,文件的最大大小不受限制,文件的增长率为2MB; 有一个日志文件,逻辑名为StuLog,文件名为“d:\db\StuLog.ldf”,文件初始大小为5MB,文件的最大大小为10MB,文件的增长率为10% 2)刷新管理器查看是否创建成功,右击StuDB查看它的属性。 3.设置StuDB为当前数据库。 4.在StuDB数据库中作如下操作: 设有如下关系表S:S(CLASS,SNO, NAME, SEX, AGE), 其中:CLASS为班号,char(5) ;SNO为座号,char(2);NAME为姓名,char(10),设姓名的取值唯一;SEX为性别,char(2) ;AGE为年龄,int,表中主码为班号+座号。 写出实现下列功能的SQL语句。 (1)创建表S; (2)刷新管理器查看表是否创建成功; (3)右击表S插入3个记录:95031班25号李明,男性,21岁; 95101班10号王丽,女性,20岁; 95031班座号为30,名为郑和的学生记录; (4)将年龄的数据类型改为smallint; (5)向S表添加“入学时间(comedate)”列,其数据类型为日期型(datetime); (6)对表S,按年龄降序建索引(索引名为inxage); (7)删除S表的inxage索引; (8)删除S表; 5.在StuDB数据库中, (1)按照《数据库系统概论》(第四版)P82页的学生-课程数据库创建STUDENT、COURSE 和SC三张表,每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。 并输入相关数据。 (2)将StuDB数据库分离,在D盘下创建DB文件夹下找到StuDB数据库的两个文件,进行备份,后面的实验要用到这个数据库。 6.(课外)按照《数据库系统概论》(第四版)P74页习题5的SPJ数据库。创建SPJ数据 库,并在其中创建S、P、J和SPJ四张表。每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。要作好备份以便后面的实验使用该数据库数据。 三、实验要求:

数据库系统原理与设计第版课后习题详细答案

数据库系统原理与设计习题集 第一章绪论 一、选择题 1. DBS是采用了数据库技术的计算机系统,DBS是一个集合体,包含数据库、计算机硬件、软件和()。 A. 系统分析员 B. 程序员 C. 数据库管理员 D. 操作员 2. 数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是()。 A. DBS包括DB和DBMS B. DBMS包括DB和DBS C. DB包括DBS和DBMS D. DBS就是DB,也就是DBMS 3. 下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是()。 I.人工管理阶段 II.文件系统阶段 III.数据库阶段 A. I 和II B. 只有II C. II 和III D. 只有I

4. 下列四项中,不属于数据库系统特点的是()。 A. 数据共享 B. 数据完整性 C. 数据冗余度高 D. 数据独立性高 5. 数据库系统的数据独立性体现在()。 A.不会因为数据的变化而影响到应用程序 B.不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序 C.不会因为存储策略的变化而影响存储结构 D.不会因为某些存储结构的变化而影响其他的存储结构 6. 描述数据库全体数据的全局逻辑结构和特性的是()。 A. 模式 B. 内模式 C. 外模式 D. 用户模式 7. 要保证数据库的数据独立性,需要修改的是()。 A. 模式与外模式 B. 模式与内模式 C. 三层之间的两种映射 D. 三层模式 8. 要保证数据库的逻辑数据独立性,需要修改的是()。 A. 模式与外模式的映射 B. 模式与内模式之间的映射 C. 模式 D. 三层模式

数据库系统原理(含答案)

数据库系统原理自测题(2) 一、单项选择题 1.数据库物理存储方式的描述称为【B】A.外模式B.内模式 C.概念模式D.逻辑模式 2.在下面给出的内容中,不属于DBA职责的是【A】A.定义概念模式B.修改模式结构 C.编写应用程序D.编写完整行规则 3.用户涉及的逻辑结构用描述【C】A.模式B.存储模式 C.概念模型D.逻辑模式 4.数据库在磁盘上的基本组织形式是【B】A.DB B.文件 C.二维表 D.系统目录 5.在DBS中,最接近于物理存储设备一级的结构,称为【D】A.外模式B.概念模式C.用户模式D.内模式 6.从模块结构考察,DBMS由两大部分组成:【B】A.查询处理器和文件管理器B.查询处理器和存储管理器 C.数据库编译器和存储管理器D.数据库编译器和缓冲区管理器 7.设W=R?S,且W、R、S的属性个数分别为w、r和s,那么三者之间应满 足【A】 A.w≤r+s B.w<r+s C.w≥r+s D.w>r+s 8.数据库系统的体系结构是数据库系统的总体框架,一般来说数据库系统应具有三级模式体系结构,它们是【A】A.外模式、逻辑模式和内模式B.内模式、用户模式和外模式 C.内模式、子模式和概念模式D.子模式、模式和概念模式 9.ER图是表示概念模型的有效工具之一,在ER图中的菱形框表示【A】A.联系B.实体 C.实体的属性D.联系的属性 10.数据库管理系统中数据操纵语言DML所事项的操作一般包括【A】A.查询、插入、修改、删除B.排序、授权、删除 C.建立、插入、修改、排序D.建立、授权、修改 11.设有关系R(A,B,C)和关系S(B,C,D),那么与R?S等价的关系代数表达式是【C】

(完整word版)数据库系统原理及应用教程第四版课后答案

第一章 1、(1)数据:数据用于载荷信息的物理符号。 (2)数据的特征;○1数据有“型”和“值”之分;○2数据受数据类型和取值范围的约束;○3数据有定性表示和定量之分;○4数据应具有载体和多种表现形式。 3、(1)数据管理的功能:○1组织和保存数据功能,即将收集到的数据合理地分类组织,将其存储在物理载体上,使数据能够长期的被保存;○2数据维护功能,即根据需要随时进行插入新数据,修改原数据和删除失效数据的操作;○3数据查询和数据统计功能,即快速的得到需要的正确数据,满足各种使用要求;○4数据的安全和完整性控制功能,即能保护数据的安全和完整性。 (2)数据管理的目标:收集完整的信息,将信息用数据表示,按数据结构合理科学的组织并保存数据;为各种使用快速地提供需要的数据,并保护数据的安全和完整性。 4、(1)数据库:是数据管理的新方法和技术,他是一个按数据结构来存储和管理数据的计算机软件系统。 (2)数据库中的数据具有的特点:○1数据库中的数据具有整体性,即数据库中的数据要保持自身完整的数据结构;○2数据库中的数据具有数据共享性,不同的用户可以按各自的用法使用数据库中的数据,多个用户可以同时共享数据库中的数据资源。 5、(1)数据库管理系统:它是专门用于管理数据库的计算机管理软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行操作的功能。 (2)数据库管理系统主要功能:是数据存储、数据操作和数据控制功能。其数据存储和数据操作是:数据库的定义功能,指未说明库中的数据情况而进行的建立数据库结构的操作;数据库建立功能,指大批数据录入到数据库的操作,它使得库中含有需要保护的数据记录;数据库维护功能,指对数据的插入、删除和修改操纵,其操作做能满足库中信息变化或更新的需求;数据库查询和统计功能,指通过对数据库的访问,为实际应用提供需要的数据。数据库管理系统的数据控制功能为:数据安全性控制功能,即为了保证数据库的数据安全可靠,防止不合法的使用造成数据库泄露和破坏,也就是避免数据被人偷看、篡改或破坏;数据库完整性控制功能,指为了保证数据库中的数据的正确、有效和相容,防止不合语意的错误数据被输入或输出。 14、(1)数据库系统的软件由几部分组成?数据库系统的软件中包括操作系统(OS)、数据库管理系统(DBMS)、主语言系统、应用程序软件和用户数据库。 (2)作用:①操作系统或汉字操作系统:操作系统是所有计算机软件的基础,在数据库系统中它起着支持DBMS及主语言系统工作的作用。如果管理的信息中有汉字,则需要中文操作系统的支持,以提供汉字的输入、输出方法和汉字信息的处理方法。②数据库管理系统和主语言系统:数据库管理系统是为定义、建立、维护、使用及控制数据库而提供的有关数据管理的系统软件。主语言系统是为应用程序提供的诸如程序控制、数据输入输出、功能函数、图形处理、计算方法等数据处理功能的系统软件。③应用开发工具软件:应用开发工具是DBMS系统为应用开发人员和最终用户提供的高效率、多功能的应用生成器、第四代计算机语言等各种软件工具.如报表生成器、表单生成器、查询和视图设计器等,它们为数据库系统的开发和使用提供了良好的环境和帮助。④应用系统及数据库:数据库应用系统包括为特定的应用环境建立的数据库、开发的各类应用程序及编写的文档资料,它们是一个有机整体。通过运行数据库应用系统,可以实现对数据库中数据的维护、查询、管理和处理操作。(3)关系:

《数据库系统原理》实验报告

《数据库系统原理》实验 实验1 表和表数据的操作 一、实验目的 掌握在SQL Server 2000环境下,利用SQL语言创建和管理表的方法。 二、实验要求 1、学会利用SQL语句建立自定义数据类型; 2、掌握使用SQL语句建立数据表的方法; 3、掌握数据表的修改及删除方法(界面方式及语句方式); 4、掌握T-SQL中的INSERT、UPDATE及DELETE语句的使用方法; 三、实验内容 1、创建数据库 利用“查询分析器”创建“stuscore”数据库。 CREATE DATABASE stuscore 2、创建数据表 (1)用“查询分析器”建立stuscore数据库中的学生表(Student)、班级表(Class)、课程表(Course)及成绩表(Grade),结构如下: create table student (sno char(8) primary key, sname varchar(10), sex char(2), clsno char(6), stuaddr varchar(20), birthday char(20), height DEC(4,2), foreign key(clsno) references class(clsno) );

create table class (clsno char(6) primary key, clsname varchar(16), dorector varchar(10), specialty varchar(30) ); create table course (cno char(4) primary key, cname varchar(16), pcno char(4), credit tinyint ); create table grade (sno char(8), cno char(4), scorce int, primary key(sno,cno) );

数据库系统原理试题答案3

全国2008年10月自学考试 一、单项选择题(本大题共15小题,每小题2分,共30分) 1.数据库是长期存储在计算机内、有组织的、统一管理的相关( B ) A.文件的集合 B.数据的集合 C.命令的集合 D.程序的集合 2.在数据库的三级模式中,描述数据库中全部数据的整体逻辑结构的是( C ) A.外模式 B.内模式 C.逻辑模式 D.存储模式 3.数据库系统中存放三级结构定义的DB称为( B )A.DBS B.DD C.DDL D.DBMS 4.教师实体中有教师号、姓名、部门、任教时间、教龄等属性,其中教龄是一个( A ) A.派生属性 B.多值属性 C.复合属性 D.NULL属性 5.对关系的描述不正确的是( C ) A.关系是一个集合 B.关系是一张二维表 C.关系可以嵌套定义 D.关系中的元组次序可交换 6.若属性X函数依赖于属性Y时,则属性X与属性Y之间具有( B ) A.一对一联系 B.一对多联系 C.多对一联系 D.多对多联系 7.设F是关系模式R的FD集,如果对F中每个非平凡的FD X—Y,都有X是R的超键,则( C ) A.R属于2NF,但不一定属于3NF B.R属于3NF,但不一定属于BCNF C.R属于BCNF,但不一定属于4NF D.R属于4NF 8.关系Rl和R2如下表所示: A.1 B.3 C.6 D.9 9.设四元关系R(A,B,C,D),则下面不正确的是( ) A. )R(B D, ∏ 为取属性D,B的两列组成新关系B. )R( 4,2 ∏ 为取属性的值是4,2的两列组成新关系 C. )R(B D, ∏ 与 )R( 4,2 ∏ 是等价的D. )R(B D, ∏ 与 )R( 2,4 ∏ 是相同关系 10.下列叙述正确的是( ) A.在ORDER BY子句后只能有一个属性 B.ORDER BY子句所产生的输出只是逻辑排序效果,并没有影响表的实际内容 C.进行有序输出时,如果列中有空值则在升序输出时首先列出空值项,而在降序时最后列出空值项 D.ORDER BY子句中必须指明是升序或降序,不能缺省 12.现要查找缺少成绩(G)的学生学号(S#)和课程号(C#),下面SQL语句中WHERE子句的条件表达式应是:SELECT S#,C# FROM SC WHERE( )A.G=0 B.G<=0 C.G=NULL D.G IS NULL 12.数据库恢复的主要依据是( D )A.DBA B.DD C.文档 D.事务日志 13.不能激活触发器执行的事件是( )A.SELECT B.UPDA TE C.INSFRT D.DELETE 14.SQL Server 2000的主要工具中,执行T-SQL的最佳轻量级工具是( A ) A.查询分析器 B.服务管理器 C.企业管理器 D.事件探查器 15.在ODBC体系结构中,为应用程序加载、调用和卸载DB驱动程序的是( B ) A.ODBC数据库应用程序 B.驱动程序管理器 C.DB驱动程序 D.数据源 二、填空题(本大题共10小题,每小题1分,共10分) 请在每小题的空格上填上正确答案。错填、不填均无分。 16.能惟一标识实体的属性或属性集称为___ 实体标识符_____。 17.数据独立性使得修改数据结构时,尽可能不修改外部应用程序________。 18.数据库的物理结构主要指数据库的存储记录格式、存储记录安排和__存取方法______。 19.由于数据的冗余,在对数据操作时常会引起__修改异常______、插入异常、删除异常。 20.关系代数运算中,专门的关系操作有:选择、投影、除和_连接_______。 21.SQL语言的条件表达式中字符串匹配操作符是__like______。 22.DBS运行的最小逻辑工作单位是____数据项____。 23.SQL的基本表约束主要有三种形式:候选键定义、外键定义、__域______定义。 24.在复合数据类型中,相同类型元素的有序集合,并且允许有重复的元素,称为__列表类型______。 25.SQL Server 2000引擎对外使用Net-Library抽象层来支持不同的__网络协议______。 1

(完整版)数据库系统原理与设计(万常选版)整本书练习题和详细答案详解

数据库系统概论习题集 第一章绪论 一、选择题 1. DBS是采用了数据库技术的计算机系统,DBS是一个集合体,包含数据库、计算机硬件、软件和()。 A. 系统分析员 B. 程序员 C. 数据库管理员 D. 操作员 2. 数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS )之间的关系是()。 A. DBS 包括DB 和DBMS B. DBMS 包括DB 和DBS C. DB包括DBS和DBMS D. DBS 就是DB ,也就是DBMS 3. 下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是()。 I ?人工管理阶段 II ?文件系统阶段 III ?数据库阶段 A. I 和II B. 只有II C. II 和III D. 只有I 4. 下列四项中,不属于数据库系统特点的是()。 A. 数据共享 B. 数据完整性 C. 数据冗余度高 D. 数据独立性高 5. 数据库系统的数据独立性体现在()。 A. 不会因为数据的变化而影响到应用程序 B. 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序 C. 不会因为存储策略的变化而影响存储结构 D. 不会因为某些存储结构的变化而影响其他的存储结构 6. 描述数据库全体数据的全局逻辑结构和特性的是()。 A. 模式 B. 内模式 C. 外模式 D. 用户模式 7. 要保证数据库的数据独立性,需要修改的是()。 A. 模式与外模式 B. 模式与内模式 C. 三层之间的两种映射 D. 三层模式 8. 要保证数据库的逻辑数据独立性,需要修改的是()。 A. 模式与外模式的映射 B. 模式与内模式之间的映射 C. 模式 D. 三层模式 9. 用户或应用程序看到的那部分局部逻辑结构和特征的描述是(),它是模式的逻辑子集。 A. 模式 B. 物理模式 C. 子模式 D. 内模式 10. 下述()不是DBA 数据库管理员的职责。 A.完整性约束说明 B.定义数据库模式 C.数据库安全 D.数据库管理系统设计 选择题答案: (1) C (2) A (3) D (4) C (5) B (6) A (7) C (8) A (9) C (10) D 二、简答题 1 ?试述数据、数据库、数据库系统、数据库管理系统的概念。 数据:描述事物的符号记录称为数据。数据的种类有文字、图形、图象、声音、正文等等。数据与其语义是不可分的。 *解析:

相关文档
最新文档