首先声明:这个是我尽力自己做的,不能保证百分之百正确,毕竟老师没发答案给我对
习题五
- 一、选择题
- 二. 填空题
- 三、默认在银行贷款数据库中编写 SQL 语句, 完成下面的查询与操作。
一、选择题
- SQL 语言是( C )语言。
A. 层次数据库 B. 网络数据库 C. 关系数据库 D. 非数据库 - 如果在 where 子句中有两个条件要同时满足,应该用哪个逻辑符来连接( C )。
A. OR B. NOT C.AND D. NONE - 用以下哪个子句来限制分组统计结果信息的显示( D)。
A. FROM B. WEHRE C. SELECT D. HAVING - SQL 语言中,删除一个表的命令是( B )。
A. DELETE B. DROP C. CLEAR D. PURGE - 只有满足联接条件的记录才包含在查询结果中, 这种联接为( C )。
A. 左联接 B. 右联接 C. 内联接 D. 完全联接 - 如果要输出姓王的学生名单,在 where 子句中最好用( C)操作符。
A. = B. IN C. LIKE D. BETWEEN - 如果希望进行分组统计的查询输出,可以使用(
A. SELECT B. GROUP BY C. HAVING - 在标准 SQL 中,建立视图的命令是( C )。
B)子句。
D. ORDER BY
A. CREATE SCHEMA 命令
C. CREATE VIEW 命令
9. 关系数据库中,主键是( A )。
A. 为标识表中唯一的实体
C. 只允许以表中第一字段建立
B. CREATE TABLE 命令
D. CREATE INDEX 命令
B. 创建唯一的索引,允许空值
D. 允许有多个主键的
- 在 Transact-SQL 语法中,用来插入和更新数据的命令是( A )。
A. INSERT ,UPDATE
B. UPDATE ,INSERT
C. DELETE ,UPDATE
D. CREATE ,INSERT INTO
二. 填空题
- SQL 语言中,修改表结构的语句是_ALTER_TABLE________ 。
- 如果要使用 SELECT 语句返回指定条数的记录, 则应使用_DISTINICT_____关键字来限定输出字段。
- 进行分组查询时, 要对分组进行选择,可以用__HAVING_____子句对分组结果进行过滤。
- 用 SELECT 进行模糊查询时, 可以使用__字符_____匹配符, 但要在条件值中使用 _______ 或____%___通配符查询;并且模糊查询只能针对字段类型是___部分已知____的查询
- SQL 语言中行注释的符号为_//_____;块注释的符号为/___/___。
- 对数据进行统计时,求最大值的函数是MAX()_______。
三、默认在银行贷款数据库中编写 SQL 语句, 完成下面的查询与操作。
- 查询所有客户的客户代码、客户名称、经济性质和注册资金。
select Cno,Cname,Cnatutn,Ccapital
From Customer; - 查询“N0101”银行的银行名称和电话。
Select Bname,Btel
From Bank
Where Bno=’N0101’; - 查询贷款金额在 500- 1000 万元的客户代码、银行代码、贷款日期和贷款金额。
select Cno,Bno,Ldate,Lamount
from Loan
where Lamount between 500 and 1000; - 查询在 2019 年 8 月 1 日后贷款, 且贷款期限是 10 年的客户代码。
select Cno
from Loan
Where Ldate>’2019-8-1’and Lterm=10; - 查询贷款期限为 5 年、 10 年或 15 年的贷款信息。
select *
from Loan
Where Lterm IN(5,10,15); - 查询经济性质为“私营”的所有客户的最高注册资金、最低注册资金和平均注册资金。
select MAX(Ccapital) 最高注册资金,MIN(Ccapital) 最低注册资金,
AVG(Ccapital) 平均注册资金
from Customer
WHERE Cnautre=’私营’; - 查询每种经济性质的客户的经济性质、最高注册资金、最低注册资金和平均注册资金。
select Ccapital,MAX(Ccapital) 最高注册资金,MIN(Ccapital) 最低注册资金,
AVG(Ccapital) 平均注册资金
from Customer
GROUD BY Cnautre - 统计每个客户的客户代码和贷款总次数,要求查询结果按贷款总次数升序排列。
SELECT Cno 客户代码,Count(Cno) 贷款总次数
FROM Loan
CROUP BY Cno
Oder By Count(Cno) ASC; - 查询贷款次数大于 3 次的客户的平均贷款金额和贷款次数。
SELECT AVG(Lamount),COUNT(Cno)
FROM Loan
GROUP BY Cno
HAVING COUNT(Cno)>3; - 统计每种经济性质贷款的客户的总数及其平均贷款金额,列出平均贷款金额最高的前三 名的经济性质、客户总数和平均贷款金额。
SELECT TOP 3 Cnautre, AVG(Lamount),COUNT(Cno)
FROM Loan
GROUP BY Cnature
ODER BY AVG(Lamount); - 查询贷款期限为 5 年、 10 年或 15 年的客户名称、银行名称、贷款日期、贷款金额和贷款 年限。
SELECT Cname,Bname,Ldate,Lterm
FROM Loan
WHERE Lterm IN(5,10,15); - 查询经济性质为“国营”的客户在“历下区”的银行的贷款情况,列出客户名称、银行 名称以及贷款期限。
SElECT Cname,Bname,Lterm
FROM Customer C JOIN Loan T ON C.Cno=T.Cno JOIN Bank B ON B.Bno=L.Bno
WHERE Cnautre=’国营’ AND Bloc=’历下区’; - 查询与“J0101”银行在同一区的其他银行的名称。
SELECT B2.Bname
FROM Bank B1 JOIN Bank B2 On B1.Bloc=B2.Bloc
WHERE B1.Bno=’J0101’AND B2.Bno!=’J0101’; - 查询哪些银行没有贷过款,列出银行代码和银行名称。分别用多表连接和子查询两种形 式实现。
SELECT B.Bno,Bname
FROM Bank B LEFTJOIN Loan L ON B.Bno=L.Bno
WHERE L.Ldate IS NULL;
SELECT Bno,Bname
FROM Bank
WHERE Bno NOT IN
(SELECT BNo FROM Loan );
- 查询贷过款的所有客户的名称、贷款银行名称、贷款日期、贷款金额,要求将查询结果 放在一张新的永久表New_Loan 中, 新表中的列名分别为客户名称、银行名称、贷款日期、 贷款金额。
SELECT Cname客户名称,Bnam 银行名称,Ldate 贷款日期,Lamount 贷款金额
INTO New_Loan
FROM Customer C JOIN Loan L ON C.Cno=L.Cno JOIN Bank B ON L.Bno=B.Bno - 查询经济性质为“国营”的客户在“历下区”的银行的贷款情况,列出客户代码、银行 代码以及贷款日期, 分别用多表连接和子查询两种形式实现。
SElECT Cno,Bno,Ldate
FROM Customer C JOIN Loan T ON C.Cno=T.Cno JOIN Bank B ON B.Bno=L.Bno
WHERE Cnautre=’国营’ AND Bloc=’历下区”;
SElECT Cno,Bno,Ldate
FROM Loan
WHERE Cno IN(SELECT Cno FROM Customer WHERE Cnautre=’国营’) AND
Bloc IN(SELECT Bloc FROM Bank WHERE Bloc=’历下区’);
- 查询在“招行舜耕支行”贷过款的客户名称、,分别用多表连接和子查询两种形式实现。
SElECT Cname
FROM Customer C JOIN Loan T ON C.Cno=T.Cno JOIN Bank B ON B.Bno=L.Bno
WHERE Bname=’ 招行舜耕支行’;
SELECT Cname
FROM Customer
WHERE Cno IN( SELECT Cno From Loan WHERE Bno IN(SELECT Bno FROM Bank WHERE Bname=’ 招行舜耕支行’)); - 查询在“工行甸柳分理处”贷款金额最高的前三名(包含并列情况) 的客户代码、客户 名称和经济性质。分别用表连接和子查询两种形式实现。
SElECT TOP 3 C.Cno,Cname,Cnautre
FROM Customer C JOIN Loan T ON C.Cno=T.Cno JOIN Bank B ON B.Bno=L.Bno
WHERE Bname=’工行甸柳分理处’
CROUP BY Cno,Cname,Cnautre
ODER BY SUM(Lamount) DESC ;
SELECT Cno,Cname,Cnautre
SELECT TOP 3 Cno,Cname,Cnautre
FROM Customer
WHERE Cno IN(SELECT Cno FROM Loan WHERE Bno IN(SELECT Bno FROM Bank WHERE Bname=’ 工行甸柳分理处’ )) - 查询在“招行舜耕支行”贷过款且贷款金额高于此银行的平均贷款金额的客户代码、贷 款日期和贷款金额。
SElECT Cno,Ldate,Lamount
FROM Loan
WHERE Bno IN(SELECT Bno FROM Bank WHERE Bname=’ 招行舜耕支行 ’)
GROUP BY Cno,Ldate,Lamount
HAVING Lamoun>AVG(Lamount); - 在银行表中插入如下数据: 银行代码为“J0103”, 银行名称为“建行高新支行”, 位于“历 下区”,电话为空。
INSERT INTO Bank(Bno,Bname,Bloc,Btel)
VAlUES(‘J0103’,’建行高新支行’,’历下区’,NULL); - 删除从贷款日期到当前日期超过 10 年的贷款记录。
DELETE FROM Bank
WHERE Ldate+getTime()>10; - 将经济性质为“国营”的客户在“农行山东省分行”的贷款的所有贷款金额增加 5 万元, 分别用多表连接和子查询两种形式实现。
17. UPDATE Loan
SET Lamount=Lamount+50000
FROM Loan T JOIN Bank B ON T.Bno=B.Bno JOIN Customer C ON C.Cno=L.Cno
WHERE (Bname=’农行山东省分行’)AND (Cnautre=’国营’);
UPDATE Loan SET Lamount=Lamount+10
WHERE Cno IN(
SELECT Cno
FROM Customer WHERE Cnautre =’ 国营’)
AND
Bno IN(
SELECT Bno
FROM Bank
WHERE Bname=’农行山东省分行’);