SELECT操作符
# 获取products表中最贵的商品价格
# DESC 表示降序,ASC表示升序(默认值)
SELECT prod_name, prod_price
FROM products
ORDER BY prod_name
DESC LIMIT 1;
WHERE操作符
#检索价格小于等于10美元的所有产品
SELECT prod_name, prod_price
FROM products
WHERE prod_price <= 10;
#如果将值与字符串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号.
#检索名字为fuces的商品
SELECT prod_name, prod_price
FROM products
WHERE prod_name = 'fuses';
# 检索价格在5美元和10美元之间或日期在指 定的开始日期和结束日期之间的所有产品
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;
# 空值检测。SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。 这个WHERE子句就是IS NULL子句。
# 返回没有价格(空prod_price字段,不是价格为0)的所有产品
SELECT prod_name, prod_price
FROM products
WHERE prod_price IS NULL;
OR AND IN操作符
# 检索由1002或者1003供应商制造的所有产品的产品名和价格
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;
# 选择由供应商1002或1003制造的且价格都在10美元(含)以上的任何产品
SELECT prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
# 检索供应商1002和1003制造的所有产品(IN取合法值的由逗号分隔的清单,全都括在圆括号中)
SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
OEDER BY prod_name;
NOT操作符
WHERE子句中用来否定后跟条件的关键字
# 列出除1002和1003之外的所有供应 商制造的产品
SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
OEDER BY prod_name;
LIKE操作符
百分号通配符
匹配给定位置的0个、1个或多个字符
# 找出所有以词jet起头的产品
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE 'jet%';
# 匹配任何位置包含文本anvil的值,而不论它之前或之后出现什么字符
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE '%anvil%';
注意:尾空格可能会干扰通配符匹配。例如,在保存词anvil 时 , 如果它后面有一个或多个空格 ,则子句 WHERE prod_name LIKE '%anvil'将不会匹配它们,因为在最后的l后有多余的字符。解决这个问题的一个简单的办法是在搜索模式最后附加一个%。
注意:%不能匹配null值,即WHERE prod_name LIKE '%'不能匹配用值NULL作为产品名的行
下划线通配符
下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。
SELECT prod_name, prod_price
FROM products
WHERE prod_name LIKE '_ ton anvil';
可以匹配 prod_name为 1 ton anvil
,2 ton anvil
的商品, 不能匹配为12 ton anvil
的商品。
正则匹配
正则匹配模式没有完全实现REGEXP的语法,他支持下面这几种匹配方式
# 匹配连在一起的4位数字
SELECT prod_name, prod_price
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}';
# \表示转义字符,mysql要用两个斜杠,一个被用于mysql的解释器,一个用于REGEXP的解释器
SELECT prod_name, prod_price
FROM products
WHERE prod_name REGEXP '\([0-9] sticks?\)'
ORDER BY prod_name;
# TNT (1 stick)
# TNT (2 sticks)
计算字段
计算字段类似mongodb中的虚拟字段,后段把拼装好的字段供前端消费。mysql使用Concat函数拼接字段
# Concat中多个字符串之间用逗号分隔
SELECT Concat(vend_name, '(', vend_country, ')' AS vend_title
FROM vendors
ORDER BY vend_name;
# 结果:Jet Set(USA)
算术计算
SQL支持加减乘除运算
# 输出中显示的 expanded_price 列为一个计算字段, 此计算为 quantity*item_price
SELECT prod_id, item_price, quantity, quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num = 20005;
本文摘自 :https://www.cnblogs.com/