数据库 MySQL 简明学习教程一起来学习 MySQL——进阶篇

已收录   阅读次数: 882
2022-05-2811:24:19 发表评论
摘要

前一篇在 MySQL 基础篇稍微了解了 MySQL 知识点,本篇文章则是在基础篇之上的进阶,掌握更多相关技巧,那么本篇文章就不要错过了……

分享至:
数据库 MySQL 简明学习教程一起来学习 MySQL——进阶篇

开篇寄语

前一篇在 MySQL 基础篇稍微了解了 MySQL 知识点,本篇文章则是在基础篇之上的进阶,掌握更多相关技巧,那么本篇文章就不要错过了。

前情提要

内容详情

MySQL 中有很多内构函数,描述作用以及例子来说明。

String 函数

函数描述例子
ASCII()返回特定字符的 ASCII 值ASCII('abc')
CHAR_LENGTH()返回字符串的长度(以字符为单位)CHAR_LENGTH('Hello World')
CHARACTER_LENGTH()返回字符串的长度(以字符为单位)CHARACTER_LENGTH('Hello World')
CONCAT()将两个或多个表达式加在一起CONCAT('Hello World', '!!!')
CONCAT_WS()将两个或多个表达式与分隔符相加CONCAT_WS('-','a','b')
FIELD()返回值列表中数值的索引位置FIELD("a", "b", "c", "d")
FIND_IN_SET()返回值列表中字符串的索引位置FIND_IN_SET("ab", "abstract,ab,abs")
FORMAT()将数字格式化为“#,###,###.##”之类的格式,四舍五入到指定的小数位数FORMAT(2105.563, 2)
INSERT()在指定位置的字符串中插入字符串,并插入一定数量的字符INSERT("Luckydesigner.space", 1, 13, "Example")
INSTR()返回一个字符串在另一个字符串中第一次出现的位置INSTR("abstract,ab,abs",'b')
LCASE()将字符串转换为小写LCASE("MySQL is Very Good!")
LEFT()从字符串中提取多个字符(从左开始)LEFT("MySQL Tutorial", 3)
LENGTH()返回字符串的长度(以字节为单位)LENGTH("MySQL is Very Good!")
LOCATE()函数返回字符串中子字符串第一次出现的位置LOCATE('u','Luckydesigner.space')
LOWER()将字符串转换为小写LOWER("MySQL is Very Good!")
LPAD()用另一个字符串向左填充一个字符串,达到一定的长度LPAD("0123456", 20, "036")
LTRIM()函数从字符串中删除前导空格LTRIM("     MySQL Tutorial")
MID()函数从字符串中提取子字符串(从任意位置开始)MID("MySQL Tutorial", 6, 3)
POSITION()返回字符串中子字符串第一次出现的位置POSITION("u" IN "Luckydesigner.space")
REPEAT()将字符串重复指定的次数REPEAT("MySQL Tutorial", 3)
REPLACE()用新的子字符串替换字符串中所有出现的子字符串REPLACE("SQL Tutorial", "SQL", "MySQL");
REVERSE()反转一个字符串并返回结果REVERSE("MySQL Tutorial")
RIGHT()从字符串中提取多个字符(从右开始)RIGHT('MySQL Tutorial', 8)
RPAD()用另一个字符串将一个字符串右填充到一定长度LPAD("0123456", 20, "036")
RTRIM()函数从字符串中删除后导空格RTRIM("MySQL Tutorial    ")
SPACE()指定数量的空格字符的字符串SPACE(5)
STRCMP()比较两个字符串STRCMP('abc','abc')
如果 A = B,返回0;如果 A > B,返回1;如果 A < B,返回-1
SUBSTR()从字符串中提取子字符串(从任意位置开始)SUBSTR("MySQL Tutorial", 7, 3)
SUBSTRING()从字符串中提取子字符串(从任意位置开始)SUBSTRING("MySQL Tutorial", 7, 3)
SUBSTRING_INDEX()在出现指定数量的分隔符之前返回字符串的子字符串SUBSTRING_INDEX('Luckydesigner.space', '.', 1)
TRIM()返回清空字符串前后的空格TRIM(' MySQL Tutorial ')
UCASE()将字符串转换为大写UCASE("MySQL is Very Good!")
UPPER()将字符串转换为大写UPPER("MySQL is Very Good!")

Numeric 函数

函数描述例子
ABS()返回绝对值abs(-10)
ACOS()返回反余弦值ACOS(0.25)
ASIN()返回反正弦值ASIN(0.25)
ATAN()返回反正切值ATAN(2.5)
ATAN2()返回两个数字的反正切ATAN2(0.50, 1)
AVG()返回表达式的平均值AVG(Price)
CEIL()返回大于或等于数字的最小整数值CEIL(25.62)
CEILING()同CEIL()CEILING(25.62)
COS()返回余弦值COS(2)
COT()返回余切值COT(6)
COUNT()返回选择查询返回的记录数COUNT(Price)
DEGREES()将弧度值转换为度数DEGREES(1.525)
A DIV BA 除以 B,返回整数10.52 DIV 5.5
EXP()返回 e 的指定数字的幂EXP(1)
FLOOR()返回小于或等于数字的最小整数值FLOOR(25.62)
GREATEST()返回参数列表的最大值GREATEST(6,12,24,14,66)
LEAST()返回参数列表的最小值LEAST(6,12,24,14,66)
LN()返回数字的自然对数LN(2)
LOG()返回指定数的自然对数,或该数与指定底数的对数LOG(2)
LOG10()返回以 10 为底的数字的自然对数LOG10(2)
LOG2()返回以 2 为底的数字的自然对数LOG2(2)
MAX()返回一组值中的最大值MAX(Price)
MIN()返回一组值中的最小值MIN(Price)
MOD()返回一个数除以另一个数的余数MOD(21,2)
PI()返回 Pi 值PI()
POW(A,B)返回 A 的指数幂 BPOW(2,4)
POWER(A,B)同 POW()POWER(2,4)
RADIANS()将度数转换为弧度RADIANS(180)
RAND()返回 0(包括)和 1(不包括)之间的随机数RAND()
ROUND(A, B)将数字四舍五入到指定的小数位数ROUND(3.1415926, 2)
SIGN(A)返回数字符号SIGN(-23.06)
如果 A > 0,返回1;如果 A = 0,返回0;如果 A < 0,返回 -1
SIN()返回数字的正弦值SIN(2)
SQRT()返回数字的平方根SQRT(2)
SUM()计算一组值的总和SUM(Price)
TAN()返回数字的正切值TAN(1.75)
TRUNCATE()将数字截断为指定的小数位数TRUNCATE(135.375, 2)

Date 函数

函数描述例子
ADDDATE(date, INTERVAL value addunit)
或者
ADDDATE(date,days)
将时间/日期间隔添加到日期,然后返回日期ADDDATE("2022-05-29", INTERVAL 10 DAY)
例子中的 DAY 可以换成以下类型
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
ADDTIME(A,B)将时间间隔添加到时间/日期时间,然后返回时间/日期时间ADDTIME("2022-05-30 09:34:21", "12:02")
CURTIME()返回当前时间,时间格式是 “HH-MM-SS”CURTIME()
CURDATE()返回当前日期,格式是 “YYYY-MM-DD”CURDATE()
CURRENT_DATE()返回当前时间,时间格式是 “YYYY-MM-DD”CURRENT_DATE()
CURRENT_TIME()返回当前时间,时间格式是 “HH-MM-SS”CURRENT_TIME()
CURRENT_TIMESTAMP()返回当前时间,时间格式是 “YYYY-MM-DD  HH:MM:SS”CURRENT_TIMESTAMP()
DATE_ADD(date, INTERVAL value addunit)将时间/日期间隔添加到日期,然后返回日期参考 ADDDATE()
DATE_FORMAT(A, B)按指定格式化日期DATE_FORMAT("2022-05-29", "%Y")
例子中的 “%Y” 可以换成以下类型
%a
星期缩写名称 (Sun to Sat)
%b
月份缩写名称 (Jan to Dec)
%c
月份数字形式 (0 to 12)
%D
单日在月份中缩写 (1st, 2nd, 3rd, ...)
%d
单日在月份中数字形式 (01 to 31)
%e
单日在月份中数字形式 (0 to 31)
%f
微秒显示 (000000 to 999999)
%H
小时数显示 (00 to 23)
%h
小时数显示 (00 to 12)
%I
小时数显示 (00 to 12)
%i
分钟数显示 (00 to 59)
%j
当年到了第几天 (001 to 366)
%k
小时数显示 (0 to 23)
%M
月份名称全称 (January to December)
%m
月份数字表现形式 (00 to 12)
%p
AM or PM
%r
时间在 12 小时制显示 AM or PM 形式 (hh:mm:ss AM/PM)
%S
秒数 (00 to 59)
%s
秒数 (00 to 59)
%T
时间在 24 小时制显示 (hh:mm:ss)
%U
星期天是一周的第一天的星期 (00 to 53)
%u
星期一是一周的第一天的星期 (00 to 53)
%V
星期天是一周的第一天的星期 (01 to 53). 也可以用 %X
%v
星期一是一周的第一天的星期 (01 to 53). 也可以用 %x
%W
星期的完整名称 (Sunday to Saturday)
%w
显示星期几 Sunday=0 and Saturday=6
%Y
年份为 4 位数字值
%y
年份为 2 位数字值
DATE_SUB(date, INTERVAL value addunit)从日期中减去时间/日期间隔,然后返回日期参考 ADDDATE()
EXTRACT(part FROM date)从给定日期提取一部分EXTRACT(MONTH FROM "2022-05-29")
例子中的 MONTH 可以换成以下类型
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
FROM_DAYS(A)从数字日期值返回日期FROM_DAYS(105000)
MAKEDATE()返回基于年份和天数值的日期MAKEDATE(2022,125)
MAKETIME()返回基于小时,分钟数和秒数的时间值MAKETIME(11,23,56)
NOW()同 CURRENT_TIMESTAMP()NOW()
SYSDATE()同 CURRENT_TIMESTAMP()SYSDATE()
LAST_DAY(A)提取给定日期该月的最后一天LAST_DAY('2020-02-12')
LOCALTIME()同 CURRENT_TIMESTAMP()LOCALTIME()
LOCALTIMESTAMP()同 CURRENT_TIMESTAMP()LOCALTIMESTAMP()
DATE()从日期时间表达式中提取日期部分DATE("2022-05-28 09:30:00"),返回 2022-05-28
TIMEDIFF()返回两个时分秒之间的时间,返回也是时分秒的形式TIMEDIFF("20:19:11", "12:10:10")
DATEDIFF(A, B)返回两个日期之间的天数DATEDIFF("2022-05-28","2022-05-15")
MICROSECOND()返回时分秒中的毫秒数MICROSECOND("2022-05-28 09:30:00.000059")
SECOND()返回时分秒中的秒钟数SECOND("2022-05-28 09:30:00")
MINUTE()返回时分秒中的分钟数MINUTE("2022-05-28 09:30:00")
HOUR()返回时分秒中的小时数HOUR("2022-05-28 09:30:00")
DAY()返回年月日中的日数字DAY("2022-05-28")
DAYOFMONTH()同DAY()DAYOFMONTH("2022-05-28")
WEEK()返回该日期是今年的第几个星期WEEK("2022-05-28")
WEEKOFYEAR()同WEEK()WEEKOFYEAR("2022-05-28")
MONTH()返回年月日中的月数字MONTH("2022-05-28")
YEAR()返回年月日中的年数字YEAR("2022-05-28")
DAYOFYEAR()返回当年度到了第几天DAYOFYEAR("2022-05-28")
DAYNAME()返回星期名称DAYNAME("2022-05-28")
MONTHNAME()返回月份名称MONTHNAME("2022-05-28")
DAYOFWEEK()返回星期数字DAYOFWEEK("2022-05-28")
1=Sunday, 2=Monday, 3=Tuesday, 4=Wednesday, 5=Thursday, 6=Friday, 7=Saturday
WEEKDAY同DAYOFWEEK()WEEKDAY("2022-05-28")
0 = Monday, 1 = Tuesday, 2 = Wednesday, 3 = Thursday, 4 = Friday, 5 = Saturday, 6 = Sunday
YEARWEEK()返回年数和今年的第几个星期YEARWEEK("2022-05-28")
TO_DAYS()返回日期和年份 0 之间的天数TO_DAYS("2022-05-28")
TIME()返回时分秒形式TIME("2020-01-05 19:30:10")
TIMESTAMP()根据日期或日期时间值返回一个日期时间值TIMESTAMP("2022-05-28", '12:00:00')
TIME_TO_SEC()时分秒转换为秒的形式返回TIME_TO_SEC('12:00:00')
SUBTIME(A,B)时间减法SUBTIME("2022-05-27 10:24:21", "09:24:21.001125")
SEC_TO_TIME()根据指定的秒数返回时间值(格式为 HH:MM:SS)SEC_TO_TIME(100)
QUARTER()返回给定日期值的一年中的季度(从 1 到 4 的数字)QUARTER("2022-05-27")
1-3 月返回 1
4-6 月回归 2
7-9 月返回 3
10 月至 12 月返回 4
PERIOD_ADD()将指定的月数添加到期间PERIOD_ADD(202205,5)
PERIOD_DIFF(A,B)返回两个时期之间的差异A 和 B 的日期格式要一致

Advanced 函数

函数描述例子
BIN()返回数字的二进制表示形式,作为字符串值BIN(15)
BINARY将值转换为二进制字符串BINARY "HELLO" = "hello"
CAST(A AS B)将 A(任何类型的)值转换为指定的数据类型 BB 涉及的类型如下:
DATE
DATETIME
DECIMAL
TIME
CHAR
NCHAR
SIGNED
UNSIGNED
BINARY
CONVERT(A, B)同 CAST同 CAST
CONV(A, B, C)将数字 A 从一个数字进制 B 转换为另一个 C 进制,并将结果作为字符串值返回CONV(5, 10, 8)
COALESCE()返回列表中第一个非 NULL 值COALESCE(1, NULL, 2, 6,NULL)
IF()如果条件为 TRUE,则返回一个值,如果条件为 FALSE,则返回另一个值IF(2<3, 'YES', 'NO')
USER()返回 MySQL 连接的当前用户名和主机名USER()
CURRENT_USER()返回服务器用于验证当前客户端的 MySQL 帐户的用户名和主机名CURRENT_USER()
CONNECTION_ID()返回当前连接的唯一连接 IDCONNECTION_ID()
DATABASE()返回当前数据库的名称DATABASE()
LAST_INSERT_ID()返回表中已插入或更新的最后一行的 AUTO_INCREMENT idLAST_INSERT_ID()
IFNULL(A,B)如果 A 是 NULL,则返回B,反之,则返回 AIFNULL(NULL,'YES')
ISNULL()如果是 NULL,返回1,反之,返回0ISNULL(NULL)
NULLIF(A,B)比较 A 和 B,如果 A = B,返回 NULL,反之,返回ANULLIF(10,20)
SESSION_USER()同 USER()SESSION_USER()
SYSTEM_USER()同 USER()SYSTEM_USER()
VERSION()返回当前 MySQL 数据库版本VERSION()

View 语令

在 SQL 中,视图是基于 SQL 语句结果集的虚拟表。

视图包含行和列,就像真实的表一样,视图中的字段是来自数据库中一个或多个真实表的字段。

可以将 SQL 语句和函数添加到视图并呈现数据,就好像数据来自一个表一样。

创建用 CREATE VIEW

CREATE VIEW Stock AS
SELECT PriceDay, Country
FROM StockStatus
WHERE Country = 'USA';

更新用 CREATE OR REPLACE VIEW

CREATE OR REPLACE VIEW Stock AS
SELECT PriceDay, Country
FROM StockStatus
WHERE Country = 'USA';

删除用 DROP VIEW

DROP VIEW Stock;

  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: