为了账号安全,请及时绑定邮箱和手机立即绑定

导入数据时出现的3个问题:【SQL练习】经典SQL练习题

标签:
大数据

webp

数据来源:【SQL练习】sql经典练习
前言:有人戏称做完这50道练习题你的SQL就过关了!对于如此之高的评价,我也不能落后必须跟随大家的脚步。刚操作时我认为只要复制+黏贴+运行就可以开始美美的操作走向大神之路。

但现实往往不那么美好……单纯的导入数据就折腾了自己4个小时,外加‘今安在’同学1个小时。附上自己在导入数据时遇见的三个问题,改完这些bug你也可以迈向SQL大神之路。

文章采用对比方式排列:1为作者代码、2为修改或新增代码

一、指定数据库

在作者文章中第一步:准备数据—建表语句—插入数据。

我也用同样的方法把作者代码复制过来但一运行就报错,后来在翻看自己以前笔记的时候才知道我们新建表格之前需要指定数据库。

2-新增后代码:# 建表#创建数据库databsescreate database student;#切换数据库use student;

这里大家可以用已有的数据库,也可以新建一个数据库。为了方便操作建议大家新建一个数据库。

二、设置字段数据类型

作者已经给我们新建好表格并设置好字段的数据类型。可能有人和我有一样的困惑第一次看见char、varchar、numeric不知道是什么意思,建议大家有时间可以学习网易云MySQL之入门知识的6、7、8节

针对数据类型建议大家把scores表中的degree成绩数据类型修改一下。

1-作者代码:
CREATE TABLE scores 
(sno VARCHAR(3) NOT NULL, 
cno VARCHAR(5) NOT NULL, 
degree NUMERIC(10, 1) NOT NULL)
2-修改代码:create table scores(
    sno int not null,
    cno int not null,
    degree int not null);

degree数据类型numeric修改为int类型,numericdecimal意思一样。decimal是小数类数据类型,括号第一个数字表示长度,括号后一位是小数的位数。比如numeric(4,2),表示长度4位保留2位小数,如:89.68。如果在插入数据中没有小数就会出现错误。

而作者在给scores表插入数据的时候,degree的值没有小数。我在运行的时候直接报错,这里建议大家把degree的数据类型修改一下。

1-作者代码:
(这是作者在给scores表插入数据的部分代码,大家可以看见成绩的值并没有小数)INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,'3-245',86);INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,'3-245',75);INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,'3-245',68);

三、MySQL中如何输入中文

如果你和我一样在安装cmd时没有更改中文的输入配置,就会我和一样在给student表、coursers表插入数据时就会报错。

比如student

1-作者代码:INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华' ,'男' ,'1977-09-01',95033);INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,'1975-10-02',95031);INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽' ,'女' ,'1976-01-23',95033);INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军' ,'男' ,'1976-02-20',95033);INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,'1975-02-10',95031);INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君' ,'男' ,'1974-06-03',95031);
2-修改后代码:
(最重要是第一行)
ALTER TABLE Students CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;#插入数据insert into students(sno,sname,ssex,sbirthday,class) values (108, '小明','男','1997-09-01',95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,'1975-10-02',95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽' ,'女' ,'1976-01-23',95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军' ,'男' ,'1976-02-20',95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,'1975-02-10',95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君' ,'男' ,'1974-06-03',95031);

关于MySQL的中文配置问题,网上有很多解决方案,上面是我的一个解决方案,大家可以参考。

后记:解决完这些问题大家就可以像我一样做SQL练习了,如果大家在导入数据遇见新的问题欢迎大家留言探讨。

做到慢就是快真难,凯旋反复给我说练习好SQL、多做python项目练习,但我总觉得时间很紧迫想快一点快一点过完数据分析的内容。这就是常说的说话的巨人,行动的矮子吧。
在慢就是快一点上面佩服龙龙和今安在同学,他俩做的很好。

PS:第一次用Markdown排版的确很好看,要学会更新自己不断吸收接纳别人好的意见和建议。



作者:夜希辰
链接:https://www.jianshu.com/p/2a3a71579e0d


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消