mysql查询结果增加字段
查出来的结果
| 字段1 | 字段2 |
|---|---|
| 值1 | 值2 |
我想要新加一个字段,值是固定的,但是表里没这个字段,效果如下:
| 字段1 | 字段2 | 想新增的字段 |
|---|---|---|
| 值1 | 值2 | 值固定 |
解决: 如图,新增一个固定值为100的字段c

mysql between 用法
用法
between .... and (包含边界值)
not between .... and (不包含边界值)
mysql 格式化小数
方法一: FORMAT()
会四舍五入,整数部分从右向左每3位一个逗号进行格式化输出
select format(10110101.4555,2)
输出:10,110,101.46
select format(101.4555,2)
输出:101.46
select format(101.4545,2)
输出:101.45
方法二:truncate()
直接截取,不会四舍五入
select truncate(101.4555,2)
输出:101.45
select truncate(101.4545,2)
输出:101.45
方法三:convert()
convert()函数会对小数部分进行四舍五入操作
记录一下DECIMAL(P,D):
- P是表示有效数字数的精度。 P范围为1〜65。默认值是10.
- D是表示小数点后的位数。 D的范围是0~30。MySQL要求D <= P。
- DECIMAL(P,D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。 decimal(10,2),它表示最终得到的结果整数部分位数加上小数部分位数小于等于10,小数部分位数2
- DECIMAL类型也具有UNSIGNED和ZEROFILL属性。 如果使用UNSIGNED属性,则DECIMAL UNSIGNED的列将不接受负值。
- 如果我们对DECIMAL列使用ZERO FILL,MySQL将自动将UNSIGNED属性添加到列。
select convert(101.45454,decimal(10,2));
输出:101.45
select convert(1234567890123.45454,decimal(10,2));
输出:99999999.99
解释一下:decimail(M,D)占M+2个字节。所以decimal(10,2)的最大值是 99,999,999.99 因为有10个字节可用
select convert(1234567890123.45454,decimal(15,2));
输出:1234567890123.45
方法四:round(x,d)
四舍五入,round(x,d) d可以是负数,默认为0
select ROUND(748.58, -4)
输出:0
select ROUND(748.58, -2)
输出:750
select ROUND(748.58)
输出:749
关于group by
获取group by 总记录行数
方法一:子查询
select count(*) from (select S product_type_code,count(*) from product_type group by `PRODUCT_TYPE_CODE`) u
方法二:mysql关键字
SQL_CALC_FOUND_ROWS; 所在的查询语句中,记录查询到的总条数(与limit无关);
select FOUND_ROWS(); 即返回查询语句中找到的总记录数;
select SQL_CALC_FOUND_ROWS product_type_code,count(*) from product_type group by `PRODUCT_TYPE_CODE`;
select FOUND_ROWS();
mysql空值和null的区别
- 占空间的区别
select length(NULL), length(''), length('1');
+--------------+------------+-------------+
| length(NULL) | length('') | length('1') |
+--------------+------------+-------------+
| <null> | 0 | 1 |
+--------------+------------+-------------+
可见:从上面看出空值('')的长度是0,是不占用空间的;而的NULL长度是NULL,其实它是占用空间的
NULL columns require additional space in the row to record whether their values are NULL.
NULL列需要行中的额外空间来记录它们的值是否为NULL。
- NULL值查询使用is null/is not null查询,而空值('')可以使用=或者!=、<、>等算术运算符.
- 使用 COUNT(字段) 统计会过滤掉 NULL 值,但是不会过滤掉空值。
mysql截取字符串
left(str,length)
select left("ww w.yangqianguan.com",5);
结果:ww w.
right(str,length)
select right("www.yangqianguan.com",5);
结果:n.com
substring(str,pos,length)
substring (被截取字段,从第几位开始截取,截取长度)
select substring("140729199405010062",11,4) #下标从1开始
结果:0501
select substring("140729199405010062",-4)
结果:0062
substring_index(str,delim,count)
str: 需要拆分的字符串
delim: 分隔符,通过某字符进行拆分
count: 当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符
select substring_index("www.yangqianguan.com",".",2) #截取第二个"." 之前的所有字符
结果:www.yangqianguan
插入更新
在mysql中插入数据,并且当主键相同时做更新操作,2种方法 1、replace into tablename (id,name) values(null,wang); 2、 insert into table (player_id,award_type,num) values(20001,0,1) on DUPLICATE key update num=num+values(num)