转载请注明原始出处:http://blog.csdn.net/a464057216/article/details/52517945
后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
MySQL中主要由三种数据类型:数字、字符串、日期。
float(size, scale)
类型规定了整个浮点数的位数及小数点后的位数,比如float(4, 2)
支持-99.99~99.99,即小数点前的位数只支持size-scale(4-2)个,小数点后的数字位数如果超过了scale个,则会自动四舍五入。
double(size, scale)
类型中size、scale的含义同float类型。
tinytext
类型存储最长为255的字符串。
text
存储最长为65535的字符串。
mediumtext
存储最长为16777215的字符串。
longtext
存储最长为4294967295的字符串。
blob
存储最大为65535字节的二进制数据。
mediumblob
存储最大为16777215字节的二进制数据。
longblob
存储最大为4294967295字节的二进制数据。
enum(a1, a2, ...)
存储(a1, a2, ...)
中的值,最多可以存放65535个值,比如:
set(a1, a2, ...)
存储(a1, a2, ...)
中的值,set中最多可以存放64个值,但是set可以存放用逗号分隔的多个值,比如:
#视图
MySQL中,视图是一种虚拟表(不能与实际数据表重名),可以定义视图后绑定到某个用户上,实现访问控制。视图并没有存储数据,而是对真实数据的引用,只有操作视图的时候才会执行视图中的SQL操作数据。
视图创建以后,就如同真实的表一样,可以操作数据(插入、更新、删除等):
考虑到数据安全,可以在创建视图是增加with check option
选项,这样如果对视图操作后的数据在视图中不再可见,则不允许该操作。比如正常的视图如果操作一条数据后在视图中不再可见是不做检查的:
如果加了with check option
选项,则不允许上面的更新操作:
drop view
命令删除视图。
now()
函数获取当前日期及时间,返回YYYY-MM-DD hh:mm:ss
格式的数据。
curdate()
函数获取当前日期,返回YYYY-MM-DD
格式的数据。
curtime()
函数获取当前时间,返回hh:mm:ss
格式的数据。
date(str)
函数返回日期或时间字符串str中的日期部分,比如:
extract(EXP from str)
函数从日期、时间字符串中返回单独的部分,比如年、月、小时、小时至分钟等,EXP可用字段如下:
EXP | 含义 |
---|---|
microsecond | 微秒 |
second | 秒 |
minute | 分钟 |
hour | 小时 |
day | 天 |
week | 周 |
month | 月 |
quarter | 季度 |
year | 年 |
second_microsecond | 秒到微秒 |
minute_microsecond | 分钟到微秒 |
hour_microsecond | 小时到微秒 |
day_microsecond | 天到微秒 |
minute_second | 分钟到秒 |
hour_second | 小时到秒 |
day_second | 天到秒 |
hour_minute | 小时到分钟 |
day_minute | 天到分钟 |
day_hour | 天到小时 |
year_month | 年到月 |
date_add(str, interval str2 type)
命令用来给字符串str表示的日期增加一段时间,str2是表示增量的字符串,type的取值见上表,比如:
date_sub(str, interval str2 type)
函数语法格式与date_add()
函数语法格式一样,从str代表的时间中减去一段时间,比如:
datediff(str1, str2)
函数返回str1和str2代表的日期的差值,比如:
date_format(str, format)
返回str代表的时间字符串格式化为format指定的格式后的结果,其中format格式化参数如下:
格式 | 描述 |
---|---|
%a | 星期的缩写,如Wed |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文后缀的月中的天数 |
%d | 月的第几天,数值(00-31) |
%e | 月的第几天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
#常用函数
MySQL中有很多用于数学计算的函数,应用语法为select function(
,这些函数主要分为两类:
##聚合性函数
对某一列生效,返回一个单独的值。
返回某一列的平均值,值为NULL的行不参与分子和分母的运算。
count(
计算某一列的行数(值为NULL的不参与计算),count(distinct
计算某一列的行数(去重,值为NULL的不参与计算),count(*)
计算表格的行数:
mysql> select * from a;
+------+-------+-----------+-----------+
| id | price | unitStock | unitOrder |
+------+-------+-----------+-----------+
| 1 | 12.34 | 2 | 4 |
| 2 | 1.23 | NULL | 4 |
| 3 | 5.12 | 1 | 3 |
+------+-------+-----------+-----------+
3 rows in set (0.00 sec)
mysql> select count(unitStock) from a;
+------------------+
| count(unitStock) |
+------------------+
| 2 |
+------------------+
1 row in set (0.01 sec)
mysql> select count(distinct unitOrder) from a;
+---------------------------+
| count(distinct unitOrder) |
+---------------------------+
| 2 |
+---------------------------+
1 row in set (0.02 sec)
mysql> select count(*) from a;
+----------+
| count(*) |
+----------+
| 3 |
+----------+
1 row in set (0.01 sec)
###min
min(
用来从某一列获取最小值(NULL不参与运算)。可以用于文本型书序按字典序排序。
###max
max(
用来从某一列获取最大值(NULL不参与运算)。可以用于文本型书序按字典序排序。
sum(
用来返回某一列的总和。
聚合函数通常需要配合group by语句进行分组,比如查询每个id中最大的price(结果按照id分组):
也就是要查询的列既包含原始列,又包含聚合函数作用的列时,需要使用group by语句。也可以基于多个原始列进行分组:
进行复杂聚合和分组时,如果对原始列进行条件查找,可以在group by语句之前使用where语句,但是对聚合函数进行条件查找,比如在group by语句之后使用having语句,语法格式为:
select , 聚合函数() from where 运算符 值 group by having 聚合函数() 运算符 值
对某一单独输入生效,返回一个单独的值
NULL参与数学运算的结果是NULL,有时希望在某一列的值是NULL的时候,将其当做另一个值参与运算,比如:
ucase(
用来将某一列的值转换为大写后返回。
mid(
用来从某一列的字符值中,从start位置开始(下标从1开始),长度为length的字符串,如果未指定length,则返回到字符串结尾的所有字符,比如:
length(
用来返回某一列字符的长度。
now()
函数返回当前的时间。比如:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2016-09-17 22:45:39 |
+---------------------+
1 row in set (0.02 sec)
round(
用来返回某一列浮点型数值保留小数点后decimal位的结果:
format(value, decimal)
函数用来返回更美观的浮点数输出,比如:
如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!