MySQL练习题
1. 查找my.ini文件,查看与character-set相关的配置项,如果不是utf8,请将其更改为utf8。
2. 在cmd窗口中使用命令行登录数据库服务器。
3. 查看当前服务器上有哪些数据库?写出命令及查询结果。
4. 设置当前字符集为gbk。
5. 创建自己的数据库,后面所有的练习都以这个数据库为基础,命名自由(如自己的名字拼音简写)。
6. 选择自己的数据库。
7. 请问char和varchar有何区别?
8. 对于字符串数据来说,是使用单引号好还是双引号好?为什么?
表名 | goods,商品表 | |||||
列名 | 类型/长度 | 是否为空 | 默认值 | 索引 | 附加 | 备注 |
goods_id |
|
|
|
|
| 商品编号 |
goods_sn |
|
|
|
|
| 商品货号 |
goods_name |
|
|
|
|
| 商品名 |
cate |
|
|
|
|
| 类型 |
brand |
|
|
|
|
| 品牌 |
market_price |
|
|
|
|
| 市场价格 |
shop_price |
|
|
|
|
| 商城价格 |
goods_number |
|
|
|
|
| 库存量 |
goods_img |
|
|
|
|
| 商品图片 |
is_hot |
|
|
|
|
| 是否热销 |
goods_desc |
|
|
|
|
| 商品详情 |
add_time |
|
|
|
|
| 添加时间 |
补充说明 |
|
9. 创建一个商品表goods,字段已经列出,请填写完整:
10. 写出创建商品表的SQL语句。
11. 分别查看创建表语句和表结构。
12. 向goods表中插入记录,各种insert语句都使用一遍。
[注:下面的题目(13-27)都是ecshop商城中的ecs_goods表来练习,为使结果清晰,建议只选择所需的列,而不要用select * ]
13. 查询主键为30的商品。
14. 查询不属于第三个栏目的所有商品。[说明:栏目是指cat_id列,下同]
15. 查询本店价格高于3000的商品。
16. 查询本店商品价格低于或等于100元的商品。
17. 取出第4个栏目或第11个栏目的商品(两种方式)。
18. 取出本店价格大于100小于500的商品(两种方式)。
19. 取出名字以“诺基亚”开头的商品。
20. 取出名字为“诺基亚Nxx”(比如诺基亚N96)的商品。
21. 取出不在第3个栏目和不在第11个栏目的商品。
22. 取出名字不以“诺基亚”开头的商品。
23. 取出价格大于100且小于300,或者大于4000且小于5000的商品。
24. 取出第3个栏目下面价格在1000到3000之间,并且点击量大于5,以“诺基亚”开头的系列商品。
25. 取出第3个栏目下面价格小于1000或价格大于3000,并且点击量大于5的系列商品。
26. 将商城价格低于100元的商品的商城价格和市场价格上调50元。
27. 删除所有的充值卡,即cat_id为13、14和15的列。
[注:下面的练习(28-35)都以自己的商品表,即goods表进行操作,]
28. 将表名goods更改为my_goods。
29. 将cat列和brand列,分表更名为cat_id和brand_id,并且其类型更改为smallint。
30. 将goods_weight的列类型更改为decimal(10,2)。
31. 在goods_weight前面增加click_count列(表示点击量),类型为int。
32. 在is_hot列后面,增加is_best(是否精品),is_new(是否新品),类型为tinyint。
33. 删除add_time列。
34. 删除主键(注意不是删除goods_id列,而是删除主键,这一列仍然保留)。
35. 增加主键,主键仍为goods_id列。
36. mark和jack各自创建了一张表,用来存储创下纪录的的鱼的信息。Mark的表中列有鱼的俗名、学名、捕获地点以及重量。Jack的表 也有鱼的俗名,重量,还包括了捕获者的姓名,捕获日期,而且他的地点也被分成两列,分别纪录捕获鱼的水域和州名。你认为哪个表设计的更好?
37. 实体之间的关系有几种?
38. 在MySQL中,使用外键要注意些什么?
39. 规范化表有哪些好处?常见的规范有哪几种?
40. 第一范式(1NF)的条件是什么?
41. 什么情况下才会出现部分依赖和传递依赖?
42. 你认为在设计表的时候,应该达到几范式?
43. 数据库设计题
学生
ID 姓名 | 分数 Q Q T Q Q T 9/3 9/6 9/9 9/16 9/23 10/1 | ||||||
1 | 范统 | 14 | 10 | 73 | 14 | 15 | 67 |
2 | 沈京兵 | 17 | 10 | 68 | 17 | 14 | 73 |
3 | 史珍香 | 15 | 10 | 78 | 12 | 17 | 82 |
4 | 赖月京 | 14 | 13 | 85 | 13 | 19 | 79 |
这是一张纸质记分簿里的某一页,学生的姓名和ID号列在表格的左侧,考试(T)或测验(Q)的举行日期则列在表格的顶部。表格显示,9月的3、6、16、23日进行了测验,9月9日和10月1日进行了考试。
请设计出满足3NF的数据库来纪录这些信息。为避免混淆,可专门创建一个数据库,命名为school。
[注:下面的题目(44-49)针对我们自己的商城数据库而言]
44. 完成类别表category的设计。
45. 完成品牌表brand的设计。
46. 完成属性表attribute的设计。
47. 完成商品属性对应表goods_attr的设计。
48. 完成订单表order的设计。(可以扩展完成相关表的设计)
49. 完成订单商品对应表的设计。
[注:下面的题目(50-67)都是ecshop商城中的ecs_goods表来练习]
50. 查出最贵商品的商品信息。
51. 查出最大(最新)的商品的编号。
52. 查出最便宜商品的价格。
53. 取出最小(最旧)的商品编号。
54. 查出本店所有商品的库存量(注:goods_number表示库存量)。
55. 查出本店所有商品的平均价格。
56. 查出本店共有多少种商品。
57. 查出本店商品价格和市场价格的差价。
58. 查出每个商品所积压的货款。(注:货款 = 本店价格 * 库存量,下同)
59. 查询本店积压的总货款。
60. 查询出每个栏目下积压的总货款。
61. 查询比市场价省200元以上的商品及该商品所省的钱 (分别用where和having实现)。
62. 查询积压货款超过2W的栏目,以及该栏目积压的货款。
63. 按价格由高到低排序。
64. 按栏目由低到高排序,栏目内部按价格由高到低排序。
65. 取出价格最高的前三名商品。
66. 取出点击量前3到前5名的商品。
67. 查出每个栏目下的最贵的商品。(^_^,有难度哦)
68. 设有成绩表如下所示,试查询两门及两门以上不及格同学的平均分。
编号 | 姓名 | 科目 | 分数 |
1 | 张三 | 数学 | 90 |
2 | 张三 | 语文 | 50 |
3 | 张三 | 地理 | 40 |
4 | 李四 | 语文 | 55 |
5 | 李四 | 政治 | 45 |
6 | 王五 | 政治 | 30 |
[注:下面的题目(69-76)都是ecshop商城中的ecs_goods表来练习]
69. 取出第3个栏目下的商品的商品ID,商品名,栏目名,价格。
70. 取出第4个栏目下的商品的商品ID,商品名,品牌名,价格。
71. 取出所有商品的商品ID,商品名,栏目名,品牌名,价格。
72. 统计每个类别下商品的种类,结果要显示类别名和种类数。
73. 查询出最新一行商品。(多种方法)
74. 查出每个栏目下的最贵的商品。(多种方法,^_^,有难度哦)
75. 查出有商品的栏目的栏目信息。(多种方式)
76. 查出每个栏目的父栏目,一并显示出来。
77. 此题以43题的数据库为基础,在school数据库中,我们有一张student数据表用来记录学生、一张grade_event表来记录已经发生的考试或测验事件,还有一个score数据表来列出每位学生的每次考试或测验成绩。如果某个学生在某次测验或测试的当天生病了,score表就不会有该名学生在那次事件中的成绩。因故误考的学生需要参加补考,请你找出这些误考学生的详细信息,包括姓名、日期和事件(Q或者T)。注,若没有数据,可以用school.sql文件。(^_^,有难度哦)
78. 为了记录足球比赛的结果,设计表如下,
team:参赛队伍表
字段名称 | 类型 | 描述 |
teamID | int | 主键 |
teamname | varchar(20) | 队伍名称 |
match:赛程表
字段名称 | 类型 | 描述 |
matchID | int | 主键 |
hostTeamID | int | 主队的ID |
gusetTeamID | int | 客队的ID |
marchResult | varchar(20) | 比赛结果 |
matchTime | date | 比赛日期 |
其中,match赛程表中的hostTeamID与guestTeamID 都和team表中的teamID关联,查出2006-6-1到2006-7-1之间举行的所有比赛,并且用以下形式列出:
拜仁 2:0 不莱梅 2006-6-21
其他题目补充:
有如下两张表,
a表
id num
a 5
b 10
c 15
d 10
b表
id num
b 5
c 15
d 20
e 99
希望得到如下结果:
a 5
b 15
c 30
d 30
e 99
在SNS网站中,一个用户可以关注另一个用户,也可以被另一个用户关注,也可以互相关注,即常说的,我关注的,关注我的,好友。
请问,选择要设计一个用户表,如何实现上述功能。
在这个表中,选择要实现查询我关注的,以及我的好友,如何实现这个功能?