空值是一个比较特殊的字段。在mysql数据库中,在不同的情形下,空值往往代表不同的含义。这是mysql数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到timestamp类型的字段中,空值就不一定为空。此时为出现什么情况呢
创新互联公司是专业的永泰网站建设公司,永泰接单;提供成都网站设计、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行永泰网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
我先创建了一个表。在这个表中有两个字段:user_id(其数据类型是int)、date(其数据类型是timestamp)。现在往这个表中插入一条记录,其中往date字段中插入的是一个null空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢?其实这就是在mysql数据库中执行sql语句时经常会遇到的一个陷阱:空值不一定为空。在操作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。
在mysql数据库中,null对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的timestamp数据类型。如果往这个数据类型的列中插入null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入null的数据,则其插入的就是一个空值。
"空值"是对null值的中文叫法,两者同指一个东西。 我想是想弄清楚null(空值)与零长度字符串''(或称为空字符串)之间的区别。
参考
1、找到配置文件my.ini ,然后将其打开,可以选择用记事本打开
2
打开后,搜索mysqld关键字
找到后,在mysqld下面添加skip-grant-tables,保存退出。
PS:若提示不让保存时,可以将该文件剪切到桌面,更改保存后再复制到mySQL目录下
3
保存后重启mySQL
4
然后运行cmd
输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入。
注:这个方法是在百度上搜到的,索引是mysql错误1045。但是我按照他的做法到了这步的时候
所以我就用了另一种方法,找到Mysql下面的bin目录,并复制
然后运行cmd,输入cd+刚复制的地址然后回车
在输入百度上说的mysql -u root -p回车即可
这里就是更改密码的地方。输入你要设置的密码即可。完后再修改一下my.ini这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql服务就可以了。
但是当我们登入navicat的时候,发现不论什么输入什么密码都行,对于这个我也无法做出解释。但是我先测试连接一个后,在里面修改用户名密码后,这时密码才算真正的修改成功了。
安装之后root用户默认没有密码,通过命令设置密码。
[root@bogon desktop]# /usr/bin/mysqladmin -u root password 'passok'
然后设置root用户的远程访问权限
在mysql控制台执行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
分两种情况
第一种是当你的值为null的时:select * from tablename where 列名 is null
第二种情况值为空字符串时:select * from tablename where 列名=''