《SQL Server数据库实用案例教程》 实验4-单表查询 参考代码-不要先发学生_第1页
《SQL Server数据库实用案例教程》 实验4-单表查询 参考代码-不要先发学生_第2页
《SQL Server数据库实用案例教程》 实验4-单表查询 参考代码-不要先发学生_第3页
《SQL Server数据库实用案例教程》 实验4-单表查询 参考代码-不要先发学生_第4页
《SQL Server数据库实用案例教程》 实验4-单表查询 参考代码-不要先发学生_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

提示:不要把答案先发给学生,实验结束后再公布答案。要让学生先自己思考做题,老师对学生不会的题目适当提示,一题题解决困惑。实验4单表查询参考代码继续使用实验2创建的银行储蓄数据库,客户信息(customerinfo)表、账户信息(accountinfo)表、交易信息(transInfo)表三个表的表结构见表2-18〜表2-20。先用创建环境文档创建数据库和表,然后打开数据库,使用SQL语句完成如下查询操作,每个查询只涉及一张表中的数据。(1)用SQL语句查询所有客户的信息。-说明:先确定要查询的数据在哪个表中,查所有信息用*号最简单。select*fromcustomerinfo―查询结果如图1-也可以把一个个列名写出来,表名、列名都不能写错,列的顺序可以任意selectcustomerTD,customerName,phone,address,cardType,cardTDfromcustomerlnfo国结果为消息customerlDcustomerNamecardTypecardIDphoneaddress11 |你的名字身份证111111111111安徽芜湖湾让区22同学1身份证22222221111安徽合肥33同学2身份证33333331111安徽蚌埠图144张亮亮护照43434431111安徽芜湖55亮晶晶军官证56789551111NULLcustomerlDcustomerNamephoneaddresscardTypecardID11 1你的名字111111安徽芜湖湾扯区身份证min22同学1221111安徽合肥身份证22222图233同学2331111安徽蚌埠身份证3333344张亮亮431111安徽芜湖护照 4343455♦日日冗日日日日551111NULL军官证56789(2)用SQL语句查询所有“芜湖”客户的客户编号、客户姓名、电话,按照姓名排序。--说明:先aselect*from表名”查看表中列名select*fromcustomerinfo--select后面写需要查询的列名,from后面写表名,条件写在where后面--模糊查询不能用二号,需要用like与通配符配合,有两个不同的通配符。-通配符%表示该位置可以有任意多个字符,也可以没有-通配符一表示该位置必须有一个,并且只能有一个字符selectcustomerlD,customerName,phonefromcustomerinfowhereaddresslike%芜湖%,-like模糊查询包含“芜湖”的地址orderbycustomerName ---排序用orderby子句目结果鱼消息customerlDcustomerNamephone.・・・•••••・・・・•••••・・・・•••••・・・・•••••・・・・•••••・・・・■i 11 |你的名字 min2 4 张亮亮 431111(3)用SQL语句查询哪些客户没有填写地址和邮编。--说明:先"select*from表名”查看表中地址和邮编的列名select*fromcustomerinfo--判断空值用isnull,不要用=null,null大小写都可以,不可以加引号Select*fromcustomerinfowhereaddressisnull里结果心消息customerlDcustomerNamecardTypecardIDphoneaddress1 \5:亮晶晶 军官证56789551111NULL(4)用SQL语句查询姓名第二个字是“亮”的客户,显示客户名称和电话的汉字列名。--定义别名有三种方式,见例题2-64说明文字。selectcustomerName客户名称,phone电话fromcustomerinfowherecustomerNamelike1亮%,---模糊查询必须用like与通配符配合使用客户名称电话|闻结果B消息1I谏亮亮 |431111客户名称电话I I {(5)用SQL语句查询存款的货币类型(不显示重复值)。-说明:货币类型存储在账户信息(accountinfo)表--先“select*from表名”查看表中货币类型的列名是moneyTypeselect*fromcustomerinfo-以下两条语句执行效果不同,第一条语句执行效果如左图--第二条语句执行效果如右图,是希望的结果,用distinct去除了结果中的重复行selectmoneyTypefromaccountinfoselectdistinctmoneyTypefromaccountinfomoneyType:人民币人民币港币moneyType1moneyType1:港币2人民币人民币人民币(6)用SQL语句查询你的某一位好友在本银行是否有注册信息(按姓名查询)。-说明:再次练习使用where子句筛选满足条件的行-同学的名字根据自己的数据决定,如果查不到显示空表Select*fromcustomerinfowherecustomerName='同学名'旦结果鱼消息customerlDcustomerNamecardTypecardIDphoneaddress(7)用SQL语句查询账户余额在100到300之间的的账号和余额。-说明:账号和余额在账户信息(accountinfo)表中-可以先写“select*表名”查看表中列的名字,然后再写准确的列名select二fromaccountinfo-多个条件同时满足用and逻辑运算符,不能写成〈二@出011111]\4011?丫<=500selectaccountID,accountMoneyfromaccountinfowhereaccountMoney>=300andaccountMoney<=500-也可以用between.,and,查询效果一样,包括两个边界值selectaccountID,accountMoneyfromaccountinfowhereaccountMoneybetween300and500□结果」消息account!D|1003accountMoneyaccount!D|1003accountMoney400.00(8)用SQL语句查询账户余额最高的前十个账户的账号和余额。-说明:查询前n行用topn,因为表中没有10行数,我们改为查询前两行-本题需要按照余额降序排序再取前几行selecttop2accountID,accountMoneyfromaccountinfoorderbyaccountMoneydescs结果B消息accountlDaccountMoney1I1001I2590.002 3001 1000.00--查询表中所有行按照余额降序排序的结果selectaccountlD,accountMoneyfromaccountinfoorderbyaccountMoneydesc结果UJ消息accountlDaccountMoney1I1001

*2 30011I1001

*2 30013 10034 10025 10056 1004j2590.001000.00400.00200.0040.0030.00(9)用SQL语句查询目前的存款总额,也就是所有账户余额之和。-说明:账户余额在账户信息(accountinfo)表,查看列名select*fromaccountinfo--本题用到聚合函数sum()对余额求和selectsum(accountMoney)fromaccountinfo--可以给查询结果重新定义列名,查询结果如右图selectsum(accountMoney)□结果selectsum(accountMoney)□结果J消息(无列名)1I426000I••存款总额fromaccountinfo口结果3消息存款总额4260.00(10)用SQL语句查询某一天的取款总金额,具体哪一天自己指定。-说明:每天的取款信息在交易信息(transInfo)表中记录--先用“select*from表名”查看表中的数据和列名select*fromtransInfo-取款时间是日期型,需要转换为数值型再比较,用到日期函数,见附录A-4selectSUM(transMoney)取款总金额fromtransInfo-取款记录-取交易日期中的年-取交易日期中的月--取交易日期中的日wheretransType='支取'andYEAR(transDate)=-取款记录-取交易日期中的年-取交易日期中的月--取交易日期中的日1国结果g消息取款总金额i2bobI(11)用SQL语句查询每个月的存款总金额,并按存款总金额降序排序。-说明:先用“select*from表名”查看表中的数据和列名select*fromtransInfo-查询每个月的存款总金额用到groupby分组子句,对每一组聚合统计-用到日期转字符串类型函数DATENAME0,连接字符串用+加号selectDATENAME(yy,transDate)+7'+DATENAME(mm,transDate),SUM(transMoney)fromtransInfowheretransType='存入'groupbyDATENAME(yy,transDate)+7'+DATENAME(mm,transDate)这结果3消息(无列名)(无列名)112023/05|4280.002'5o5§/O6100.00-定义列别名selectDATENAME(yy,transDate)+7'+DATENAME(mm,transDate)年月,SUM(transMoney)总金额fromtransInfowheretransType='存入’groupbyDATENAME(yy,transDate)+7,+DATENAME(mm,transDate)口结果消息年月总金额I••••••••••••••••••••••••••••••••••••••・ 2023/05I4280.002 2023/06100.00(12)用SQL语句查询哪些客户编号有多张银

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论