MySQL练习题
MySQL练习1
建库建表
数据库
库名:meitao
表
area(区域表)
areaID | int not null | 区域编号(主键) |
---|---|---|
areaName | varchar(20) null | 区域名称 |
p_areaID | int null | 上级区域编号 |
shop(商店表)
shopID | int not null | 商店编号(主键) |
---|---|---|
shopName | varchar(50) not null | 商店名称 |
shopAddress | varchar(50) null | 商店地址 |
contact | varchar(50) null | 联系电话 |
customer(客户表)
customerID | int not null | 客户编号(主键) |
---|---|---|
login | varchar(20) not null | 登录名称 |
pwd | varchar(20) not null | 登录密码 |
customerName | varchar(20) not null | 客户姓名 |
tel | varchar(20) null | 客户电话 |
address | varchar(20) null | 客户地址 |
gender | varchar(20) null | 客户性别 |
birthday | date null | 客户生日 |
category(类别表)
categoryID | int not null | 类别编号(主键) |
---|---|---|
categoryName | varchar(20) not null | 类别名称 |
p_categoryID | int null | 上级类别编号 |
orders(订单表)
ordersID | int not null | 订单编号(主键) |
---|---|---|
customerID | int null | 客户编号(外键,参照客户表主键) |
ordersDate | date null | 订单日期 |
deliveryDate | date null | 交付日期 |
amount | decimal(8,2) null | 订单金额 |
product(产品表)
productID | int not null | 产品编号(主键) |
---|---|---|
areaID | int null | 区域编号(外键,参照区域表主键) |
categoryID | int null | 类别编号(外键,参照类别表主键) |
shopID | int null | 商店编号(外键,参照商店表主键) |
title | varchar(50) not null | 产品名称 |
productDesc | varchar(500) null | 产品描述 |
originalPrice | decimal(8,2) null | 原始价格 |
currentPrice | decimal(8,2) null | 当前价格 |
picture | varchar(50) null | 产品图片 |
isCommend | varchar(10) null | 是否推荐 |
salesCount | int null | 销售数量 |
ordersDetail(订单详情表)
ordersID | int not null | 订单编号(联合主键,外键,参照订单表主键) |
---|---|---|
productID | int not null | 产品编号(联合主键,外键,参照产品表主键) |
quantity | int null | 订单数量 |
操作
area(区域表)
shop(商品表)
customer(客户表)
category(类别表)
orders(订单表)
product(产品表)
ordersDetail(订单详情表)
MySQL练习2
插入数据
area(区域表)
shop(商店表)
customer(客户表)
category(类别表)
orders(订单表)
product(产品表)
ordersDetail(订单详情表)
代码
1 | -- area(区域表) |
MySQL练习3
操作数据
题目1
修改所有登录密码为888888
题目2
修改客户姓名魏国兰的密码为123456
题目3
修改火锅类商品的原始价格和当前价格,在原始价格和当前价格上加1
题目4
删除客户姓名为郝琼琼的记录
题目5
删除客户姓名为刘亚蒙的记录
代码
1 | -- 修改所有登录密码为888888 |
MySQL练习4
查询和函数
题目1
查询所有客户,如图
题目2
查询所有女客户,如图
题目3
查询所有满35岁的客户,如图
题目4
查询没有上级区域编号的区域,如图
题目5
查询当前价格最贵的3个商品,如图
题目6
查询当前价格第3便宜的商品,如图
题目7
查询所有商品,如图
代码
1 | /*查询和函数 |
MySQL综合测试题–ATM
一、语言和环境
1、实现语言:Sql语言。
2、环境要求:mysql数据库。
二、题目
某银行拟开发一套ATM系统软件对客户的账户和交易信息进行管理。该系统的后台数据库为
ATM,该数据库中拥有账户表Account和交易表TransInfo两张表。
1、创建数据库,数据库名称为ATMDB
2、创建数据表Account和TransInfo,数据表的基本信息如下:
账号表Account
字段名 | 数据类型 | 长度 | 约束 | 说明 |
---|---|---|---|---|
CardNo | int | 主键, | 卡号 | |
CustomerName | varchar | 20 | 唯一,非空 | 账户名称 |
Balance | decimal(8,2) | 非空 | 账户余额 |
交易表TransInfo
字段名 | 数据类型 | 长度 | 约束 | 说明 |
---|---|---|---|---|
TransId | int | 主键,自动增长 | 交易编号 | |
CardNo | int | 外键,非空,Account表CardNo | 卡号 | |
TransType | varchar | 20 | 非空,只能是”存入”或”支取”,默认”存入” | 交易类型 |
Amount | decimal(8,2) | 非空,默认为0 | 交易金额 | |
TransDate | datetime | 非空,默认当前日期 | 交易日期 |
3、插入测试数据
账号表Account测试数据如下:
交易表TransInfo测试数据如下
4、使用DML语句完成以下功能(必须使用SQL脚本,并保留脚本):
1) 用户朱逸群在2014-04-16号由于生活费不够,将去银行取钱(支出)800,此时在交易表中会产生一条交易信息,同时账户表中的余额将发生相应的改变。
提示:
a、先将用户朱逸群的交易信息向交易表中插入一条数据
b、修改用户朱逸群在账户表中的余额
2) 删除用户朱逸群2014年4月13日的所有交易记录
3) 查询2014年所有存入的交易记录,按存款金额降序排列
要求采用别名显示字段:卡号,交易类型,交易金额,交易时间
4) 按交易类型查询交易总金额和交易次数
要求采用别名显示字段:交易类型,总金额,交易次数
提示:使用分组查询、聚合函数
5) 查询账户表和交易表,显示交易类型为存入且按交易金额降序排的账户名、交易金额、交易类型。
提示:使用表连接、排序、别名
6) 查询账户表和交易表,显示账户名为”朱逸群”的全部交易信息且按交易金额降序排后 显示前两条数据。
要求采用别名显示字段:账户名,交易类型,交易金额,交易时间
提示:使用表连接、order by排序、limit
7) 使用别名统计交易表每个卡号对应的存入次数和最大存入金额且要求最大存入金额大于1000
提示:使用别名、where条件、group分组、having筛选
三、注意事项:
1、建库、建表、建约束,注意表中的约束设置不能遗漏。
2、DML操作(要求4)必须新建SQL脚本使用语句完成,并在每题前注释操作要求。
3、考试完毕后,保存sql脚本,放入姓名文件夹打包提交。
4、请仔细检查考生文件夹是否为空,必须提交sql脚本。
四、评分标准
该程序的评分标准如下: | ||
---|---|---|
创建数据库 | 5 | 正确创建数据库。 |
创建数据表 | 20 | 正确创建两张数据表 |
建立约束 | 20 | 正确建立表中的约束(主键、自增、默认、唯一、外键)每个4分 |
添加数据 | 10 | 正确添加初始数据 |
DML语句操作数据库 | 40 | 每题5分 |
注释 | 5 | 命名规范,有适当注释 |
总分 | 100分 |
代码
1 | -- 插入测试数据,账户表 |
MySQL综合测试题–KFC
一、语言和环境
1、实现语言:Sql语言。
2、环境要求:mysql数据库。
二、功能需求
具体要求如下:
1、创建数据库:KFC_DB
2、创建数据表和约束:
表1:T_Goods 商品表
序号 | 字段名称 | 字段说明 | 字段类型 | 字段大小 | 是否主键 | 允许空 | 备注 |
---|---|---|---|---|---|---|---|
(1) | GoodId | 商品编号 | int | 主键,自增 | |||
(2) | GoodName | 商品名称 | varchar | 50 | 唯一 | ||
(3) | GoodPrice | 商品单价 | decimal | 5,2 | 是 | ||
(4) | Rebate | 折扣 | decimal | 10,2 | 默认1 |
表2::T_Orders 订单表
序号 | 字段名称 | 字段说明 | 字段类型 | 字段大小 | 是否主键 | 允许空 | 备注 |
---|---|---|---|---|---|---|---|
(1) | OrderId | 订单编号 | int | 主键,自增 | |||
(2) | OrderDate | 下单日期 | datetime | 是 | 默认当前日期 | ||
(3) | GoodId | 商品编号 | int | 外键,参照商品表的商品编号字段 | |||
(4) | Quantity | 购买数量 | int | 是 | 大于0 |
3、向表中添加测试数据(可视化编辑或使用SQL脚本皆可):
商品表数据
商品编号 | 商品名称 | 商品价格 | 折扣 |
---|---|---|---|
1 | 五味小吃桶升级版 | 54.00 | 默认为1.00 |
2 | 培根鸡腿燕麦堡套餐 | 35.50 | 默认为1.00 |
3 | 黄金咖喱猪扒饭套餐 | 37.50 | 默认为1.00 |
4 | 香烤照烧鸡腿饭套餐 | 37.50 | 默认为1.00 |
5 | 培根蘑菇鸡柳饭套餐 | 33.50 | 默认为1.00 |
6 | 骨肉相连 | 5.50 | 默认为1.00 |
订单表数据
订单编号 | 下单日期 | 商品编号 | 订购数量 |
---|---|---|---|
1 | 2014-03-31 | 1 | 1 |
2 | 2014-03-31 | 2 | 2 |
3 | 2014-04-01 | 1 | 2 |
4 | 2014-04-01 | 3 | 3 |
5 | 2014-04-01 | 4 | 4 |
4、使用DML实现以下功能(必须使用SQL脚本,并保留脚本):
1)–添加一条商品信息:商品名称:KFC全家桶,商品价格:82.50。
2)–添加一条订单信息:日期(当前日期),商品编号(id为1),数量(2)。
3)–删除商品编号为6的商品。
4)–将所有商品的折扣修改为九八折(0.98)商品编号为3的除外。
5)–修改商品编号为3的价格更改为29.80.
6)–查询价格大于50元的商品数量.
7)–查询价格在35元到50元之间的商品信息,用别名显示名称,价格,折扣(包含35、50元)
8) –统计每个商品的订单数量,并按订单数量降序排序,显示商品名,订单数量.
提示:使用表联接、分组查询、聚合函数
9)–统计每个下单日期的销售总额,按销售总额升序排列。
提示:使用表联接、分组查询、聚合函数
商品折扣后单价:goodprice*rebate/10
订单价:goodpricerebate/10quantity
10)–统计本月的销售情况,显示商品名,售出总数量,总金额
提示:使用表联接、分组查询、聚合函数
三、注意事项:
1、建库、建表、建约束(要求1、2、3)可以使用可视化操作,注意表中的约束设置不能遗漏。
2、DML操作(要求4)必须新建SQL脚本使用语句完成,并在每题前注释操作要求。
3、考试完毕后,保存sql脚本,放入姓名文件夹打包提交。
4、请仔细检查考生文件夹是否为空,必须提交sql脚本。
四、评分标准
该程序的评分标准如下: | ||
---|---|---|
创建数据库 | 5 | 正确创建数据库。 |
创建数据表 | 20 | 正确创建两张数据表 |
建立约束 | 20 | 正确建立表中的约束(主键、自增、默认、唯一、外键)每个4分 |
添加数据 | 10 | 正确添加初始数据 |
DML语句操作数据库 | 40 | 每题4分 |
注释 | 5 | 命名规范,有适当注释 |
总分 | 100分 |
代码
1 | -- 添加一条商品信息:商品名称:KFC全家桶,商品价格:82.50 |