數據庫語句學習
摘要:文章主要內容是數據庫語句的基本操作,以及一些基本的數據庫標準庫函數
重點:SQL語句對大小寫不敏感
數據庫操作語句
- SELECT - 從數據庫表中獲取數據
- UPDATE - 更新數據庫表中的數據
- DELETE - 從數據庫表中刪除數據
- INSERT INTO - 向數據庫表中插入數據
字句與附加內容
SELECT list1,list2 FROM table;//輸出某幾個表SELECT * FROM table;//輸出表中全部內容SELECT DISTINCT list1 FROM table;//輸出列中內容,但每個值只出現一次SELECT * FROM table WHERE id=2;//查找id為2的那一行,注意等號為單個,并且如果查找內容非數值,需要加單引號eg:WHERE name='alice'SELECT * FROM table WHERE id=2 AND name='alice';//他的意思和你想的一樣,同樣的用法還有ORSELECT * FROM table ORDER by id;//查找以后的結果按照id正序輸出
INSERT INTO table(list1,list2) VALUES('alice','bob')
UPDATE table SET list1='alice',list2='bob' WHERE id=1;
DELETE FROM table WHERE id=1;
DELETE * FROM table;
數據庫定義語句
- CREATE DATABASE - 創建新數據庫
- ALTER DATABASE - 修改數據庫
- CREATE TABLE - 創建新表
- ALTER TABLE - 變更(改變)數據庫表
- DROP TABLE - 刪除表
- CREATE INDEX - 創建索引(搜索鍵)
- DROP INDEX - 刪除索引
oracle數據庫標準庫函數(math庫)(DML庫-操作游標 json)
1. 單行函數
字符函數
CONCAT('Hello', 'World')
: 結果為'HelloWorld'
。SUBSTR('HelloWorld', 6, 5)
: 從第6位開始取5個字符,結果為'World'
。LENGTH('Hello')
: 返回字符串'Hello'
的長度,結果為5
。TRIM('H' FROM 'HHHelloHH')
: 移除字符串兩側的 ‘H’,結果為'Hello'
。LOWER('HELLO')
: 將字符串轉換為小寫,結果為'hello'
。UPPER('hello')
: 將字符串轉換為大寫,結果為'HELLO'
。REPLACE('2024 Happy New Year', '2024', '2025')
: 將字符串中的2024
替換為2025
,結果為'2025 Happy New Year'
。
數值函數
ROUND(123.4567, 2)
: 將123.4567
四舍五入到小數點后2位,結果為123.46
。TRUNC(123.4567, 2)
: 將123.4567
截斷到小數點后2位,結果為123.45
。ABS(-123.45)
: 返回-123.45
的絕對值,結果為123.45
。CEIL(123.45)
: 返回大于等于123.45
的最小整數,結果為124
。FLOOR(123.45)
: 返回小于等于123.45
的最大整數,結果為123
。
日期函數
SYSDATE
: 返回當前系統日期和時間,結果取決于系統時刻。ADD_MONTHS('01-JAN-2024', 1)
: 在日期01-JAN-2024
上加1個月,結果為01-FEB-2024
。LAST_DAY('15-JAN-2024')
: 返回JAN-2024
的最后一天,結果為31-JAN-2024
。MONTHS_BETWEEN('01-JAN-2024', '01-MAR-2024')
: 計算從01-MAR-2024
到01-JAN-2024
之間的月份差異,結果為-2
。NEXT_DAY('01-JAN-2024', 'FRIDAY')
: 返回01-JAN-2024
后的第一個星期五,日期取決于當年日歷。
2. 聚合函數(詳細)(三個不同)
SUM(column)
: 計算某列的總和。例如,在收入列上使用,可以計算總收入。AVG(column)
: 計算某列的平均值。例如,計算所有員工的平均薪資。MAX(column)
: 找出某列的最大值。例如,找出最高的訂單金額。MIN(column)
: 找出某列的最小值。例如,找出最低的庫存量。COUNT(column)
: 計算某列的非空值數量。例如,計算有多少員工有郵箱地址。
3. 轉換函數
TO_CHAR(SYSDATE, 'YYYY-MM-DD')
: 將當前日期轉換為'YYYY-MM-DD'
格式的字符串。TO_NUMBER('123.45', '999.99')
: 將字符串'123.45'
轉換為數字。TO_DATE('01-JAN-2024', 'DD-MON-YYYY')
: 將字符串'01-JAN-2024'
轉換為日期類型。
4. 分析函數
ROW_NUMBER() OVER (ORDER BY salary DESC)
: 對所有員工按薪資降序排列,并給每個員工分配一個唯一的行號。RANK() OVER (ORDER BY score DESC)
: 在成績表中,對學生的分數進行排名,相同分數的學生排名相同。DENSE_RANK() OVER (ORDER BY score DESC)
: 類似RANK
,但排名將連續不留空。
5. 空值處理函數(詳細)
NVL(NULL, 'default')
: 如果第一個表達式是NULL
,返回'default'
。COALESCE(NULL, NULL, 'first_non_null')
: 返回參數列表中的第一個非空表達式,結果為'first_non_null'
。NULLIF('A', 'B')
: 如果兩個表達式不相等,返回第一個表達式,結果為'A'
;如果相等,則返回NULL
。
MySQL數據庫函數
1. 字符串函數
CONCAT(str1, str2, ...)
: 連接兩個或多個字符串。例如:CONCAT('Hello', ' ', 'World')
返回'Hello World'
。LENGTH(str)
: 返回字符串的長度。例如:LENGTH('Hello')
返回5
。LOWER(str)
: 將字符串轉換為小寫。例如:LOWER('HELLO')
返回'hello'
。UPPER(str)
: 將字符串轉換為大寫。例如:UPPER('hello')
返回'HELLO'
。REPLACE(str, from_str, to_str)
: 在字符串中替換子串。例如:REPLACE('Hello World', 'World', 'MySQL')
返回'Hello MySQL'
。SUBSTRING(str, pos, len)
: 從字符串中提取子串。例如:SUBSTRING('Hello World', 7, 5)
返回'World'
。TRIM(str)
: 去除字符串兩側的空格。例如:TRIM(' Hello ')
返回'Hello'
。
2. 數值函數
ROUND(number, decimals)
: 對數值進行四舍五入。例如:ROUND(123.4567, 2)
返回123.46
。FLOOR(number)
: 返回不大于數值的最大整數。例如:FLOOR(123.45)
返回123
。CEIL(number)
: 返回不小于數值的最小整數。例如:CEIL(123.45)
返回124
。ABS(number)
: 返回數值的絕對值。例如:ABS(-123)
返回123
。
3. 日期和時間函數
CURDATE()
: 返回當前日期。例如,如果今天是 2024-04-10,則CURDATE()
返回2024-04-10
。NOW()
: 返回當前日期和時間。例如,如果現在是 2024-04-10 12:34:56,則NOW()
返回2024-04-10 12:34:56
。DATEDIFF(date1, date2)
: 返回兩個日期之間的天數。例如:DATEDIFF('2024-04-10', '2024-04-01')
返回9
。DATE_ADD(date, INTERVAL expr type)
: 給定日期加上一個時間間隔。例如:DATE_ADD('2024-01-01', INTERVAL 1 MONTH)
返回2024-02-01
。
4. 條件表達式
IF(expr1, expr2, expr3)
: 如果expr1
為真,則返回expr2
;否則返回expr3
。例如:IF(1>0, 'true', 'false')
返回'true'
。CASE WHEN condition THEN result [WHEN ...] [ELSE result] END
: 條件選擇語句。例如:CASE WHEN 1>0 THEN 'true' ELSE 'false' END
返回'true'
。
5. 聚合函數
SUM(column)
: 計算數值列的總和。例如,在銷售表中,SUM(price)
可以計算總銷售額。AVG(column)
: 計算數值列的平均值。例如:AVG(price)
可以計算平均銷售價格。MAX(column)
: 返回列中的最大值。例如:MAX(price)
可以找到最高的銷售價格。MIN(column)
: 返回列中的最小值。例如:MIN(price)
可以找到最低的銷售價格。COUNT(column)
: 返回列中非NULL值的數量。例如:COUNT(*)
可以計算表中的行數。
6. 其他有用的函數
COALESCE(value1, value2, ...)
: 返回參數列表中的第一個非NULL值。例如:COALESCE(NULL, NULL, 'first_non_null', NULL)
返回'first_non_null'
。NULLIF(value1, value2)
: 如果兩個值相等則返回NULL,否則返回第一個值。例如:NULLIF('A', 'B')
返回'A'
;NULLIF('A', 'A')
返回NULL
。
PostgreSQL數據庫函數
1. 字符串函數
CONCAT(str1, str2, ...)
: 連接兩個或多個字符串。例如:CONCAT('Hello', ' ', 'World')
返回'Hello World'
。LENGTH(str)
: 返回字符串的長度。例如:LENGTH('Hello')
返回5
。LOWER(str)
: 將字符串轉換為小寫。例如:LOWER('HELLO')
返回'hello'
。UPPER(str)
: 將字符串轉換為大寫。例如:UPPER('hello')
返回'HELLO'
。REPLACE(str, from_str, to_str)
: 在字符串中替換子串。例如:REPLACE('Hello World', 'World', 'PostgreSQL')
返回'Hello PostgreSQL'
。SUBSTRING(str FROM start FOR length)
: 從字符串中提取子串。例如:SUBSTRING('Hello World' FROM 7 FOR 5)
返回'World'
。TRIM([LEADING | TRAILING | BOTH] [characters] FROM str)
: 去除字符串兩側的指定字符。例如:TRIM(' Hello ')
返回'Hello'
。
2. 數值函數
ROUND(value, precision)
: 對數值進行四舍五入到指定的小數位數。例如:ROUND(123.4567, 2)
返回123.46
。FLOOR(value)
: 返回不大于數值的最大整數。例如:FLOOR(123.45)
返回123
。CEILING(value)
: 返回不小于數值的最小整數。例如:CEILING(123.45)
返回124
。ABS(value)
: 返回數值的絕對值。例如:ABS(-123)
返回123
。
3. 日期和時間函數
CURRENT_DATE
: 返回當前日期。例如:CURRENT_DATE
。CURRENT_TIMESTAMP
: 返回當前日期和時間。例如:CURRENT_TIMESTAMP
。AGE(timestamp1, timestamp2)
: 返回兩個日期之間的間隔。例如:AGE(TIMESTAMP '2024-04-10', TIMESTAMP '2024-01-01')
返回'3 mons 9 days'
。DATE_PART('field', timestamp)
: 提取日期的指定部分。例如:DATE_PART('year', TIMESTAMP '2024-04-10')
返回2024
。
4. 條件表達式
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END
: 條件選擇語句。例如:CASE WHEN 1>0 THEN 'true' ELSE 'false' END
返回'true'
。COALESCE(value1, value2, ...)
: 返回參數列表中的第一個非NULL值。例如:COALESCE(NULL, NULL, 'first_non_null', NULL)
返回'first_non_null'
。NULLIF(value1, value2)
: 如果兩個值相等則返回NULL,否則返回第一個值。例如:NULLIF('A', 'B')
返回'A'
;NULLIF('A', 'A')
返回NULL
。
5. 聚合函數
SUM(column)
: 計算數值列的總和。例如,SUM(price)
可以計算總銷售額。AVG(column)
: 計算數值列的平均值。例如:AVG(price)
可以計算平均銷售價格。MAX(column)
: 返回列中的最大值。例如:MAX(price)
可以找到最高的銷售價格。MIN(column)
: 返回列中的最小值。例如:MIN(price)
可以找到最低的銷售價格。COUNT(column)
: 返回列中非NULL值的數量。例如:COUNT(*)
可以計算表中的行數。
6. 數組函數
ARRAY_LENGTH(array, dimension)
: 返回數組在指定維度的長度。例如:ARRAY_LENGTH(ARRAY[1,2,3,4], 1)
返回4
。ARRAY_APPEND(array, element)
: 向數組添加元素。例如:ARRAY_APPEND(ARRAY[1,2,3], 4)
返回{1,2,3,4}
。
7. 地理空間函數(GIS)
ST_Area(geom)
: 計算地理對象的面積。例如:ST_Area(ST_GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))
返回1.0
。