3天看完sql基础,问题一大堆,越简单越复杂
无业人员最后的倔强就是稍微学点东西,之前做运营,有打算走数据分析的道路,看来看去发现excel已经过时,虽然我也用了一周复习了excel从入门到进阶,很多功能方法长时间不用就会荒废,所以……
看完才知道还有vba!这个也是我下一个目标,学习vba
就在前天终于看完了sql语法的基础内容,涉及到DQL,DML,DDL反正就是查询的语法、修改的语法和管理数据库,还有里面的类型啊约束啊函数巴拉巴拉,连笔记都没来得及做,因为开篇老师就说了很简单,sql是最简单的语法……毫不谦逊的我也就从头看到尾,连复习都没有就认为自己已经掌握了。
结果可想而知,在网上找了几个面试题操作,贴链接(https://zhuanlan.zhihu.com/p/38354000),结果就是手忙脚乱,写得磕磕绊绊,主要原因有语法不规范,不了解系统设置,语句不熟悉等
课上老师的两句话让我影响深刻:
1.sql很简单,熟能生巧的东西;
2.分享才会进步;(关于这个真的很有感触,遇到问题在网上搜索的时候才发现能参考的很少,也可能是问题太过简单所以……,但是!同时我自己发现分享的重要性,向那些曾经被我搜索并帮助我解决问题的答案和答主道歉,对不起我欠你们10086个赞!你们是最棒的!)
废话少说,贴上我的问题
系统设置
1.删改无权限?
系统设置要了解,就像excel的权限一样,系统变量、用户变量课上老师也有讲,但我当时真的没当回事,现在要回头继续了解这一块
set sql_safe_updates =0;
insert的时候会出错,再想删除发现无效?那就要查看一下你的设置了:show variables like ‘sql_safe_updates’;如果是on则表示不能修改,设置成off,即set sql_safe_updates =0;即可
增删改出错
2.insert into 表 values() 时总是报错?
看看你的values类型和你创建表格的时候设置的类型是否一致,这里我就很‘马虎的’要把varchar()类型插入到int中
模糊查询无结果
3.模糊查询不报错也没结果,这个最让人慌了,就好像你女朋友问你哪里错了一样让人心慌
select * from student where ‘姓名’ like ‘猴%’;
有没有眼尖的看出来问题?原来!!!!字段不能有’’!天呐因为上课的时候老师用的数据库都是英文书写,造成我傻傻的以为中文字段要加单引号!
group by出错
4.having/where分前后
一般分组还是比较常见的,group by后面用having,傻傻分不清一直where
多表联合查询无结果
5.多表联合查询无结果但也没有报错
还像上面说的,不报错也没有结果,但其实我们查询的内容有没有符合条件的自己还是能看出来的,没结果说明有问题,筛选条件有问题或者什么其他的
检查来检查去发现on 表a.id = 表b.id时俩id类型不一致!
所以很多问题从一开始就埋下了,设计表格的时候类型一定要注意!
其他问题
6.其剩下的就是面试题中遇到的其他问题
从面试题来看,一般联合查询、分组查询和分组函数比较多,说明用的也会比较多吧,
6.1case函数的使用;
6.2top n查询;
最后,写的很仓促很多图片语句没有放在里面,因为遇到的问题都太基础,太皮毛,所以仅作个人的一个记录。