SELECT 查询语句基础
查询语法如下:
SELECT [ ALL | DISTINCT ] [ TOP (<表达式>) [ PERCENT ] [ WITH TIES ] ] < 列名... >
[ FROM <数据来源的表名 > ]
[ WHERE < 限制条件 > ]
[ GROUP BY < 列名... > ]
[ HAVING < 基于 “ 聚合 ” 的限制条件 > ]
[ ORDER BY < 列名... >]
[ [ FOR XML {RAW | AUTO | EXPLICIT | PATH [ ( < 元素 > ) ] } ] [ , XMLDATA ][, ELEMENTS ] [ , BINARY base 64] ]
[ OPTION (< 查询提示>, [ , ...n] ) ]
现在看不懂语法没有关系,等到慢慢学习后逐渐就会明白了。
SELECT(查询)
FROM *
SELECT [表名]
--或者是
FROM [列名...]
SELECT [表名]
“ * ”号表示所有列
WHERE(条件)
查询满足条件的数据
SELECT [表的列名]
FROM [表名]
WHERE [列名]=[值]
LIKE(相似)运算符
WHERE c_name LIKE '王%'
“%”号表示任意字符串
使用该语句就可以查询到所有姓王的人
IN (匹配) 运算符
WHERE name IN('张三','李四','王五')
姓名name与括号内任意一项相同都可以被查询到
BETWEEN 运算符
WHERE price BETWEEN 100 AND 200
价格在100和200之间的所有数据项都可以被查询到
ORDER BY (排序规则)
SELECT *
FROM tablename
ORDER BY name DESC,price ASC --先按照name降序排列,如果name相同再按照price升序排列,依次类推(默认升序排列)
DESC:降序排列
ASC:升序排列
如果有WHERE语句,ORDER BY 语句应该放在其后面。
如果有WHERE语句,ORDER BY 语句应该放在其后面。
GROUP BY (聚合)
SELECT c_name,SUM(score)
FROM scores
GROUP BY c_name
以上表示查询name相同的score和,即每个人的总分,要聚合显示的列必须跟在GROUP BY 后面
使用GROUP BY 子句时,必须要使用聚合函数
聚合函数
聚合函数一般和GROUP BY 子句配合使用
SUM(求和),AVG(平均值),MIN(最小值),MAX(最大值)
COUNT(*)
SELECT g_Discount, COUNT(*)
FROM Goods
GROUP BY g_Discount
查询g_Discount列相同值得总数
聚合函数会忽略null值,如果使用聚合函数的那列有null值,那么那一项数据就不会加以计算,
大家一定要小心哟,只有下列情况不会忽略
SELECT COUNT(*)
FROM tablename
返回这个表总共有多少条数据
HAVING
SELECT c_name, SUM(score)
FROM tablename
GROUP BY c_name
HAVING COUNT(*)>=200
当你条件中想使用“聚合”的结果时就必须使用该子句
比如你想查询总分大于等于200的学生的姓名
DISTINCT
SELECT DISTINCT c_name
FROM tablename
去除重复行