[TOC]
排序 ORDER BAY 合并 GROUP BY
oracle分页
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
插入
INSERT INTO table_name
(column1,column2,column3,...) -- 列名
VALUES
(value1,value2,value3,...) -- 列内容
更新
UPDATE table_name
SET column1=value1,column2=value2
WHERE some_column=some_value --若无约束条件,属于该列的所有内容都将被修改
删除
DELETE FROM table_name
WHERE some_column=some_value --若无约束条件,表将被清空
查询
- 通配符
通配符 | 描述 |
---|---|
% | 替代0个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[ ^charlist] or [ !charlist] | 不在字符列中的任何单一字符 |
-
去重 DISTINCT
SELECT DISTINCT * -- DISTINCT 去重 FROM table_name
-
排序 ORDER BY
SELECT * FROM table_name -- ASC|DESC : 升序|降序(默认升序) ORDER BY column_name ASC|DESC,column_name ASC|DESC;
排序能以先后顺序设定排序的优先级,并能独立进行升/降序排列。
-
连接 JOIN
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
-
INNER JOIN:如果表中有至少一个匹配,则返回行
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
-
-
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
-
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
-
FULL JOIN:只要其中一个表中存在匹配,则返回行
SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name
-
GROUP BY : 合并
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
****aggregate_function() :**** 函数集
- ###HAVING : 筛选分组后的各组数据
```mysql
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
函数
-
AVG() 返回数值列的平均值。
-- 下面的 SQL 语句从 "Products" 表的 "Price" 列获取平均值: SELECT AVG(Price) FROM Products
-- 下面的 SQL 语句选择价格高于平均价格的 "ProductName" 和 "Price" 记录: SELECT ProductName, Price FROM Products WHERE Price>(SELECT AVG(Price) FROM Products)
-
COUNT() 返回匹配指定条件的数量
--COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入): SELECT COUNT(column_name) FROM table_name;
--COUNT(*) 函数返回表中的记录数: SELECT COUNT(*) FROM table_name;
-- COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目: SELECT COUNT(DISTINCT column_name) FROM table_name;
-
MAX() | MIN() 返回指定列的最大|最小值。
SELECT MAX|MIN(column_name) FROM table_name;
-
SUM() 返回数值列的总数。
SELECT SUM(column_name) FROM table_name;
操作符
-
LIKE : 模糊搜索
SELECT * FROM table_name WHERE column_name LIKE pattern; -- 例: LIKE '%李%'
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
-
IN
SELECT * FROM table_name WHERE column_name IN (value1,value2) -- IN 后可接table
IN 操作符允许您在 WHERE 子句中规定多个值。
-
BETWEEN : 两值之间
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
-
UNION : 合并
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。