1.MAX()函數==>返回所選列的最大值
--MAX語法
SELECT MAX(column_name)
FROM table_name
WHERE condition;
--eg:
SELECT
MAX(user_age)
FROM
`table1`;
2.MIN()函數==>返回所選列的最小值
(用法同MAX)
3.COUNT()函數
--①COUNT(column_name)語法==>返回所選列的值的個數(不包括null)
(用法同MAX)
--②COUNT(*)語法==>返回表中數據的條數
SELECT COUNT(*)FROM table_name;
--③COUNT(DISTINCT column_name)語法==>返回指定列的不同值的數目
SELECT COUNT(DISTINCT column_name) FROM table_name;
4.AVG()函數==>返回所選列的平均值
(用法同MAX)
5.SUM()函數==>返回所選列的和
(用法同MAX)
6.FIELD()函數
語法:
SELECT FIELD(str,str1,str2,str3,...)
註釋:從str1開始,如果有與str完全相同的則返回對應的索引值,否則返回0.
7.FIRST()函數==>返回指定列中第一列的值
註釋:只有MS Access支持FIRST()函數。
語法:
SELECT FIRST(column_name) FROM table_name;
MySQL語法
SELECT column_name FROM table_name
ORDER BY column_name ASC
LIMIT 1;
8.LAST()函數
MySQL語法
SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;
9.GROUP BY ==>根據一個或者多個列對結果集進行分組
語法:
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
eg:(年齡在20-99之間的用戶吃的食物種類,並輸出每個種類的數量)
SELECT
user_eat,
COUNT(user_eat)
FROM
table1
WHERE
user_age BETWEEN 20
AND 99
GROUP BY
user_eat
ORDER BY
COUNT(user_eat);
10.HAVING 子句
==>用於解決WHERE關鍵字無法與Aggregate函數一起使用。
語法:
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
實例用法:(在前例的基礎上增加判斷種類在兩個以上)
SELECT
user_eat,
COUNT(user_eat)
FROM
table1
WHERE
user_age BETWEEN 20
AND 99
GROUP BY
user_eat
HAVING COUNT(user_eat)>=2
ORDER BY
COUNT(user_eat);
11.UPPER()、UCASE()、LOWER()和LCASE()
==>大小寫轉換函數
① UPPER()、UCASE()==>全部轉換爲大寫字母
② LOWER()和LCASE()==>全部轉換爲小寫字母
12.MID語法
==>用於從文本字段中提取字符
SELECT MIN(column_name,start[,length]) FROM table_name;
註釋:column_name ==>要提取字符的字段(必須參數);
start==>規定開始位置(默認爲1)(必須參數);
length==>要返回的字符數
實例用法:(從表table1中選擇user_name字段,並輸出每個字段從1位置開始,長度爲3的字符)
注意:這裏的字符從1開始,不是從0開始
SELECT
MID(user_name, 1, 3) AS shortName
FROM
table1;
13.LEN()返回文本字段中值的長度
14.ROUND()函數
==>用於把數值字段舍入爲指定的小數位數
語法:
SELECT ROUND(column_name,decimals) FROM table_name;
15.FORMAT()函數
==>用於對字段的顯示進行格式化
FORMAT()語法:
SELECT FORMAT(column_name,format)
FROM table_name;
註釋:column_name要格式化的字段;
format 規定格式;
實例用法1:
SELECT FORMAT(20.1236,3); ==>保留三位小數
實例用法2(添加美元$符號):
SELECT
user_name,
CONCAT(
"$",
FORMAT(social_status,3)
)
FROM
`table1`;
在MySQL中使用DATE_FORMAT()函數進行時間格式化
實例用法:
SELECT
user_ID,
DATE_FORMAT(NOW(), "%Y-%m-%d %H:%i:%S") AS PerDate
FROM
table1;
16.SQRT()函數
==>求函數的平方根
17.RAND()函數
==>生成0-1之間的隨機數
ORDER BY RAND()==>對SELECT的序列進行隨機排序
18.CONCAT==>將字符串連接起來
19. ISNULL()、NVL()、IFNULL() 和 COALESCE() 函數
==>用於對null值的判斷及處理
①SQL Server/MS access
語法:
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
②Oracle沒有isnull,使用NVL()可以達到相同的效果
③MySQL===>IFNULL()、COALESCE()
20.REPLACE()函數
==>字符串替換函數
實例用法:
把數據庫表table1中的所有user_name字段裏的k字符串替換成KI。
UPDATE table1
SET user_name = REPLACE (user_name, "k", "KI");
21.TRIM()函數==>去除字符串首尾的空格
它在不同的數據庫裏的用法不同:
MySQL: TRIM(), RTRIM(), LTRIM()
Oracle: RTRIM(), LTRIM()
SQL Server: RTRIM(), LTRIM()
***********************************************************************************************************
總結1.SELECT語句的語法
SELECT
column_1,
column_2 ,...
FROM
table_1 [ INNER | LEFT | RIGHT ]
JOIN table_2 ON conditions
WHERE
conditions
GROUP BY
column_1
HAVING
group_conditions
ORDER BY
column_1
LIMIT OFFSET,
length;
SELECT==>之後是逗號分隔列或星號(*)的列表,表示要返回所有列。
FROM==>指定要查詢數據的表或視圖。
JOIN==>根據某些連接條件從其他表中獲取數據。
WHERE==>過濾結果集中的行。
GROUP BY==>將一組行組合成小分組,並對每個小分組應用聚合函數。
HAVING==>過濾器基於GROUP BY子句定義的小分組。
ORDER BY==>指定用於排序的列的列表。
LIMIT==>限制返回行的數量。
其中SELECT和FROM語句必須,其他部分可選。
總結2:如何使用INSERT INTO語句和SELECT語句複製表?
步驟1:複製表結構
CREATE TABLE table_copy LIKE table;
步驟2:SELECT table裏的數據,INSERT INTO table_copy中
總結3:將表user裏的數據更新到表task中
UPDATE task
SET end_date = (
SELECT
cerate_date
FROM
`user`
WHERE
user_id = 3
)
WHERE
end_date = "2017-01-02";
總結4:如何刪除表中的重複數據?
注意:這裏必須複製表之後纔可以刪除重複。
DELETE
FROM
task
WHERE
(
SUBJECT,
start_date,
end_date,
description
) IN (
SELECT
SUBJECT,
start_date,
end_date,
description
FROM
task_copy
GROUP BY
SUBJECT,
start_date,
end_date,
description
HAVING
COUNT(*) > 1
)
AND task_id NOT IN (
SELECT
min(task_id)
FROM
task_copy
GROUP BY
SUBJECT,
start_date,
end_date,
description
HAVING
count(*) > 1
);
總結5:ALTER TABLE 修改表結構
①增加列
ALTER TABLE tableName
ADD COLUMN new_column_name [null|not null]
AFTER column_name;
②刪除列
ALTER TABLE tableName
DROP column_name;
③重命名
ALTER TABLE tableName
RENAME TO new_name;
或者
RENAME TABLE old_table_name TO new_table_name;