数据库查询简单练习(五)

数据库建立

USE [DB2]
GO
/****** Object:  Table [dbo].[银行表]    Script Date: 08/16/2019 09:00:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[银行表](
    [银行代码] [nvarchar](255) NULL,
    [电话] [nvarchar](255) NULL,
    [银行名称] [varchar](100) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B1100', N'010-4573', N'工商银行北京分行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B111A', N'010-3489', N'工商银行北京A支行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B111B', N'', N'工商银行北京B支行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B111C', N'010-5729', N'工商银行北京C支行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B1210', N'021-5639', N'工商银行上海分行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B121A', N'021-8759', N'工商银行上海A支行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B2100', N'010-6829', N'交通银行北京分行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B211A', N'010-9045', N'交通银行北京A支行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B211B', N'', N'交通银行北京B支行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B3200', N'021-6739', N'建设银行上海分行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B321A', N'021-9035', N'建设银行上海A分行')
INSERT [dbo].[银行表] ([银行代码], [电话], [银行名称]) VALUES (N'B321B', N'021-1111', N'建设银行上海B支行')
/****** Object:  Table [dbo].[法人表]    Script Date: 08/16/2019 09:00:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[法人表](
    [法人代码] [nvarchar](50) NULL,
    [法人名称] [nvarchar](50) NULL,
    [经济性质] [nvarchar](50) NULL,
    [注册资金] [int] NULL,
    [代表人] [nvarchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E01', N'赛纳网络有限公司', N'私营', 30, N'张雨  ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E02', N'华顺达水泥股份有限公司', N'国营', 5300, N'王晓伟 ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E03', N'新意企业策划中心', N'私营', 45, N'刘爽  ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E04', N'新都美百货公司', N'国营', 2980, N'张海洋 ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E05', N'达伊园食品有限公司', N'集体', 290, N'李一蒙 ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E06', N'飘美广告有限公司', N'私营', 90, N'王逸凡 ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E07', N'浦庆石化有限公司', N'国营', 6560, N'李中信 ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E08', N'爱贝乐玩具有限公司', N'集体', 800, N'张强  ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E09', N'洛普文具有限公司', N'集体', 600, N'李倩  ')
INSERT [dbo].[法人表] ([法人代码], [法人名称], [经济性质], [注册资金], [代表人]) VALUES (N'E10', N'莱英投资咨询有限公司', N'三资', 680, N'张晓峰 ')
/****** Object:  Table [dbo].[贷款表]    Script Date: 08/16/2019 09:00:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[贷款表](
    [法人代码] [nvarchar](255) NULL,
    [银行代码] [nvarchar](255) NULL,
    [贷款日期] [datetime] NULL,
    [贷款金额] [float] NULL,
    [贷款年限] [float] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E01', N'B1100', CAST(0x00009AFE00000000 AS DateTime), 10, 15)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E01', N'B111A', CAST(0x0000962900000000 AS DateTime), 15, 20)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E01', N'B2100', CAST(0x00009BC000000000 AS DateTime), 8, 5)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E02', N'B111A', CAST(0x0000999000000000 AS DateTime), 1000, 5)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E02', N'B111B', CAST(0x00009A9B00000000 AS DateTime), 2000, 10)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E02', N'B111B', CAST(0x00009BC000000000 AS DateTime), 1500, 10)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E02', N'B211B', CAST(0x000097A500000000 AS DateTime), 1100, 5)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E02', N'B211B', CAST(0x00009AEB00000000 AS DateTime), 2000, 15)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E02', N'B3200', CAST(0x00009AB100000000 AS DateTime), 2500, 20)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E02', N'B321A', CAST(0x0000965B00000000 AS DateTime), 3000, 20)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E03', N'B3200', CAST(0x00009AB100000000 AS DateTime), 30, 5)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E03', N'B321A', CAST(0x00009BC000000000 AS DateTime), 20, 5)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E06', N'B111B', CAST(0x00009B3D00000000 AS DateTime), 320, 20)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E06', N'B211B', CAST(0x00009B7800000000 AS DateTime), 80, 10)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E07', N'B111C', CAST(0x0000999000000000 AS DateTime), 3000, 15)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E07', N'B2100', CAST(0x00009B8400000000 AS DateTime), 2000, 10)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E07', N'B211B', CAST(0x00009B3100000000 AS DateTime), 3600, 10)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E07', N'B321A', CAST(0x000095CF00000000 AS DateTime), 4000, 25)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E09', N'B111A', CAST(0x00009B8D00000000 AS DateTime), 300, 10)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E09', N'B111C', CAST(0x00009AD700000000 AS DateTime), 200, 5)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E09', N'B321A', CAST(0x0000999000000000 AS DateTime), 150, 5)
INSERT [dbo].[贷款表] ([法人代码], [银行代码], [贷款日期], [贷款金额], [贷款年限]) VALUES (N'E10', N'B111A', CAST(0x00009AD700000000 AS DateTime), 300, 10)

 

在银行贷款数据库中完成下面的习题。


1. 查询贷款金额在2000至4000万元之间的法人代码、银行代码、贷款日期和贷款金额。
2. 查询2009年1月1日以后贷款且贷款期限是10年的法人代码。
3. 查询贷款期限为5年、10年或15年的贷款信息。
4. 查询经济性质为“私营“的所有法人的最高注册资金、最低注册资金和平均注册资金。
5. 查询每种经济性质的法人的经济性质、最高注册资金、最低注册资金和平均注册资金。
6. 统计每个法人的法人代码和贷款总次数,要求查询结果按贷款总次数的升序排列。
7. 查询贷款次数超过3次的法人的平均贷款金额和贷款次数。
8. 统计每种经济性质贷款的法人的总数和其平均贷款金额,列出平均贷款金额前三名的经济性质、法人总数和平均贷款金额。
9. 查询贷款期限为5年、10年或15年的法人名称、银行名称、贷款日期、贷款金额和贷款期限。
10. 查询经济性质为“国营”的法人在“上海”的银行贷款的信息,列出法人名称、银行名称和贷款日期。
11. 查询与“B1100”银行在同一城市(假设银行名称的第5和第6个字符为城市名称)的其他的银行的名称。
12. 查询哪些银行没有贷过款,列出银行号和银行名称。分别用多表连接和子查询两种方式实现。
13. 查询贷过款的所有法人的名称,贷款银行名称,贷款日期,贷款金额,要求将查询结果放在一张新的永久表New_LoanT中,新表中的列名分别为:法人名称、银行名称、贷款日期和贷款金额。
14. 分别查询经济性质“国营”和“私营”的法人名称,贷款银行名称,贷款日期,贷款金额,要求将这两个查询结果合并成一个结果集,并以法人名称、银行名称、贷款日期和贷款金额作为显示列名,结果按贷款日期的升序和贷款金额的降序显示。
15. 查询经济性质为“国营”的法人在上海的银行贷款的信息,列出法人代码、银行代码和贷款日期,分别用多表连接和子查询两种方式实现。
16. 查询在“建设银行上海分行”贷过款的法人名称,分别用多表连接和子查询两种方式实现。
17. 查询在“工商银行北京A支行”贷款金额前三名(包括并列的情况)的法人的法人代码、法人名称和经济性质,分别用多表连接和子查询两种方式实现。
18. 查询在“工商银行北京B支行”贷款、且贷款金额高于此银行的平均贷款金额的法人代码、贷款日期和贷款金额。

select 法人代码,法人名称,经济性质,注册资金 from 法人表

select 银行名称,电话 from 银行表 where 银行代码='B1100'

select 法人代码,银行代码,贷款日期,贷款金额 from 贷款表 where 贷款金额 between 2000 and 4000

select 法人代码 from 贷款表 where 贷款日期>2009-01-01 and 贷款年限=10

select * from 贷款表 where 贷款年限 in(5,10,15)

select MAX(注册资金) as '最高注册资金',MIN(注册资金) as '最低注册资金', AVG(注册资金) as '平均注册资金' from 法人表 where 经济性质='私营'

select 经济性质, MAX(注册资金) as '最高注册资金',MIN(注册资金) as '最低注册资金', AVG(注册资金) as '平均注册资金' from 法人表 group by 经济性质

select 法人代码,COUNT(*) as '贷款次数' from 贷款表 group by 法人代码 order by COUNT(*) asc

select 法人代码, AVG(贷款金额) as '平均贷款金额',COUNT(*) as '贷款次数' from 贷款表 group by 法人代码 having COUNT(*)>3

select  top 3 经济性质,AVG(贷款金额) as '平均贷款金额',COUNT(*) as '贷款次数' from 贷款表 join 法人表 on 贷款表.法人代码=法人表.法人代码 group by 经济性质 order by 平均贷款金额 desc

select 法人表.法人名称,银行表.银行名称,贷款表.贷款日期,贷款表.贷款金额,贷款表.贷款年限 from 法人表,银行表,贷款表 where 贷款表.银行代码=银行表.银行代码 and 法人表.法人代码=贷款表.法人代码

select 银行名称 from 银行表 where substring(银行名称,5,2)=(select substring(银行名称,5,2) from 银行表 where 银行代码='B1100')

select 银行表.银行代码,银行名称 from 银行表 left join 贷款表 on 银行表.银行代码=贷款表.银行代码 where 贷款年限 is null

select 银行表.银行代码,银行名称 from 银行表 where 银行代码 not in(select 银行代码 from 贷款表)

create table New_LoanT( 
    select 法人表.法人名称,银行表.银行名称,贷款表.贷款日期,贷款表.贷款金额
    from 法人表,银行表,贷款表 
    where 贷款表.银行代码=银行表.银行代码 and 法人表.法人代码=贷款表.法人代码    
)

select 法人表.法人名称,银行表.银行名称,贷款表.贷款日期,贷款表.贷款金额
    from 法人表,银行表,贷款表 
    where 贷款表.银行代码=银行表.银行代码 and 法人表.法人代码=贷款表.法人代码 and 经济性质='国营'    
union
select 法人表.法人名称,银行表.银行名称,贷款表.贷款日期,贷款表.贷款金额
    from 法人表,银行表,贷款表 
    where 贷款表.银行代码=银行表.银行代码 and 法人表.法人代码=贷款表.法人代码 and 经济性质='私营'    
order by 贷款日期 asc,贷款金额 desc

select 法人表.法人代码,银行表.银行代码,贷款日期 from 法人表,贷款表,银行表 
    where 贷款表.银行代码=银行表.银行代码 
    and 法人表.法人代码=贷款表.法人代码 
    and 经济性质='国营' 
    and 银行名称 like '%上海%' 
    
select 法人代码,银行代码,贷款日期 from 贷款表 
    where 法人代码 in (select 法人代码 from 法人表 where 经济性质='国营')
    and 银行代码 in(select 银行代码 from 银行表 where 银行名称 like '%上海%')

SQL查询一 实验学时:2   实验类型:验证 实验要求:必修 一、实验目的 通过本实验使学生掌握单表查询并初步掌握多表查询的技能。 二、实验内容 使用实验一建立的银行贷款数据库表,完成以下查询。 1-10题为单表查询,11-25为多表查询查询所有法人的法人代码、法人名称、经济性质注册资金。 查询“B1100”银行的的银行名称电话查询贷款金额在2000至4000万元之间的法人代码、银行代码、贷款日期贷款金额。 查询2009年1月1日以后贷款且贷款期限是10年的法人代码。 查询贷款期限为5年、10年或15年的贷款信息。 查询经济性质为“私营“的所有法人的最高注册资金、最低注册资金平均注册资金。 查询每种经济性质的法人的经济性质、最高注册资金、最低注册资金平均注册资金。 统计每个法人的法人代码贷款总次数,要求查询结果按贷款总次数的升序排列。 查询贷款次数超过3次的法人的平均贷款金额贷款次数。  统计每种经济性质贷款的法人的总数其平均贷款金额,列出平均贷款金额前三名的经济性质、法人总数平均贷款金额。  查询贷款期限为5年、10年或15年的法人名称、银行名称、贷款日期、贷款金额贷款期限。  查询经济性质为“国营”的法人在“上海”的银行贷款的信息,列出法人名称、银行名称贷款日期。  查询与“B1100”银行在同一城市(假设银行名称的第5第6个字符为城市名称)的其他的银行的名称。  查询哪些银行没有贷过款,列出银行号银行名称。分别用多表连接查询两种方式实现。  查询贷过款的所有法人的名称,贷款银行名称,贷款日期,贷款金额,要求将查询结果放在一张新的永久表New_LoanT中,新表中的列名分别为:法人名称、银行名称、贷款日期贷款金额。  分别查询经济性质“国营”“私营”的法人名称,贷款银行名称,贷款日期,贷款金额,要求将这两个查询结果合并成一个结果集,并以法人名称、银行名称、贷款日期贷款金额作为显示列名,结果按贷款日期的升序贷款金额的降序显示。 使用实验一建立的学生数据库表,完成以下查询 查询计算机系没有选课的学生的姓名年龄。 统计‘VB’课程的考试最高分、最低分平均分。 统计‘数据库’课程的选课人数。 统计计算机系学生’vb’课程考试的最高分、最低分、平均分。  统计每个系学生’vb’课程考试的最高分、最低分、平均分,列出系名三个分数。 查询每个学生的修课总学分,并进行如下处理:如果总学分高于10分,则显示‘好学生’;如果总学分在6到10分间,则显示‘一般学生’;如果总学分低于6分,则显示‘不好学生’。 统计每个系每个学生的修课门数平均成绩,如果修课门数大于3并且平均成绩高于90的显示‘优秀’;如果修课门数大于3并且平均成绩在80~90,则显示‘较好’;对于修课门数小于等于3的并且平均成绩高于90的显示‘较好’;如果修课门数小于等于3并且平均成绩在80~90,则显示‘一般’;其他情况显示为‘应努力’。列出系名、学号、原修课门数平均成绩以及处理后的显示结果。 查询计算机系学生考试成绩最低的两个成绩所对应的学生的姓名、课程名成绩。 列出没有选课的学生的学号、姓名所在系。 三、思考题 1、创建表: 教师表(   tid 普通编码定长字符型,长度为10,主关键字   tname 普通编码定长字符型,长度为10,非 zc 普通编码定长字符型,长度为6) 设此表数据如下: tid Tname zc T1 A 教授 T2 B 副教授 T3 C 教授 编写SQL语句,使查询的结果显示为如下形式: 教师号 教师名 教授 副教授 T1 A 教授 T2 B 副教授 T3 C 教授 2、创建表: 教师表(   tid 普通编码定长字符型,长度为10,主码   tname 普通编码定长字符型,长度为10,非 zc 普通编码定长字符型,长度为6 Salary 工作,整型) 设此表数据如下: tid Tname zc Salary T1 A 教授 5000 T2 B 副教授 4000 T3 C 教授 5000 编写SQL语句,使查询的结果显示为如下形式: 教师号 教师名 教授工资 副教授工资 T1 A 5000 Null T2 B Null 4000 T3 C 5000 Null 四、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案进行整理、分析总结,提出实验结论或自己的看法。
SQL查询二 2 通过本实验使学生掌握多表查询、子查询以及基本数据操作 二、实验内容 使用实验一建立的银行贷款数据库表,完成以下查询。 1-4是多表查询查询,5-11是数据操作 查询经济性质为“国营”的法人在上海的银行贷款的信息,列出法人代码、银行代码贷款日期,分别用多表连接查询两种方式实现。 查询在“建设银行上海分行”贷过款的法人名称,分别用多表连接查询两种方式实现。 查询在“工商银行北京A支行”贷款金额前三名(包括并列的情况)的法人的法人代码、法人名称经济性质,分别用多表连接查询两种方式实现。 查询在“工商银行北京B支行”贷款、且贷款金额高于此银行的平均贷款金额的法人代码、贷款日期贷款金额。 在银行表中插入如下数据:银行代码号为:B321B,银行名称为:建设银行上海B分行,电话值。 在法人表中插入如下数据:法人代码号为:E11,法人名称为:新法人,注册资金为:2350万元,经济性质使用默认值。 删除银行编号为“B321B”的银行信息。 删除2000年之前一次贷款金额最小的贷款记录。 删除从贷款日期到当前日期天数超过10年的贷款记录。 删除法人名称为“爱贝乐玩具有限公司”且贷款金额小于10万元的贷款记录,分别用子查询多表连接两种方式实现。 将经济性质为“私营”的法人在“工商银行上海支行”贷款的所有贷款金额加5万元,分别用子查询多表连接两种方式实现。 使用实验一建立的学生数据库表,完成以下查询 12-15是多表查询查询,16-20是数据操作 查询计算机系年龄大于总平均年龄的学生的姓名年龄。 查询计算机系年龄大于计算机系平均年龄的学生的姓名年龄。 查询计算机系考试成绩小于总平均分的学生的学号、姓名。 将考试成绩最低的并且不及格学生的最低修课成绩改为60。 将数据库基础考试成绩最低的且成绩为不及格学生的数据库考试成绩改为60。 删除计算机系“计算机网络”课程的全部选课记录。 删除vb考试成绩最低的两个学生的vb考试记录。 对数据库考试成绩进行如下修改:如果成绩低于60分,则提高10%;如果成绩在60到80之间,则增加6%;如果成绩在80到95之间则提高4%,其他情况不提高。 对学分进行如下修改:如果是第1到第3学期开始的课程,则学分增加1分;如果是第4到第6学期开设的课程,学分增加2分,其他学期开始的课程学分增加3分。 以下查询必须用子查询完成: 查询男生年龄最大的学生的姓名所在系。 查询选修了‘数据库基础’的学生的姓名、所在系。s 选修了第6学期开始的课程的学生的学号、姓名所在系。 查询男生所修的课程的课程名。 查询年龄最小的学生所选的课程名。 三、实验报告 将实验结果反映在实验报告中,并对实验中遇到的问题及解决方案、进行整理、分析总结,提出实验结论或自己的看法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值