SELECT与FROM用于基础的检索,基本语法为:sql
SELECT column_name,column_name,column_name...column_name FROM table_name;
注:默认不排序;sql不区分大小写,可是建议SQL关键字使用大写,本文遵照此规则;建议每一个SQL写完后跟上“;”,本文遵照此规则。数据库
检索全部列:函数
SELECT * FROM table_name;
注:*会默认返回全部列的内容,不建议使用*,由于会检索全部内容形成没必要要的性能浪费。性能
检索不一样值:spa
SELECT DISTINCT column_name,column_name...column_name FROM table_name;
注:DISTINCT关键字做用于全部列,既对全部检索的列名都进行排它。code
限制结果:blog
SELECT column_name FROM table_name LIMIT x; SELECT column_name FROM table_name LIMIT x OFFSET y;
注:LIMIT表示检索多少行,OFFSET表示从第几行数据开始(第一行数据的下标为0),x与y都是数字(int)排序
ORDER BY的基本用法:ci
SELECT column_name FROM table_name ORDER BY column_name;
注:数据库自己的查询顺序是无心义的(虽然大部分会按照默认顺序排列,可是随着数据的删除等操做,会致使顺序最终无心义,因此就默认为无心义的)字符串
子句:由SQL的关键字与对应的数据组成。例如SELECT子句与FROM子句。
ORDER BY子句的位置应该为SELECT的最后(除正序、倒序关键字外)
ORDER BY也能够对非选择列(不是SELECT子句检索的列)进行排序。
进行多个列检索时:
SELECT column_name FROM table_name ORDER BY column1_name, column2_name;
注:仅当column1_name一致时才会对column2_name进行排序,若是column1_name都是惟一的至关于仅对column1_name排序。
升降序检索:
SELECT column_name FROM table_name ORDER BY column_name DESC/ASC, column2_name;
注:降序:DESC 升序:ASC 默认就是升序的。
升降序关键字仅影响其前面的列。
操做符:= != >= <= > < BETWEEN(AND) IS NULL
仅对单个值过滤
SELECT column_name FROM table_name WHERE column_name OPERATION condition;
注:condition什么时候使用引号呢? 仅限限定字符串时才须要使用引号,通常使用单引号便可。
BETWEEN condition1 AND condition2 在限定范围时,该关键字包含限定的两个条件。
WHERE AND OR IN NOT
多个限定条件的过滤:
SELECT column_name FROM table_name WHERE () AND/OR ();
注:()表示限定的条件。
AND要求两个条件都符合。
OR要求二者符合其一便可,多数DBMS在OR知足条件1时就不在计算第二个条件了。
AND与OR会有默认的求值顺序,即AND操做符优于OR操做符,当过滤条件>=3个的时候就要注意操做符顺序了,可使用()来强制要求顺序,好习惯就是忽略默认顺序,优先使用()。
IN操做符的用法:
SELECT column_name FROM table_name WHERE column_name IN (condition1, confition2, ..., conditionN);
IN操做符与OR的做用是相同的,可是具备如下优势:
1.语法更加直观清晰。
2.求值顺序更加容易管理。
3.IN操做符比一组OR操做顺序快。
4.IN能够包含其余SELECT语句(后面同步)。
NOT操做符的用法:
SELECT column_name FROM table_name WHERE NOT ();
NOT仅否认跟在其后的条件。NOT与IN联合使用时会更有优点。
LIKE %
通配符:用来匹配值得一部分的特殊字符。
搜索模式:由字面值和通配符或二者组合构成的搜索条件。
注:使用通配符必须配合LIKE操做符。
百分号(%)通配符:
SELECT column_name FROM table_name WHERE column_name LIKE 'String%'
注:上面的语句将检索column_name以String内容开头的数据。
‘%String’: 匹配以String内容结尾的数据
'%String%': 匹配包含String内容的数据
'String%String' 匹配以String内容开始,以String结尾内容的数据
%匹配0、1和多个字符。且不能匹配到NULL。
下划线(_)通配符:
注:下划线与%的做用相同,可是仅匹配单个字符。
通配符使用注意事项:
1.通配符使用要适度。
2.尽可能不要在搜索的开头使用通配符。
3.注意通配符的位置。
拼接字段与计算字段都是将多个列的数据进行组合查询。
Concat(col, ...) AS + - * /
SELECT Concat(city_name, '(', country_name, ')') AS city_country FROM area ORDER BY city_name
注:由于拼接字段拼接后没法被客户端直接引用,因此使用AS关键字(别名,别名尽可能与列名不一样),方便客户端引用。
SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderItems WHERE order_num = 100
注:计算字段有四个:+ - * /
因为不一样的数据库中对函数的支持不一样,因此具体的函数能够再使用的时候去查询,如下以MySQL为准
函数:
提取字符串的组成:SUBSTRING()
类型转换:CONVERT()
当前日期:CURDATE()
如下为统计函数
获取某列的平均值:AVG()
获取某列的行数:COUNT()
获取某列最大值:MAX()
获取某列最小值:MIN()
获取某列值之和:SUM()
注:COUNT(ROW)与COUNT(*) *是会计算库中全部的数据,ROW只会计算有值的数据(会忽略为null)
使用统计时,使用DISTINCT时,会排除不一样的值,COUNT(DISTINCT ROW)排除ROW中有相同的值。
GROUP BY HAVING