赞
踩
目录
SELECT * FROM products "*" 通配符
SELECT DISTINCT id FROM products DISTINCT排重
SELECT name FROM products LIMIT 5 LIMIT 指示MySQL返回不多于五行
LIMIT3,4 指从行3开始的4行
SELECT name FROM products ORDER BY name
将name列以字母顺序排序
SELECT id, name, price FROM products ORDER BY price ,name
首先按价格再按名字排序
SELECT id,price,name FROM products ORDER BY price DESC
DESC 降序排序(只指定位于前面的列名)
如果想在多个列上进行降序排序,则需要对每个列指定DESC关键字
SELECT price FROM products ORDER BY price DESC LIMIT 1
SELECT name,price FROM products WHERE price = 2.50
ORDER BY 应位于WHERE之后
WHERE子句操作符<,>,=,>=,<=,!=,<>,BETWEEN
WHERE price BETWEEN 5 AND 10
WHERE price IS NULL
*不能返回具有NULL值的行
WHERE id=1003 AND price<=10
AND联结关键词
OR或关键词
用 圆括号明确分组
IN与OR的功能具有相同的功能,但是IN更好就是了
NOT WHERE 子句中用来否定后跟条件的关键字
SELECT name,price FROM products WHERE id NOT IN(1002,1003)
意思就是匹配1002和1003之外的id
%表示任何字符出现任意次数
例如,找出所有以词jet起头的产品,可用以下语句
SELECT id,name FROM products WHERE name LIKE ‘jet%’;
同理‘%anvil’可以匹配任何位置包含文本anvil的值
‘s%e’可以匹配以s起头以e结尾的所有值
%通配符不能匹配NULL
注意MYSQL搜索可以是区分大小写的,这根据你的MySQL的配置
下划线与%用法相同,但是下划线只能匹配单个字符而不是多个字符。
举个栗子
SELECT id,name FROM products WHERE name LIKE ‘_ ton anvil’;
SELECT name FROM products WHERE name REGEXP ‘1000’ ORDER BY name;
MySQL的正则表达式不区分大小写,若要区分大小写,则可使用BINARY关键字,例如
"."可以匹配任意的字符
WHERE name REGEXP BINARY ‘JetPack .000’
WHERE name REGEXP ‘1000|2000’ ORDER BY name
SELECT name FROM products WHERE name REGEXP ‘[123] Ton’ ORDER BY name
这里使用了正则表达式[123] Ton,它的意思是匹配1或2或3,作用类似于IN关键字,是[1|2|3]的缩写
字符集合也可以被否定,在集合开始处放置一个"∧"即可,例如[∧123],就可以匹配除123之外的字符
“-”可以用来定义一个范围,例如[1-9],[a-z]都可以
举个栗子
SELECT name FROM products WHERE name REGEXP ‘[1-5]Ton’
若要匹配这些关键字字符,例如“-”,“.”这些我们该怎么做呢
为了匹配特殊字符,必须要用“\\”为前导,例如
SELECT name FROM products WHERE name REGEXP ‘\\.’
“\\”也用来引用元字符
为了匹配反斜杠“\”字符本身,需要使用"\\\"
正则表达式部分略过
当我们需要从数据库中检索出转换,计算,或格式化过的数据,就要用到计算字段
解决办法是吧两个列拼接起来,可使用Concat()函数来拼接两个列
SELECT Concat(RTrim(name,' (',RTrim(country), ')') AS title FROM vendors ORDER BY name ;
语句本身与上一句相同,但是它指示SQL创建一个包含指定计算的名为title的计算字段,任何客户机都可以按名引用这个列
RTrim可以去掉右边的所有空格,LTrim可以去掉左边的所有空格,Trim可以去掉两边的空格
SELECT name,Upper(name) AS name——upcase
FROM vendors
ORDER BY name
MySQL使用的日期格式,日期格式必须为yyyy-mm-dd。
例如
SELECT id ,num FROM orders WHERE date=‘2005-09-01’;
若要检索出九月份的所有数据,可用:
SELECT id,num FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';
或
我们经常需要汇总数据而不用把他们实际检索出来,这时候就要用到聚集函数
这种类型的检索例子有:
* 确定表中函数
* 获得表中行组的和
* 找出表列的最大值最小值和平均值
以第一个函数AVG()为例
SELECT AVG(price) AS avg_price FROM products;
返回值为avg_price,为products表中的所有产品的价格的平均值
DINTINCT即可做到排重,相同的数字不包含在聚集函数的计算范围内
举个栗子
GROUP BY可以根据指定数据进行分组,然后对于每个组内的数据进行聚集
我们知道WHERE有过滤的作用,但是WHERE是对行进行过滤, 对于分组,我们可以用到HAVING子句进行对分组的过滤,语法与WHERE相同。
例如
WHERE与HAVING的同时使用
即是嵌套在其他查询中的查询
——待续——
x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。