MySQL一些总结(1)

无人久伴 提交于 2019-12-04 03:37:57

LIKE操作符
%通配符

SELECT prod_id,prod_name

FROM products

WHERE prod_name LIKE 'jet%';

//%告诉sql接受任意字符 不管多少都接受包括0个

//搜索是可以区分大小写的 %不能匹配NULL

//通配符任意位置使用任意多次

下划线_通配符 和%完全一样 不过只能匹配单个字符

 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据

regexp REGEXP 后面接正则表达式

select pro_name

from products

where prod_name regexp '1000'

order by prod_name;

LIKE //匹配整个串

REGEXP //匹配子串

REGEXP BINARY 区分大小写

1|2|3 //or运算符

[123] //也是or运算符

[^123] //匹配这些字符集之外的其他东西 [a-z]

\\. \\后面加特殊字符 可以查找特殊字符 转义

定位符 ^ 文本开始

$ 文本结尾

[[:<:]] 词的开始 [[:>:]] 词的结尾

字段

计算字段 用来在数据库中直接格式化数据

拼接字段 MySQL用Concat()函数 其他DBMS用 + 或 ||来实现拼接

SELECT Concat(vend_name, ' (' , vend_country , ') ')

FROM vendors

ORDER BY vend_name;

Trim() RTrim() Ltrin() //去掉串左右的空格 只去掉右边 只去掉左边

给新的串 加上别名 用关键字AS

SELECT Concat(vend_name, ' (' , vend_country , ') ') AS vend_title

FROM vendors

ORDER BY vend_name;

还可以执行算术运算

SELECT prod_id,quantity,item_price,quantity*item_price AS expanded_price

FROM orderitems WHERE order_num=20005

expanded_price 作为一个新的字段 可以像使用其他列一样使用

SELECT NOW(); 返回当前时间

函数

大多数sql语句都是可以移植的 函数的可移植性不强

大多数SQL实现支持以下类型的函数。
 用于处理文本串(如删除或填充值,转换值为大写或小写)的文
本函数。
 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)
的数值函数。
 用于处理日期和时间值并从这些值中提取特定成分(例如,返回
两个日期之差,检查日期有效性等)的日期和时间函数。
 返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本
细节)的系统函数。

1.文本处理函数:

Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找出串的一个子串
Lower() 将串转换为小写
LTrim() 去掉串左边的空格
Right() 返回串右边的字符
RTrim() 去掉串右边的空格
Soundex() 返回串的SOUNDEX值 // SOUNDEX 是一个将任何文本串转换为描述其语音表示的字母数字模式的算法
SubString() 返回子串的字符
Upper() 将串转换为大写

Soundex() 用法

SELECT cust_name, cust_contact

FROM customers

WHERE Soundex(cust_contact) = Soundex('abs');// 发音相似就可以匹配

​ 常用日期和时间处理函数
​ 函 数 说 明
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回一个格式化的日期或时间串
Day() 返回一个日期的天数部分
DayOfWeek() 对于一个日期,返回对应的星期几
Hour() 返回一个时间的小时部分
Minute() 返回一个时间的分钟部分
Month() 返回一个日期的月份部分
Now() 返回当前日期和时间
Second() 返回一个时间的秒部分
Time() 返回一个日期时间的时间部分
Year() 返回一个日期的年份部分

SELECT cust_id ,order_num

FROM orders

WHERE Date(order_date) = '2005-09-01';//只返回日期

如果想要检查出来2005年9月的所有数据 可以用BETWEEN

SELECT cust_id, order_num

FROM orders

WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';

第二种方法

SELECT cust_id, order_num

FROM orders

WHERE Year(order_date) = 2005 AND Month(order_date) = 9;

​ 常用数值处理函数
函 数 说 明
Abs() 返回一个数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切

聚集函数 //实际需要返回的是汇总信息

😂确定表中行数(或者满足某个条件或包含某个特定值的行数)。
😂 获得表中行组的和。
😂找出表列(或所有行或某些特定的行)的最大值、最小值和平均
值。

SQL聚集函数
函 数 说 明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和

AVG() 可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。

SELECT AVG(prod_price) AS avg_price

FROM products;

SELECT AVG(prod_price) AS avg_price

FROM products

WHERE vend_id=1003; //返回特定列的平均值

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!