|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在Windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。假如你对SQL利用的履历不是充足丰厚,假如你在SQL中办理的成绩不敷多,请仔细看完本章,它可让你制止一个极可能常常会犯的毛病!
我们先创立一个测试表
createtable#table1
(
idintidentity(1,1)primarykey,
col1intnotnull,
col2decimal(18,1)
)
然后拔出数据
insertinto#table1(col1,col2)
select0,0.1
unionall
select1,1.1
unionall
select2,2.2
unionall
select3,3.3
我们来猜猜上面Select语句的了局
select*from#table1wherecol1
心细的伴侣大概要说了,下面这个SQL一定报错啊,col1是int范例,怎样能和这个varchar范例的值来对照了。可是伴侣你错了,下面的SQL是可以查出了局集的,查询了局以下:
idcol1col2
211.1
322.2
433.3
这是怎样回事呢?我们只需做一个测试就晓得了,请实行上面语句:
selectconvert(int,)
查询了局以下:
无列名
0
呵呵,伴侣们晓得了吧,在SQL中是可以隐式转换为int型的,转化后的值为0,以是我们下面的select语句实在就即是
select*from#table1wherecol10
心细的伴侣大概又在想了,既然能够隐式转换为int范例,那末一定也能够转换为decimal范例,呵呵,如许想的伴侣又错了。
select*from#table1wherecol2
下面SQL实行会报以下毛病:
从数据范例varchar转换为numeric时堕落。
也就是说,是不克不及够隐式转换为decimal范例的。
总结:
1,在SQL查询中,对int列举行与值对照时,会隐式转化为0,
即select*from#table1wherecol1
同等于select*from#table1wherecol10
2,将与decimal列对照,会报错范例转换毛病。
注重:
以上一切代码小编均在SQLSERVER2005中测试,别的版本未测试过.出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。 |
|