mysql必知必会第10~11章笔记
目录
第10章:创建计算字段:
字段
基本上与列的意思相同,经常互换使用.
拼接字段
可以使用Concat(字段1,字段2,...)函数来拼接字段
SELECT CONCAT(prod_id,' 的prod_name是: ',prod_name) AS jvzi
FROM products;
上面就将prod_id,"的prod_name是: ",prod_name拼接了起来,AS 是起别名的意思:如果不起别名,返回的列名将是:CONCAT(prod_id,' 的prod_name是: ',prod_name)这么长,所以起了别名jvzi,返回的列名就是:jvzi
不起别名的结果:
+------------------------------------------------+
| CONCAT(prod_id,' 的prod_name是: ',prod_name) |
+------------------------------------------------+
| ANV01 的prod_name是: .5 ton anvil |
| ANV02 的prod_name是: 1 ton anvil |
| ANV03 的prod_name是: 2 ton anvil |
| DTNTR 的prod_name是: Detonator |
| FB 的prod_name是: Bird seed |
| FC 的prod_name是: Carrots |
| FU1 的prod_name是: Fuses |
| JP1000 的prod_name是: JetPack 1000 |
| JP2000 的prod_name是: JetPack 2000 |
| OL1 的prod_name是: Oil can |
| SAFE 的prod_name是: Safe |
| SLING 的prod_name是: Sling |
| TNT1 的prod_name是: TNT (1 stick) |
| TNT2 的prod_name是: TNT (5 sticks) |
+------------------------------------------------+
起别名的结果:
+--------------------------------------+
| jvzi |
+--------------------------------------+
| ANV01 的prod_name是: .5 ton anvil |
| ANV02 的prod_name是: 1 ton anvil |
| ANV03 的prod_name是: 2 ton anvil |
| DTNTR 的prod_name是: Detonator |
| FB 的prod_name是: Bird seed |
| FC 的prod_name是: Carrots |
| FU1 的prod_name是: Fuses |
| JP1000 的prod_name是: JetPack 1000 |
| JP2000 的prod_name是: JetPack 2000 |
| OL1 的prod_name是: Oil can |
| SAFE 的prod_name是: Safe |
| SLING 的prod_name是: Sling |
| TNT1 的prod_name是: TNT (1 stick) |
| TNT2 的prod_name是: TNT (5 sticks) |
+--------------------------------------+
算术运算
mysql也支持+,-,*,/的算数运算:
SELECT prod_name,2*prod_price
FROM products;
上面返回了prod_name 和2倍的prod_price
+----------------+--------------+
| prod_name | 2*prod_price |
+----------------+--------------+
| .5 ton anvil | 11.98 |
| 1 ton anvil | 19.98 |
| 2 ton anvil | 29.98 |
| Detonator | 26.00 |
| Bird seed | 20.00 |
| Carrots | 5.00 |
| Fuses | 6.84 |
| JetPack 1000 | 70.00 |
| JetPack 2000 | 110.00 |
| Oil can | 17.98 |
| Safe | 100.00 |
| Sling | 8.98 |
| TNT (1 stick) | 5.00 |
| TNT (5 sticks) | 20.00 |
+----------------+--------------+
注意:必须是数值类型的列才能运算,可以用括号改变优先级
第11章 函数
常用的文本(字符串)处理函数
函数 | 说明 |
---|---|
Concat(string1,string2...) | 拼接字符串(也可以是字段) |
Trim(string) | 去除字符串两端的空格 |
LTrim(string) | 去除字符串左端的空格 |
RTrim(string) | 去除字符串右端的空格 |
Length(string) | 以字节形式返回字符串的长度 |
Left(string,length) | 从字符串的左边截取length个字符返回 |
Right(string,length) | 从字符串的右边截取length个字符返回 |
Substring(string,pos,len) | 从字符串的pos的位置截取len个字符返回(pos从1开始算) |
Upper(string) | 字符串转大写 |
Ucase(string) | 同Upper(string) |
Lower(string) | 字符串转小写 |
Lcase(string) | 同Lower(string) |
Charset(string) | 返回字符串的字符集 |
Instr(string,子串) | 返回子串在主串的开始位置 |
Replace(str,from_str,to_str) | 将str中的from_str子串替换为to_str |
Strcmp(str1,str2) | 比较字符串大小,str1>str2 返回>0 str1<str2 返回<0 相等返回=0 |
举个例子:
将prod_name列与prod_id拼接后转换为大写
SELECT UPPER(CONCAT(prod_name,prod_id)) AS result
FROM products;
日期处理函数
函数 | 说明 |
---|---|
AddDate(datetime,interval xxx year/month/day/hour/minute/second) | 增加日期时间,xxx是想增加的数字 |
Date_add(datetiem,interval xxx year/month/day/hour/minute/second) | 同AddDate() |
Date_sub(datetiem,interval xxx year/month/day/hour/minute/second) | 减少日期时间 |
Current_date() | 返回当前日期 |
Current_tiem() | 返回当前时间 |
Current_timestamp() | 返回当前完整时间 |
Datediff(date1,date2) | 计算date1和date2相差多少天 |
Timediff(date1,date2) | 计算date1和date2相差了多长时间(时分秒) |
Date_format(datetime,'%Y-%m-%d') | 返回一个格式化时间,%Y%m%d(年,月,日)可选部分 |
UNIX_TIMESTAMP() | 返回从1970-1-1到现在经历的秒数 |
FROM_UNIXTIME(1646915868) | 将秒数转换成时间,UNIX_TIMESTMAP()反着来 |
DayofWeek(datetime) | 返回星期几 |
Date(datetime) | 返回时间的日期部分 |
Time(datetiem) | 返回日期的时间部分 |
Now() | 返回当前日期和时间 |
Year(datetime) | 返回年份 |
Month(datetime) | 返回月份 |
Day(datetime) | 返回几号 |
Hour(datetime) | 返回小时 |
Minute(datetime) | 返回几分 |
Second(datetime) | 返回几秒 |
案例:
- 计算2022-3-29 10:10:10 到2022-4-1 10:20:10相差了多少分钟
SELECT HOUR(TIMEDIFF('2022-4-1 10:20:10','2022-3-29 10:10:10'))*60+
MINUTE(TIMEDIFF('2022-4-1 10:20:10','2022-3-29 10:10:10')) AS minutes;
输出:
+---------+
| minutes |
+---------+
| 4330 |
+---------+
- 将2022-4-1 10:20:10变成年-月格式
SELECT DATE_FORMAT('2022-4-1 10:20:10','%Y-%m');
数学相关函数
函 数 | 说 明 |
---|---|
Abs(num) | 返回一个数的绝对值 |
Cos(num) | 返回一个角度的余弦 |
Mod(num1,num2) | 返回除操作的余数 |
Pi() | 返回圆周率 |
Rand() | 返回一个随机数 |
Rand(seed) | 返回有种子的随机数 |
Sin(num) | 返回一个角度的正弦 |
Sqrt(num) | 返回一个数的平方根 |
Tan(num) | 返回一个角度的正切 |
Bin(num) | 十进制转二进制 |
Ceiling(num) | 向上取整 |
Floor(num) | 向下取整 |
Conv(num,from_base,to_base) | 进制转换,将num从from_base转到to_base; |
Format(num,decimal_places) | 保留小数位数 |
Hex(num) | 转16进制 |
Least(num1,num2,...) | 取最小值 |
案例:
返回9除以5的余数:
SELECT MOD(9,5) as result ;
输出:
+--------+
| result |
+--------+
| 4 |
+--------+
使用上都比较简单,在此不展开了.