mysql数据库另类查询in的用法详解

这里分两种情况来介绍

1、in 后面是记录集,如:

select  *  from  table  where   uname  in(select  uname  from  user);

2、in 后面是字符串,如:

select  *  from  table  where   uname  in(‘aaa’,bbb’,’ccc’,’ddd’,’eee’,ffff”);

注意:这里一定要将字符串用单引号” 标注起来;

如果是数字那么就是:

SELECT *  FROM table WHERE id IN ( 22, 21, 20, 19 )

3、in 后面是数组,用如下方法,请参考:

//$pieces是含数据的数组

for($i=0;$i<count($pieces);$i++){

$uname=$uname.”‘”.$pieces[$i].”‘,”;

}

$the_uname =”uname in(“.$uname.””)”;

select  *  from  table  where    “.$the_uname.” ;

备注:这种方法的原理其实很简单,二就是把数组编程上面“第2种情况”的形式

MySQL之Field ’email’ doesn’t have a default value问题所在,简单解决办法

MySQL在出现这个Field xxx doesn’t have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值照成的。

比如我们创建一个表:

CREATE TABLE IF NOT EXISTS `blog_user` (
`userid` smallint(5) unsigned NOT NULL auto_increment,
`username` varchar(20) NOT NULL default ”,
`passwd` char(32) NOT NULL default ”,
`email` varchar(30) NOT NULL,
PRIMARY KEY  (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我们对email字段设置了not null 但是没有设置默认值 default,所以我们在插入的时候:
INSERT INTO blog_user(username,passwd) VALUES(‘tomener’,md5(123456));

会报如下错误:
Field ’email’ doesn’t have a default value

解决办法就是设置一个默认值,比如: `email` varchar(30) NOT NULL DEFAULT ”
很简单吧,就是加一个DEFAULT ”

为什么我们会出现Field ’email’ doesn’t have a default value这样的错误呢,估计是你使用的phpmyadmin来创建的表,phpmyadmin创建表时,不能指定空的默认值,所以很不爽了,所以,不要用phpmyadmin来建表,推荐使用MySQLWorkbench

MySQL导入导出CSV文件

select * from lx_log into outfile ‘d:\\test.csv’ fields terminated by ‘,’ optionally
enclosed by ‘” ‘ escaped by ‘”‘ lines terminated by ‘\r\n’

MySQL自己提供了导入导出的工具,但有时我们需要仅仅导入导出单个表的数据,

比如导入导出CSV文件,此时可以使用MySQL自动的命令来做导入导出工作。

linux环境中配置MYSQL的默认编码

1. 找到mysql的配置文件,拷贝到etc目录下,第一步很重要

  把/usr/share/doc/mysql-server-5.1.52/my-large.cnf 复制到 /etc/my.cnf

  即用命令:cp /usr/share/doc/mysql-server-5.1.52/my-large.cnf /etc/my.cnf

2. 打开my.cnf修改编码

  在[client]下增加default-character-set=utf8

  在[mysqld]下增加default-character-set=utf8

  同时加上init_connect=’SET NAMES utf8′ (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

123457