1) 假定有一个用户表,表中包含字段: userid (int) 、 username (varchar) 、 password(varchar) 、等, 该表需要设置主键,以下说法正确的是()。(选择两项)
a) 如果不能有同时重复的 username 和 password ,那么 username 和 password 可以组合在一起作为主键。
b) 此表设计主键时,根据选择主键的最小性原则,最好采用 userid 作为主键。
c) 此表设计主键时,根据选择主键的最小性原则,最好采用 username 和 password 作为组合键。
d) 如果采用 userid 作为主键,那么在 userid 列输入的数值,允许为空。
2)Microsoft SQL Server 2000 在安装的时候就创建的示例用户数据库包括()。(选择两项)
a)Pubs
b)Master
c)Northwind
d)Msdb
3) 以下()语句从表 TABLE_NAME 中提取前 10 条记录。(选择一项)
a)select * from TABLE_NAME where rowcount=10
b)select TOP 10 * from TABLE_NAME
c)select TOP of 10 * from TABLE_NAME
d)select * from TABLE_NAME where rowcount<=10
4) 从“产品”表里查询出价格高于产品名称为“一次性纸杯”的产品的记录,此 SQL 语句为()。(选择一项)
a)SELECT * FROM 产品 WHERE 价格 > ‘一次性纸杯’
b)SELECT * FROM 产品 WHERE 价格 >(SELECT * FROM 产品 WHERE 产品名称 > ’ 一次性纸杯’
c)SELECT * FROM 产品 WHERE EXISTS 产品名称 = ’ 一次性纸杯’
d)SELECT * FROM 产品 WHERE 价格 >(SELECT 价格 FROM 产品 WHERE 产品名称 = ’ 一次性纸杯’
5) 查找 student 表中所有电话号码 ( 列名: telephone) 的第一位为 8 或 6 ,第三位为 0 的电话号码()。(选择一项)
a)SELECT telephone FROM student WHERE telephone LIKE '[8,6]%0*'
b)SELECT telephone FROM student WHERE telephone LIKE '(8,6)*0%'
c)SELECT telephone FROM student WHERE telephone LIKE '[8,6]_0%'
d)SELECT telephone FROM student WHERE telephone LIKE '[8,6]_0*'
6) 现有表 book ,字段: id (int) , title (varchar), price (float); 其中 id 字段设为标识, 使用 insert 语句向 book 表中插入数据,以下语句错误的是()。(选择一项)
a)insert into book (id,title,price) values(1,'java',100)
b)insert into book (title,price) values('java',100)
c)insert into book values ('java',100)
d)insert book values('java',100)
7) 现有表 Employee ,字段: id (int) , firstname(varchar), lastname(varchar); 以下 sql 语句错误的是()。(选择一项)
a)select firstname+'.'+lastname as 'name' from employee )
b)select firstname+'.'+lastname='name' from employee
c)select 'name'=firstname+'.'+lastname from employee
d)select firstname,lastname from employee
8) 在 sql server 2000 中,关于数据库说法错误的是()。(选择一项)
a) 数据库在磁盘上默认的存储位置是: SQL Server 安装路径 /Microsoft SQL Server/MSSQL/Data
b) 一个数据库至少应包含一个数据库文件( *.mdf )和一个事务日志文件( *.ldf )
c) 只有当数据库中不存在数据的情况下,才可以进行数据库的收缩操作。
d) 可以通过从 A 机器拷贝数据库文件和事务日志文件至 B 机器,然后通过在 B 机器上执行相应的附加数据库操作,实现数据库从 A 机器到 B 机器的复制。
9) 若要删除 book 表中所有数据,以下语句错误的 是 ()。(选择两项)
a)truncate table book
b)delete * from book
c)drop table book
d)delete from book
10) 学生成绩表 grade 中有字段 score ( float ) , 现在要把所有在 55 分至 60 之间的分数提高 5 分,以下 sql 语句正确的是()。(选择两项)
a)Update grade set score=score+5
b)Update grade set score=score+5 where score>=55 or score <=60
c)Update grade set score=score+5 where score between 55 and 60
d)Update grade set score=score+5 where score >=55 and score <=60
11) 现有书目表 book ,包含字段: price (float); 现在查询一条书价最高的书目的详细信息,以下语句正确的是()。(选择 两项)
a)select top 1 * from book order by price asc
b)select top 1 * from book order by price desc
c)select top 1 * from book where price= (select max (price)from book)
d)select top 1 * from book where price= max(price)
12) 现有书目表 book ,包含字段:价格 price (float) ,类别 type(char); 现在查询各个类别的 平均价格、类别名称,以下语句正确的是()。(选择一项)
a)select avg(price),type from book group by type
b)select count(price),type from book group by price
c)select avg(price),type from book group by price
d)select count (price),type from book group by type
13) 查询 student 表中的所有非空 email 信息 , 以下语句正确的是()。(选择一项)
a)Select email from student where email !=null
b)Select email from student where email not is null
c)Select email from student where email <> null
d)Select email from student where email is not null
14) 成绩表 grade 中字段 score 代表分数,以下()语句返回成绩表中的最低分。(选择两项)
a)select max(score) from grade
b)select top 1 score from grade order by score asc
c)Select min(score) from grade
d)select top 1 score from grade order by score desc
15) 现有订单表 orders ,包含用户信息 userid, 产品信息 productid, 以下()语句能够返回至少被订购过两回的 productid? (选择一项)
a)select productid from orders where count(productid)>1
b)select productid from orders where max(productid)>1
c)select productid from orders where having count(productid)>1 group by productid_
d)select productid from orders group by productid having count(productid)>1
16) 关于聚合函数,以下说法错误的 是 ()。(选择一项)
a)Sum 返回表达式中所有数的总合,因此只能用于数字类型的列。
b)Avg 返回表达式中所有数的平均值,可以用于数字型和日期型的列。
c)Max 和 Min 可以用于字符型的列。
d)Count 可以用于字符型的列。
17) 使用以下()可以进行模糊查询。(选择一项)
a)OR
b)Not between
c)Not IN
d)Like
18) 关于多表联接查询,以下()描述是错误的。(选择一项)
a) 外联接查询返回的结果集行数可能大于所有符合联接条件的结果集行数。
b) 多表联接查询必须使用到 JOIN 关键字
c) 内联接查询返回的结果是:所有符合联接条件的数据。
d) 在 where 子句中指 定联接条件可以实现内联接查询。
19)Sql 语句: select * from students where SNO like ‘ 010[^0]%[A,B,C]% ’ , 可能会查询出的 SNO 是()。(选择两项)
a)01053090A #Hm3?
b)01003090A01
c)01053090D09
d)0101A01
20) 关于 Truncate table, 以下()描述是错误的。(选择两项)
a)Truncate table 可跟 Where 从句,根据条件进行删除。
b)Truncate table 用来删除表中所有数据。
c) 触发器对 Truncate table 无效。
d)delete 比 Truncate table 速度快。
21) 创建一个名为‘ Customers ’的新表,同时要求新表中包含表‘ clients ’的所有记录, sql 语 句是()。(选择一项)
a)Select * into customers from clients
b)Select into customers from clients
c)Insert into customers select * from clients
d)Insert customers select * from clients
22) 关于主键,以下()说法是错误的。(选择两项)
a) 主键可以用来确保表中不存在重复的数据行。
b) 一个表必须有一个主键。
c) 一个表只能有一个主键。
d) 只能对整数型列设置主键。
23) 假设订单表 orders 用来存储订单信息, cid 代表客户编号, money 代表单次订购额,现要查询每个客户的订购次数和每个客户的订购总金额,下面() sql 语 句可以返回正确结果。(选择一项)
a)select cid,count(distinct(cid)),sum(money) from orders group by cid
b)select cid,count(distinct(cid)),sum(money) from orders order by cid
c)select cid,count(cid),sum(money) from orders order by cid
d)select cid,count(cid),sum(money) from orders group by cid
24) 现有客户表 customers (主键:客户编号 cid ),包含 10 行数据,订单表 orders (外键:客户编号 cid ),包含 6 条数据。执行 sql 语句: select * from customers right outer join orders on customers.cid=orders.cid 。最多返回()条记录。(选择一项)
a)10
b)6
c)4
d)0
25) 以下描述不正确的是
a) 存储过程能够实现较快的执行速度。
b) 内嵌表值型函数相当于一个带参数的视图。
c) 不指定所有者时 , 调用标量函数会出错。
d) 可以通过视图更改任意基表
26 )你是一个医院数据库的开发者。你正在设计一个 SQL SERVER 2000 数据库医生,这个数据库包含医生和病人的信息。 这个数据库将包含一个名为 Physicians 和一个名为 Patients 的表。医生治疗多个病人。病人通常有一个主治医生和一个 辅助医生。主治医生被鉴定作为主治医生。病人的表包含不多于百万行。你想在当从表中查询数据时增加 I/O 性能,数据库应该被标准化以达到第三 范式。
你应该使用哪种脚本来创建表?
A.CREATE TABLE Physicians
(
Physicians ID int NOT NULL CONSTRAINT PK_Physicians PRIMARY KEY CLUSTERED,
LastName varchar(25) NOT NULL,
)
GO
CREATE TABLE Patients
(
PatientID bigint NOT NULL CONSTRAINT PK_Patients PRIMARY KEY CLUSTERED,
LastName varchar (25) NOT NULL,
FirstName varchar (25) NOT NULL,
PrimaryPhysician int NOT NULL,
SecondaryPhysician int NOT NULL,
CONSTRAINT PK_Patients_Physicians1 FOREIGN KEY (PrimaryPhysician) REFERENCES
Physicians (PhysicianID),
CONSTRAINT PK_Patients_Physicians2 FOREIGN KEY (SecondaryPhysician) REFERENCES
Physicians (PhysicianID)
)
B.CREATE TABLE Patients
(
PatientID smallint NOT NULL CONSTRAINT PK_Patients PRIMARY KEY CLUSTERED,
LastName varchar(25) NOT NULL,
FirstName varchar (25) NOT NULL,
PrimaryPhysician int NOT NULL,
SecondaryPhysician int NOT NULL,
)
GO
CREATE TABLE Physicians
(
PhysicianID smallint NOT NULL CONSTRAINT PK_Physicians PRIMARY KEY CLUSTERED,
LastName varchar (25) NOT NULL,
FirstName varchar (25) NOT NULL,
CONSTRAINT PK_Physicians_Patients FOREIGN KEY (PhysicianID) REFERENCES Patients
(PatientID)
)
C.CREATE TABLE Patients
(
PatientID bigint NOT NULL CONSTRAINT PK_Patients PRIMARY KEY CLUSTERED,
LastName varchar (25) NOT NULL,
FirstName varchar (25) NOT NULL,
)
GO
CREATE TABLE Physicians
(
PhysicianID int NOT NULL CONSTRAINT PK_Physician PRIMARY KEY CLUSTERED,
LastName varchar (25) NOT NULL,
FirstName varchar (25) NOT NULL,
)
GO
CREATE TABLE PatientPhysician
(
PatientPhysicianID bigint NOT NULL CONSTRAINT PK_PatientsPhysicians PRIMARY KEY
CLUSTERED,
PhysicianID int NOT NULL,
PatientID bigint NOT NULL,
PrimaryPhysician bit NOT NULL,
FOREIGN KEY (PhysicianID) REFERENCES Physicians (PhysicianID),
FOREIGN KEY (PatientID) REFERENCES Patients (PatientID)
)
D.CREATE TABLE Patients
(
PatientID int NOT NULL PRIMARY KEY,
LastName varchar (25) NOT NULL,
FirstName varchar (25) NOT NULL,
)
GO
CREATE TABLE Physicians
(
PhysicianID int NOT NULL PRIMARY KEY,
LastName varchar (25) NOT NULL,
FirstName varchar (25) NOT NULL,
)
GO
CREATE TABLE PatientPhysician
(
PhysicianID int NOT NULL REFERENCES Physicians (PhysicianID),
PatientID int NOT NULL REFERENCES Patients (PatientID), PrimaryPhysician bit NOT NULL,
CONSTRAINT PK_PatientsPhysicians PRIMARY KEY (PhysicianID, PatientID)
)
27) 你是一家进口商的数据库管理员,你正在创建一个存储订单信息的数据库。订 单将会在
一个 client/server 应用系统中录入,每次一个新的订单录入时,必须分配一个唯一的
订单编号,订单编 号必须以升序分配。每天平均有 10000 个订单被录入。你创建了一个
新的名为 Orders 的表,并在这个表里添加了一个 OrderNumber 列。接下来你该做什么?
A. 设置这个列的数据类型为 uniqueidentifier
B. 设置这个列的数据类型为 int, 并为这个列设置 IDENTITY 属性
C. 设置这个列的数据类型为 int, 创建一个用户定义的方法来选择表中最大的订单编号
D. 设置这个列的数据类型为 int ,创建一个 NextKey 表,并被这个表添加一个 NextOrder
列,设置 NextOrder 列的数据类型为 int ,创建一个存 储过程来检索并更新 NextKey
中的值
28) 你是某出版公司的数据库开发人员,你创建了下面存储过程来汇报某本书从年初至今的
销售情况:
CREATE PROCEDURE get_sales_for_title
@title varchar(80), @ytd_sales int OUTPUT
AS
SELECT @ytd_sales = ytd_sales
FROM titles
WHERE title = @title
IF @@ROWCOUNT = 0
RETURN(-1)
ELSE
RETURN(0)
你正在创建一个脚本来执行这个存储过程,如果存储过程执行成功,它就会汇报某本书
从年初至今的销售情况,如果存储过程执行失败,就会报告以下信息:“No Sales Found ”,
你该如何创建这个脚本?
A. DECLARE @retval int
DECLARE @ytd int
EXEC get_sales_for_title ‘Net Etiquette ’, @ytd
IF @retval < 0
PRINT ‘No sales found ’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO
B. DECLARE @retval int
DECLARE @ytd int
EXEC get_sales_for_title ‘Net Etiquette ’, @ytd OUTPUT
IF @retval < 0
PRINT ‘No sales found ’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO
C. DECLARE @retval int
DECLARE @ytd int
EXEC get_sales_for_title ‘Net Etiquette ’,@retval OUTPUT
IF @retval < 0
PRINT ‘No sales found ’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO
D. DECLARE @retval int
DECLARE @ytd int
EXEC @retval = get_sales_for_title ‘Net Etiquette ’, @ytd OUTPUT
IF @retval < 0
PRINT ‘No sales found ’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO
29 )你是一家保险公司的数据库开发者,公司的保险单信息存储在一个SQL Server 2000
数据库中,你使用如下所示的脚本为数据库创建了一个名为Policy 的表:
CREATE TABLE Policy
(
PolicyNumber int NOT NULL DEFAULT (0),
InsuredLastName char (30) NOT NULL,
InsuredFirstName char (20) NOT NULL,
InsuredBirthDate datetime NOT NULL,
PolicyDate datetime NOT NULL,
FaceAmount money NOT NULL,
CONSTRAINT PK_Policy PRIMARY KEY (PolicyNumber)
)
当公司卖出一份新的保险单时,此单必须被分配一个唯一的保险单编号,当一个新保险
单被录入时,数据库必须分配一个新的保险单编号。你该怎么做?
A. 创建一个INSTEAD OF INSERT 触发器来产生一个新的保险单编号,此编号包括插入到