还剩3页未读,继续阅读
文本内容:
提示不要把答案先发给学生,实验结束后再公布答案要让学生先自己思考做题,老师对学生不会的题目适当提示,一题题解决困惑实验单表查询参考代码4继续使用实验创建的银行储蓄数据库,客户信息表、账户信息2customerinfo accountinfo表、交易信息表三个表的表结构见表表transInfo2-18〜2-20先用创建环境文档创建数据库和表,然后打开数据库,使用语句完成如下查询操作,SQL每个查询只涉及一张表中的数据用语句查询所有客户的信息1SQL-说明先确定要查询的数据在哪个表中,查所有信息用*号最简单select*from customerinfo―查询结果如图1-也可以把一个个列名写出来,表名、列名都不能写错,列的顺序可以任意select customerTD,customerName,phone,address,cardType,cardTD fromcustomerlnfo国结果为消息customerlD customerNamecardType cardID phone address1|你的名字身份证111111111111安徽芜湖湾让区1同学身份证安徽合肥22122222221111同学332身份证33333331111安徽蚌埠图144张亮亮护照43434431111安徽芜湖55亮晶晶军官证56789551111NULLcustomerlD customerNamephoneaddresscardType cardID111你的名字111111安徽芜湖湾扯区身份证min同学安徽合肥身份证22122111122222图233同学2331111安徽蚌埠身份证33333张亮亮安徽芜湖护照4443111143434日日冗日日日♦军官证55日551111NULL56789用语句查询所有“芜湖”客户的客户编号、客户姓名、电话,按照姓名排序2SQL--说明:先aselect*from表名”查看表中列名select*from customerinfo--select后面写需要查询的列名,from后面写表名,条件写在where后面--模糊查询不能用二号,需要用like与通配符配合,有两个不同的通配符-通配符%表示该位置可以有任意多个字符,也可以没有-通配符一表示该位置必须有一个,并且只能有一个字符select customerlD,customerName,phone from customerinfowhere addresslike%芜湖%,-like模糊查询包含“芜湖”的地址order bycustomerName---排序用order by子句目结果鱼消息customerlD customerNamephone.・・・•••••・・・・•••••・・・・•••••・・・・•••••・・・・•••••・・・・■i11|你的名字min张亮亮24431111用语句查询哪些客户没有填写地址和邮编3SQL--说明先select*from表名”查看表中地址和邮编的列名select*from customerinfo--判断空值用is null,不要用=null,null大小写都可以,不可以加引号Select*from customerinfowhere addressis null里结果心消息\5亮晶晶军官证customerlD customerNamecardType cardID phoneaddress156789551111NULL用语句查询姓名第二个字是“亮”的客户,显示客户名称和电话的汉字列名4SQL--定义别名有三种方式,见例题2-64说明文字select customerName客户名称,phone电话from customerinfowhere customerName like1亮%,---模糊查询必须用like与通配符配合使用客户名称电话|闻结果消息B1I谏亮亮|431111客户名称电话_____________I I{用语句查询存款的货币类型不显示重复值5SQL-说明货币类型存储在账户信息accountinfo表--先“select*from表名”查看表中货币类型的列名是moneyType select*fromcustomerinfo-以下两条语句执行效果不同,第一条语句执行效果如左图--第二条语句执行效果如右图,是希望的结果,用distinct去除了结果中的重复行selectmoneyType from accountinfoselect distinctmoneyType from accountinfomoneyType:人民币1人民币2港币3人民币4moneyType人民币:港币51人民币人民币26用语句查询你的某一位好友在本银行是否有注册信息按姓名查询6SQL-说明再次练习使用where子句筛选满足条件的行-同学的名字根据自己的数据决定,如果查不到显示空表Select*fromcustomerinfowherecustomerName=同学名旦结果鱼消息customerlD customerNamecardType cardID phoneaddress用语句查询账户余额在到之间的的账号和余额7SQL100300-说明账号和余额在账户信息accountinfo表中-可以先写“select*表名”查看表中列的名字,然后再写准确的列名select二from accountinfo-多个条件同时满足用and逻辑运算符,不能写成〈二@出011111]\4011丫=500select accountID,accountMoney from accountinfowhere accountMoney=300and accountMoney=500-也可以用between.,and,查询效果一样,包括两个边界值select accountID,accountMoney fromaccountinfowhere accountMoneybetween300and500account!D accountMoney|
1003400.00□结果」消息用语句查询账户余额最高的前十个账户的账号和余额8SQL-说明查询前n行用top n,因为表中没有10行数,我们改为查询前两行-本题需要按照余额降序排序再取前几行select top2accountID,accountMoney fromaccountinfoorder byaccountMoney descsB结果消息accountl DaccountMoney1I1001I
2590.
00230011000.00--查询表中所有行按照余额降序排序的结果select accountl D,accountMoney fromaccountinfoorder byaccountMoney descUJ结果消息j
2590.001I1001*
1000.
0023001400.
0031003200.
004100240.
005100530.00accountlDaccountMoney用语句查询目前的存款总额,也就是所有账户余额之和9SQL-说明账户余额在账户信息accountinfo表,查看列名select*fromaccountinfo--本题用到聚合函数sum对余额求和select sumaccountMoneyfrom accountinfoselectsumaccountMoney存款总额fromaccountinfo3J口结果消息□结果消息存款总额无列名
4260.001I426000I--可以给查询结果重新定义列名,查询结果如右图用语句查询某一天的取款总金额,具体哪一天自己指定10SQL-说明每天的取款信息在交易信息transInfo表中记录--先用“select*from表名”查看表中的数据和列名select*from transInfo-取款时间是日期型,需要转换为数值型再比较,用到日期函数,见附录A-4select SUMtransMoney取款总金额from transInfowhere transType=支取and-取款记录YEARtransDate=2023and-取交易日期中的年monthtransDate=6and-取交易日期中的月daytransDate=5--取交易日期中的日1取款总金额国结果g消息i2bob I用语句查询每个月的存款总金额,并按存款总金额降序排序11SQL-说明先用“select*from表名”查看表中的数据和列名select*from transInfo-查询每个月的存款总金额用到group by分组子句,对每一组聚合统计-用到日期转字符串类型函数DATENAME0,连接字符串用+加号select DATENAMEyy,transDate+7+DATENAMEmm,transDate,SUMtransMoneyfrom transInfowhere transType=存入group byDATENAMEyy,transDate+7+DATENAMEmm,transDate3这结果消息无列名无列名112023/05|
4280.00255§/O
6100.00O-定义列别名select DATENAMEyy,transDate+7+DATENAMEmm,transDate年月,SUMtransMoney总金额from transInfowheretransType=存入’group byDATENAMEyy,transDate+7,+DATENAMEmm,transDate口结果消息年月总金额・••••••••••••••••••••••••••••••••••••••2023/05I
4280.00I22023/
06100.00用语句查询哪些客户编号有多张银行卡12SQL-说明先用“select*from表名”查看表中的数据和列名select*fromaccountinfo-在账户信息accountinfo表中按照客户编号分组,用count对每组计数-再用having子句删选查询数量超过的客户select customerlD客户编号,COUNT*银行卡数量from accountinfogroupby customerlDhavingCOUNT*1国结果国消息客户编号银行卡数量122。