MYSQL部分
1.概述Group by 和Distinct去重的区别?
Group by: 分组,相同字段归为一个,可以进行计数、求和等
Distinct: 去重,得到只有唯一记录。
2.命令行执行insert into语句向表中插入数据报如下错误: ERROR 1366:Incorrect string value: '\xC3\XF7' for column 'name' at row 1
分析此类错误的原因及解决思路
插入的数据与表中设置的编码不符,修改2个编码一致。
3.MYSQL中where 和and的区别是什么?
where用于定位,查找范围
and 逻辑连接词
4.left join on and与left join on where的区别
left join on and 左联结,on条件下 and对前面的集合起作用,
where 是集合聚合之后起作用。
Mysql 基础
1、Mysql中字段char、varchar的区别
char:长度固定,char(10), 存入frog,所占长度10
varchar:长度可变, varchar(10),存入frog,所占长度为4
char的存取速度比varchar快的多,优先速度,再次空间;char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。
参考答案
在MySQL中,char、varchar类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度
它们的存储方式和数据的检索方式也都不一样。
数据的检索效率是:char> varchar
具体说明:
char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用什么trim之类的函数去过滤空格。
varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
2、请建立一张表judge_varchar_char
表名judge_varchar_char,字段分别为
varchar_info varchar(5),
char_info char(5),
int_info int(2)
要求int_info字段增加unsigned zerofill属性
create table judge_varchar_char(
varchar_info varchar(5),
char_info char(5),
int_info int(2))
alter table judge_varchar_char modify int_info int(2) unsigned zerofill;
3、题目2的表中,插入(‘200000’,‘300000’,1)的数据会出现什么情况,为什么?
insert into judge_varchar_char values('200000','300000',1);
2 warnings : 插入的数据 200000,300000 均长度超过设定长度,结果只截取前5个,如下:
+--------------+-----------+----------+
| varchar_info | char_info | int_info |
+--------------+-----------+----------+
| 20000 | 30000 | 01 |
+--------------+-----------+----------+
4、请插入带空格的数据('ab ','ab ',2)分别求varchar_info,char_info的字符长度和字节长度
insert into judge_varchar_char values('ab ','ab ',2);
select length(varchar_info),length(char_info),char_length(varchar_info),length(char_info)
from judge_varchar_char where int_info='02';

补充:
length() 字节长度, 单位是字节,utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节。
char_length():单位为字符,不管汉字还是数字或者是字母都算是一个字符
5、用题4的数据证明varchar和char的差别
varchar: 空格保留
char :删除了空格
6、创表时int(5),5代表什么?与varchar(5)的5有什么区别?
int(5):表示数据宽度,zerofill存在的条件下,不足5位前面会用0填充,超过5位实际值显示
varchar(5):表示数据存储的最大长度,超过5则取前5个
7、请一次语句中插入2条数据,(‘cd ’,'cd ',1),('cd ','cd ',123456')
insert into judge_varchar_char values('cd ','cd ',1),
('cd ','cd ',123456);
8、这两个数据有什么不同,为什么?
int(2) 可以完全显示超出长度的值

网友评论