SQL练习题集:银行数据库操作与查询

4星 · 超过85%的资源 需积分: 9 3 下载量 150 浏览量 更新于2024-09-21 收藏 119KB DOC 举报
"SQL练习作业提供了创建银行数据库Bank的相关表结构和一些基础的查询示例,包括用户信息、卡号信息和交易记录等。通过这些练习,可以加深对SQL语言的理解,尤其是数据插入、选择查询以及联接操作的应用。" 在SQL练习作业中,我们首先创建了一个名为Bank的数据库,并在其中定义了三个表:UserInfo(用户信息)、CardInfo(卡号信息)和TransInfo(交易记录)。以下是对这些表结构的详细说明: 1. 用户信息表(UserInfo): - uid:用户ID,整型,自增长主键。 - uname:姓名,可变长字符串,长度20,不能为空。 - uage:年龄,整型,限定在18-80之间,不能为空。 - usex:性别,字符型,长度2,只能为"男"或"女",默认为"男",不能为空。 - uaddress:地址,可变长字符串,长度200,默认为"地址不详",可为空。 2. 卡号信息表(CardInfo): - cid:卡号,整型,自增长主键(从1开始每次增长)。 - cpwd:密码,可变长字符串,长度20,不能为空。 - cbalance:余额,货币类型,必须大于0,不能为空。 - ctime:开卡日期,日期类型,默认为当前日期,不能为空。 - uid:持卡人,整型,外键,表示用户ID,不能为空。 3. 交易记录表(TransInfo): - tid:交易流水号,整型,自增长主键。 - ttime:交易时间,日期类型,默认为当前日期,不能为空。 - ttype:交易方式,字符型,长度4,只能是"取款"或"存款",默认为"取款",不能为空。 - tcash:交易金额,货币类型,必须大于0,不能为空。 - cid:发生交易的卡号,整型,外键,表示卡号信息表中的cid,不能为空。 接下来,作业中给出了插入测试数据的示例,以及一系列基于这些数据的查询问题,涉及到了基本的SQL查询语句,如SELECT、FROM、WHERE、JOIN等,以及对特定条件的筛选和聚合操作。例如: - 查询全部人员的交易记录:需要联接UserInfo和TransInfo表,按用户信息展示所有交易记录。 - 查询住在"熔火之心"的人物名称:利用LIKE操作符匹配地址字段。 - 查询在指定日期范围内的交易记录:使用BETWEEN操作符筛选交易时间。 - 查询名字中包含特定字符的人物:使用LIKE操作符和通配符%。 - 查询年龄最大的人物详细信息:使用MAX函数结合ORDER BY和LIMIT子句。 - 统计用户总数:使用COUNT函数。 - 查找未开卡的用户:通过LEFT JOIN或NOT EXISTS找出未关联CardInfo表的用户。 - 查询账户余额:联接UserInfo和CardInfo表,根据用户名查找余额。 - 查询某人的取款次数:统计ttype为"取款"的记录数量。 - 查询余额大于指定人物的用户:使用WHERE子句比较余额并联接表。 - 查询每次交易额都大于2000的银行卡密码:筛选交易金额并联接获取密码。 - 查找开卡后最早交易的用户:通过JOIN和MIN函数找到最早的交易时间。 - 查询存款总额大于取款总额的人物姓名:计算每个用户的存款和取款总额,然后比较。 这些练习题覆盖了SQL的基础用法,对于初学者来说是非常实用的实践练习,有助于巩固和提升SQL查询技能。