修改mysql默认字符集的方法
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如 default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务,service mysql restart
使用 mysql> SHOW VARIABLES LIKE ‘character%’;查看,发现数据库编码均已改成utf8
(2) 还有一种修改mysql默认字符集的方法,就是使用mysql的命令
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
一般就算设置了表的mysql默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
修改表结构
添加列
/* 修改表结构:表创建好之后,对表的结构进行修改(修改字段,添加字段,删除字段...)
格式:
alter(修改) table(表) 表名...;
修改表结构:添加列,使用关键字add(添加)
格式:
alter table 表名 add 字段名 数据类型(长度) [约束];
*/
-- 给category表中添加一个字段age,类型int,添加一个非空约束
ALTER TABLE category ADD age INT NOT NULL;
修改列
/*
修改表结构:修改列的类型长度及约束,使用关键字modify(改变,修改)
格式:
alter table 表名 modify 字段名 新的数据类型(长度) [约束];
注意:
列中如果有数据,修改数据类型可能会报错varchar-->int
*/
-- 修改category表中age字段,类型修改为varchar(2),去掉非空约束
ALTER TABLE category MODIFY age VARCHAR(2);
修改列名
/*
修改表结构:修改列名(同时可以把列的数据类型和约束一起进行修改),使用关键字change(改变)
格式:
alter table 表名 change 旧列名 新列名 数据类型(长度) [约束];
*/
-- 修改category表中age字段,字段名修改descr,类型varchar(50),添加非空约束
ALTER TABLE category CHANGE age descr VARCHAR(50) NOT NULL;
删除列
/*
修改表结构:删除列,使用关键字drop
格式:
alter table 表名 drop 列名;
*/
-- 删除category表中descr字段
ALTER TABLE category DROP descr;
-- 删除外键
ALTER TABLE articles DROP FOREIGN KEY articles_ibfk_1;
修改表名
/*
修改表名
格式:
rename table 旧表名 to 新表名;
*/
-- 修改category表名为fenlei
RENAME TABLE category TO fenlei;
修改表的字符集
/*
修改表结构:修改表的字符集
格式:
alter table 表名 character set 新的字符集;
注意:
表中如果有数据,修改字符集,容易产生乱码utf8--gbk
*/
-- 把fenlei表的字符集修改为gbk
ALTER TABLE fenlei CHARACTER SET gbk;
修改外键
语法:
alter table 从表 add [constraint][外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
[外键名称]用于删除外键约束的,一般建议“_fk”结尾
alter table 从表 drop foreign key 外键名称