MySQL代码运行返回异常的情况

暂时还不知道原因,做个笔记,找到原因之后在每个问题后补充原因

1.不明白为什么第一种情况的代码没有返回而第二个有

select cop.student.*, cop.sc.* from cop.student, cop.sc where student.sno=sc.sno;
	/*查询每个学生及其选修课程的情况*/   
	/*等值连接'='*/ 
select student.sno, sname, sex, sage, sdept, cno, grade from cop.student, cop.sc; #where student.sno=sc.sno;
	/*查询每个学生及其选修课程的情况*/ 
	 /*等值连接——自然连接*/

原因:更新student表的sno的时候没有更新sc表的sno
2. 没有返回

select first.cno, second.cpno from cop.course first, cop.course second where first.cpno=second.cno;
	/*查询每一门课的间接先修课*/

原因:course表的cpno列和teacher列的数据写反了
3.只返回了没有选修的课程的学生的情况

select student.sno, sname, sex, sage, sdept, cno, grade from cop.student LEFT OUTer join cop.sc on (student.sno=sc.sno);
	/*查询每个学生及其选修课程的情况并且把没有选修的也列出来*/
	/*外连接*/

原因:更新student表的sno的时候没有更新sc表的sno
4.没有返回

select student.sno, sname, cname, grade from cop.student, cop.sc, cop.course where student.sno=sc.sno and sc.cno=course.cno;
	/*查询每个学生的学号、姓名、选修的课程名及成绩*/
select sname /*外层查询/父查询*/ from cop.student where sno in (select sno /*内层查询/子查询*/  from cop.sc where cno='2');
	/*子查询的限制:不能使用order by子句*/
select sname from cop.student, cop.sc where student.sno=sc.sno and sc.cno='2';

原因:更新student表的sno的时候没有更新sc表的sno
5.Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

update cop.sc set grade=0 where 'CS'=(select sdept from cop.student where student.sno=sc.sno);
	/*将计算机科学系全体学生的成绩置零*/

百度看到有人说:
where后跟的条件不是主键id,就会出现这种错误
解决方式有两种:
1、SET SQL_SAFE_UPDATES = 0;执行该命令更改mysql数据库模式。
2、在where判断条件中跟上主键id 例如:delete from firstmysqldatabase.user where UserName=‘zhangsan’ and ID>=0;
运行这两种解决方式的代码之后再运行代码块的代码之后都发现sc表的grade列数据都被清零了。。。
不行就再百度呗,又看到一个方法,好的照做:在“workbench”左边栏点击“SQL Editor”,看到最后一行是“Safe Updates……”是打钩的,取消打钩,缺消打钩之后,点击“OK”按钮,重启workbench,然而重新运行发现又是全都清零。。。
我现在怀疑是代码本来就是让它全部清零,然而我看不出来,我辣鸡。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谙隅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值