mysql> create table t(id int,name varchar(20));
Query OK, 0 rows affected (0.09 sec)
mysql> insert into t values (1,'aa'),(1,'bb'),(2,'cc'),(2,'dd');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t;
+------+------+
| id | name |
+------+------+
| 1 | aa |
| 1 | bb |
| 2 | cc |
| 2 | dd |
+------+------+
4 rows in set (0.01 sec)
mysql> select id,GROUP_CONCAT(name) from t group by id;
+------+--------------------+
| id | GROUP_CONCAT(name) |
+------+--------------------+
| 1 | aa,bb |
| 2 | cc,dd |
+------+--------------------+
2 rows in set (0.00 sec) ......
一个主表blog博客表,
DROP TABLE IF EXISTS `blog`;
CREATE TABLE `blog` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(11) default NULL,
`content` varchar(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
另一个表comment,评论表
博客表和评论表关系是1:N
drop table comment;
create table comment(
id int primary key,
user varchar(11),
email varchar(11),
url varchar(11),
content varchar(11),
addTime date,
blog_id int,
constraint FK_blog_id foreign key (blog_id) references blog(id)
)ENGINE=InnoDB DEFAULT CHARSET=gb2312;
注意,一定要varchar(11),要不然就错了,我是根据已有表导出sql才看出来的.
这个sql语句用sql-front导出后的结果是:
DROP ......
一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码:
1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和Dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题。而ZendStudio却不会自动识别编码,它只会根据首选项的配置固定以某种编码打开文件,如果工作时候一不注意,用错误编码打开文件,做了修改之后一保存,乱码就出现了。
2、页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />(这句一定要写在<title>XXX</title>前面,否则会导致页面一片空白(仅限IE+PHP))来告诉浏览器网页采用了什么编码,目前中文网站开发中主要用的是GB2312和UTF-8两种编码。
3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆 ......
一、设置MyEclipse的字符编码,步骤如下:
1、进入Window--Preferences--General--Workspace,Text file encoding 选项中默认的Default(GBK)选项更改为Other,并将值设为utf-8;
2、进入Window--Preferences--MyEclipse--Files and Editors,将这个选项下面的:ASP and PHP、CSS、DTD、HTML、JSP、XML中的字符编码全部更改为utf-8;
3、如果有必要的话,将所有JSP页面头上都加上这行代码:<%request.setCharacterEncoding("UTF-8"); %>,防止页面传值的时候乱码;
4、如果有调用Servlet文件的时候,在Servlet文件中加上如下两行代码 :
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
二、设置mysql的字符编码
MyEclipse编码设置好后,就是如何处理将中文插入MySql的时候乱码问题了,在安装完MySql,在配置服务器时,在Please select the default character set.进行编码配置,必须要将默认的Standard Character Set更改掉,改为Best Support For Multilingualism(UTF-8),或者是选择最后一项,将值设为gb2312,推荐设为gb2312(我试过,对于mysql5.1来说,如果这里选择UTF-8还是会出现乱码问题,只有选择gb2312才行!很有 ......
一、数值(number)
名称
描述
范围(带符号)
范围(不带符号)
空间需求(字节)
TINYINT
很小的整数
-128到127
0到255
1
SMALLINT
小的整数
-32768到32767
0到65535
2
MEDIUMINT
中等大小的整数
-8388608到8388607
0到16777215
3
INT,INTEGER
普通大小的整数
-2147483648到2147483647
0到4294967295
4
BIGINT
大整数
-9223372036854775808到9223372036854775807
0到18446744073709551615
8
DOUBLE
普通大小(双精度)浮点数
-1.7976931348623157E+308到-2.2250738585072014E-308
0和2.2250738585072014E-308到 1.7976931348623157E+308
同左
8
DECIMAL
压缩的“严格”定点数(也是带小数的数字)
总位数最大为65(包括小数部分),小数部分最大位数为30
同左
变长
......
MySQL日期时间类型大致可以分成(5.0版本):
DATE:4字节 1000-01-01 ----9999-12-31
TIME:3字节 -839:59:59 -----839:59:59
YEAR:1字节 1901-----2155
DATETIME:8字节 1000-01-01 00:00:00 -------- 9999-12-31 23:59:59
TIMESTAMP:4字节 19700101080001 -------2038年某个时刻
使用小例:
1.DATE、TIME、DATETIME的简单使用
mysql>create table test(t1 date,t2 time,t3 datetime);
mysql>insert test values(now(),now(),now());
mysql> select * from test;
+------------+----------+---------------------+
| t1 | t2 | t3 |
+------------+----------+---------------------+
| 2010-05-14 | 15:55:38 | 2010-05-14 15:55:38 |
+--- ......