44. 结构化查询语言SQL及MySQL(二)

文章目录

  • 数据类型
    • 数字
    • 字符串
    • 创建视图
    • 通过视图操作数据
    • 删除视图
  • 时间
      • avg
      • count
      • sum
      • group by
      • having
    • 标量函数
      • ifnull
      • ucase
      • lcase
      • mid
      • length
      • now
      • round
      • format

转载请注明原始出处: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个值,比如:
44. 结构化查询语言SQL及MySQL(二)_第1张图片
set(a1, a2, ...)存储(a1, a2, ...)中的值,set中最多可以存放64个值,但是set可以存放用逗号分隔的多个值,比如:
44. 结构化查询语言SQL及MySQL(二)_第2张图片

#视图
MySQL中,视图是一种虚拟表(不能与实际数据表重名),可以定义视图后绑定到某个用户上,实现访问控制。视图并没有存储数据,而是对真实数据的引用,只有操作视图的时候才会执行视图中的SQL操作数据。

创建视图

44. 结构化查询语言SQL及MySQL(二)_第3张图片

为视图的属性命名:
44. 结构化查询语言SQL及MySQL(二)_第4张图片

通过视图操作数据

视图创建以后,就如同真实的表一样,可以操作数据(插入、更新、删除等):
44. 结构化查询语言SQL及MySQL(二)_第5张图片

考虑到数据安全,可以在创建视图是增加with check option选项,这样如果对视图操作后的数据在视图中不再可见,则不允许该操作。比如正常的视图如果操作一条数据后在视图中不再可见是不做检查的:
44. 结构化查询语言SQL及MySQL(二)_第6张图片

如果加了with check option选项,则不允许上面的更新操作:
44. 结构化查询语言SQL及MySQL(二)_第7张图片

删除视图

drop view 命令删除视图。

时间

now()函数获取当前日期及时间,返回YYYY-MM-DD hh:mm:ss格式的数据。
curdate()函数获取当前日期,返回YYYY-MM-DD格式的数据。
curtime()函数获取当前时间,返回hh:mm:ss格式的数据。
date(str)函数返回日期或时间字符串str中的日期部分,比如:
44. 结构化查询语言SQL及MySQL(二)_第8张图片

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的取值见上表,比如:
44. 结构化查询语言SQL及MySQL(二)_第9张图片

date_sub(str, interval str2 type)函数语法格式与date_add()函数语法格式一样,从str代表的时间中减去一段时间,比如:
44. 结构化查询语言SQL及MySQL(二)_第10张图片

datediff(str1, str2)函数返回str1和str2代表的日期的差值,比如:
44. 结构化查询语言SQL及MySQL(二)_第11张图片

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() from ,这些函数主要分为两类:

##聚合性函数
对某一列生效,返回一个单独的值。

avg

返回某一列的平均值,值为NULL的行不参与分子和分母的运算。
44. 结构化查询语言SQL及MySQL(二)_第12张图片

count

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不参与运算)。可以用于文本型书序按字典序排序。
44. 结构化查询语言SQL及MySQL(二)_第13张图片

sum

sum()用来返回某一列的总和。

group by

聚合函数通常需要配合group by语句进行分组,比如查询每个id中最大的price(结果按照id分组):
44. 结构化查询语言SQL及MySQL(二)_第14张图片
也就是要查询的列既包含原始列,又包含聚合函数作用的列时,需要使用group by语句。也可以基于多个原始列进行分组:
44. 结构化查询语言SQL及MySQL(二)_第15张图片

having

进行复杂聚合和分组时,如果对原始列进行条件查找,可以在group by语句之前使用where语句,但是对聚合函数进行条件查找,比如在group by语句之后使用having语句,语法格式为:

select , 聚合函数() from  where  运算符 值 group by  having 聚合函数() 运算符 值

标量函数

对某一单独输入生效,返回一个单独的值

ifnull

NULL参与数学运算的结果是NULL,有时希望在某一列的值是NULL的时候,将其当做另一个值参与运算,比如:
44. 结构化查询语言SQL及MySQL(二)_第16张图片

ucase

ucase()用来将某一列的值转换为大写后返回。

lcase

lcase()用来将某一列的值转换为小写后返回,比如:
44. 结构化查询语言SQL及MySQL(二)_第17张图片

mid

mid(, start, length)用来从某一列的字符值中,从start位置开始(下标从1开始),长度为length的字符串,如果未指定length,则返回到字符串结尾的所有字符,比如:
44. 结构化查询语言SQL及MySQL(二)_第18张图片

length

length()用来返回某一列字符的长度。

now

now()函数返回当前的时间。比如:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-09-17 22:45:39 |
+---------------------+
1 row in set (0.02 sec)

round

round(, decimals)用来返回某一列浮点型数值保留小数点后decimal位的结果:
44. 结构化查询语言SQL及MySQL(二)_第19张图片

format

format(value, decimal)函数用来返回更美观的浮点数输出,比如:
44. 结构化查询语言SQL及MySQL(二)_第20张图片

如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!

你可能感兴趣的:(Web后台技术)