您的位置:首页 > 数据库 > MySQL

MySQL系列:(4)细节

2016-06-11 05:47 489 查看
1、varchar类型
MySQL 数据库的varchar类型在4.1以下的版本中,nvarchar(存储的是Unicode数据类型的字符)不管是一个字符还是一个汉字,都存为2个字节 ,一般用作中文或者其他语言输入,这样不容易乱码 ;varchar: 汉字是2个字节,其他字符存为1个字节 ,varchar适合输入英文和数字。

4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 ;varchar(20)在Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同

2、按汉字的拼音排序

如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了)。直接在查询语句后面 添加 order by name asc; 查询结果按照姓氏的升序排序;

如果存储姓名的字段采用的是 utf8字符集,需要在排序的时候对字段进行转码;对应的代码是 order by convert(name using gbk) asc; 同样,查询的结果也是按照姓氏的升序排序。

3、创建联合主键
CREATE TABLE T_Users(
username VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL,
age INT,
PRIMARY KEY(username,address)
)


4、统计总记录

SELECT COUNT(*) FROM T_Department -- 统计总记录
SELECT COUNT(1) FROM T_Deparment -- 统计总记录,效率更高
SELECT COUNT(deptName) FROM T_DEPARTMENT -- 忽略NULL值,聚合函数统计都会忽略NULL值


统计T_Employee表中,每个部门的人数,如果记录中有多个deptId的值NULL,它们将被视为NULL进行统计
SELECT deptId, COUNT(*) AS numOfEmployee FROM t_employee GROUP BY deptId;



查询后




5、查看连接
-- 查看活跃连接
SHOW PROCESSLIST;


6、自增长
alter table table_name modify id int; -- 取消自增长
alter table table_name modify id int auto_increment; -- 添加自增长
alter table table_name AUTO_INCREMENT=n; -- 重设自增的起始值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql varchar 汉字排序