1,mysql 表中输入中文无法识别,ERROR 1366 (HY000): Incorrect string value: 'xE5x8FxA3xE8x85x94' for column 'name' at row
两个办法解决:
1.1:
我们可以在建表的时候带上编码:DEFAULT CHARSET 'utf8'
如:
-
CREATE TABLE `students`(
-
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-
`name` VARCHAR(20) NOT NULL,
-
`nickname` VARCHAR(20) NULL,
-
`sex` CHAR(1) NULL,
-
`in_time` DATETIME NULL1.2:
可以修改表的编码
alter table 表名 convert to character set utf8;
2.mysql常见函数
2.1:avg()平均函数
例子:select avg(age) from biyadi3; ====>查找所有人的平均年龄
select avg(age) from biyadi3 where sex='man'; ====》查找所有性别为男性的人的平均年龄。
2.2:count()
例子:select count(name) from biyadi3 where sex='男';
统计性别为男的名字出现总条数
SELECT COUNT(id) FROM biyadi3;
统计id有多少条数
2.3:max()
SELECT MAX(age) FROM biyadi3;
表中最大的年龄
select max(age) from biyadi3 where sex='男';
2.4:min()
SELECT MIN(age) FROM biyadi3 WHERE sex='男'
表中最小年龄的男性。
select min(age) from biyadi3;
表中年龄最小的人
2.5:group by
2.6:having
2.7:左连接
2.8:右连接group by,即以其中一个字段的值来分组
select 的字段只能是分组的字段类别以及使l聚合函数如,max(),min(),count()的字段。
where在前,group by在后,注意group by紧跟在where最后一个限制条件后面,不能被夹在where限制条件之间。
where在前,group by在后的原因:要先用where过滤掉不进行分组的数据,然后在对剩下满足条件的数据进行分组。
having是在分好组后找出特定的分组,通常是以筛选聚合函数的结果,如sum(a) > 100等,且having必须在group by 后面,
使用了having必须使用group by,但是使用group by 不一定使用having。不允许使用双重聚合函数,所以在对分组进行筛选的时候
可以用order by 排序,然后用limit也可以找到极值。