mysql之知识点与细节这些天又把mysql系统的看了一遍,温故而知新 1. char/varchar 类型区别char定长字符串,长度固定为创建表时声明的长度(0-255),长度不足时在它们的右边填充空格以达到声明长度。当检索到CHAR值时,尾部的空格被删除掉varchar变长字符串
mysql之知识点与细节
这些天又把mysql系统的看了一遍,温故而知新……
1. char/varchar 类型区别
char定长字符串,长度固定为创建表时声明的长度(0-255),长度不足时在它们的右边填充空格以达到声明长度。当检索到CHAR值时,尾部的空格被删除掉
varchar变长字符串(0-65535),VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节),varchar值保存时不进行填充。当值保存和检索时尾部的空格仍保留。 www.2cto.com
它们检索的方式不同,char速度相对快些
注意它们的长度表示为字符数,无论中文还是英文均是那么长
text搜索速度稍慢,因此如果不是特别大的内容,用char/varchar,另外text不能加默认值
2. 中mysql自带的客户端中查询的内容乱码,那是因为系统的编码为gbk,使用前发送一条"set names utf8"语句即可
3. 小数型:float(M,D),double(M,D),decimal(M,D) M代表总位数,不包括小数点,D代表小数位,如(5,2) -999.99——999.99
M是小数总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。
4. group by与聚合函数结合使用才有意义(sum,avg,max,min,count),group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面,如果没有出现,只取每类中第一行的结果
如果想查询每个栏目下面最贵的商品:id,价格,商品名,种类。用select goods_id,cat_id,goods_name,m