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) 返回几秒

案例:

  1. 计算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 |
+---------+
  1. 将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 |
+--------+

使用上都比较简单,在此不展开了.

全部评论

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务