正在回答 回答被采纳积分+1
同学你好,同学是指在8分钟左右老师讲解的知识点吗?如果是,这个要求并不一定是语法错误,但很大可能不能获取正确的数据。正是因为这样的sql能够执行,所以经常会导致我们认为“既然执行了,说明没问题”,实际上有问题的不是语法,而是数据。例如课程中老师的语句,将sal写在select中之后,可以查询到数据,如下图:
此时就会有问题,最后一列的sal是什么含义,这个数据显然和其他三列是不匹配的。但是如果仅从语法层面看,这个语句没有问题,但是从数据看,这个数据存在问题。所有就有了课程中老师讲解的规范,这个规范不是语法要求,但是是开发中要时刻注意的,容易踩到的坑。
另外,课程中老师演示时是有报错的,但是我们这里测试都没有报错。从Mysql相关资料中看,可能是因为我们现在使用的版本中,默认不是严格模式,所以没有进行报错,同学可以手动设置为严格模式尝试一下。例如先执行下面的语句:
set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES'; set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';
然后再执行sql语句,就会出现相同的报错。
综上,正是因为实际开发时,我们后端程序员没有DBA这样直接修改数据库模式的权限,所以书写sql语句的时候,即使测试时的测试数据库支持了非严格模式的sql语句,在生产环境的数据库依然可能因为是严格模式而导致程序出现问题。所以老师在课程中专门将这个问题提炼和讲解,为了同学们以后不要踩坑,同时养成良好的习惯。
祝学习愉快~
- 参与学习 2020 人
- 提交作业 1249 份
- 解答问题 1203 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星