插入語句
INSERT INTO [TABLE_NAME] (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);
修改語句
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
洗掉語句
DELETE FROM [table_name] WHERE [condition];
資料的查詢
SELECT column1, column2, columnN FROM table_name;
- 資料查詢
(一)簡單查詢
1、基本查詢
從表中查詢某些列的值,這是最基本的查詢陳述句:
SELECT 列名1,列名2 FROM 表名
2、Where(條件)
按照一定的條件查詢資料
SELECT 列名1,列名2 FROM 表名 WHERE 列名1 運算子 值
例:SELECT MC FROM [GALAXY].[dbo].[LACK_EMAIL] WHERE MC = '126'
| = | 等于 | ||||||||||
| <> | 不等于 | ||||||||||
| > | 大于 | ||||||||||
| < | 小于 | ||||||||||
| >= | 大于等于 | ||||||||||
| <= | 小于等于 | ||||||||||
| BETWEEN | 在某個范圍內 在兩個值之間,比如我從學生中查詢年齡在18-20之間的學生資訊 例:SELECT MC,MC_NAME,OPID FROM [GALAXY].[dbo].[LACK_EMAIL] WHERE MC BETWEEN '126' AND '140' | ||||||||||
| LIKE |
作用:模糊查詢,LIKE關鍵字與通配符一起使用 | ||||||||||
| AND | AND 在 WHERE 子陳述句中把兩個或多個條件結合起來,表示和的意思,多個條件都成立 例:SELECT MC,MC_NAME,OPID,email,memail FROM [GALAXY].[dbo].[LACK_EMAIL] WHERE MC>'136' and MC_NAME LIKE '葉%' | ||||||||||
| OR | OR可在 WHERE 子陳述句中把兩個或多個條件結合起來,或關系,表示多個條件,只有一個符合即可, 例: SELECT MC,MC_NAME,OPID,email,memail FROM [GALAXY].[dbo].[LACK_EMAIL] WHERE MC>'136' OR MC_NAME LIKE '葉%' | ||||||||||
| NOT | NOT對于條件的否定,取非, 例:SELECT MC,MC_NAME,OPID,email,memail FROM [GALAXY].[dbo].[LACK_EMAIL] WHERE MC_NAME NOT LIKE '葉%' | ||||||||||
| IN | IN 運算子允許我們在 WHERE 子句中規定多個值,表示:在哪些值當中, 例:查詢年齡是18、19、20的學生資訊 SELECT ID,Name FROM Students WHERE Age IN (18,19,20) |
3.ORDER BY(排序)
對需要查詢后的結果進行排序
例: SELECT MC,MC_NAME,OPID,email,memail FROM [GALAXY].[dbo].[LACK_EMAIL] ORDER BY MC ASC
| 標識 | 含義 | 說明 |
| ASC | 升序 | 默認 |
| DESC | 倒序 |
4.AS(Alias 別名)
我們可以將查詢的列,或者表指定需要的名字,如表名太長,用其簡稱,在連表查詢中經常用到,
1) 將結果列改為需要的名稱
例:SELECT ID AS StudentID,Name AS StudentName FROM Students
2)用表名的別名,標識列的來源
例:SELECT S.ID,S.Name,M.Name AS MajorName FROM Students AS S LEFT JOIN Majors AS MON S.MajorID = M.ID
3)在合計函式中,給合計結果命名
例:SELECT COUNT(ID) AS StudentCount FROM Students
5、Distinct
查詢時忽略重復值,
SELECT DISTINCT 列名稱 FROM 表名稱
- 查詢學生所在城市名,排除重復
例:SELECT DISTINCT City FROM Student
- 查詢成績分布分布情況
例: SELECT DISTINCT(Score),Count(ID) FROM Student GROUP BY Score
6、MAX/MIN
MAX 函式回傳一列中的最大值,NULL 值不包括在計算中,
MIN 函式回傳一列中的最小值,NULL 值不包括在計算中,
例:SELECT MIN (MC) FROM [GALAXY].[dbo].[LACK_EMAIL]
7、AVG
AVG 函式回傳數值列的平均值
例:SELECT AVG(Score) FROM SC WHERE CourseID='C001'
8.COUNT
COUNT() 函式回傳匹配指定條件的行數,
例:SELECT COUNT (city) FROM [dbo].[userInfo]
9、GROUP BY
GROUP BY 陳述句用于結合合計函式,根據一個或多個列對結果集進行分組,
例:SELECT City,COUNT(ID) FROM Students GROUP BY City

10、HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函式一起使用,
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
例:查詢平均成績大于等于60,且學生ID等于1的學生的ID及平均成績,
SELECT StudentID,AVG(Score)
FROM SC
WHERE StudentID='1'
GROUP BY StudentID
HAVING AVG(Score)>=60
11、TOP
TOP 子句用于規定要回傳的記錄的數目,對于大資料很有用的,在分頁時也會常常用到,
例:查詢年齡最大的三名學生資訊
SELECT TOP 3 ID,Name FROM Students ORDER BY Age DESC
或
SELECT ID,Name,Age FROM Students WHERE Age IN (SELECT TOP 3 Age FROM Students)
12.CASE語句
計算條件串列,并回傳多個可能的結果運算式之一,
CASE 運算式有兩種格式:
CASE 簡單運算式,它通過將運算式與一組簡單的運算式進行比較來確定結果
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ] END
CASE 搜索運算式,它通過計算一組布爾運算式來確定結果
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ] END
例:查詢學生資訊,根據年齡統計是否成年,大于等于18為成年,小于18為未成年
SELECT ID, Name, CASE WHEN Age>=18 THEN '成年' ELSE '未成年'END AS 是否成年FROM Students

例:統計男女生中未成年、成年的人數
SELECT CASE WHEN Sex=0 THEN '男' ELSE '女' END AS '性別',
SUM(CASE WHEN Age<18 THEN 1 ELSE 0 END) AS '未成年',
SUM(CASE WHEN Age>=18 THEN 1 ELSE 0 END) AS '成年'
FROM StudentsGROUP BY Sex

- 連表查詢
- Union
UNION 運算子用于合并兩個或多個 SELECT 陳述句的結果集,
UNION 運算子通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表,
當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行,兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2,
注意:使用UNION時,兩張表查詢的結果有相同數量的列、列型別相似,
例:基本UNION查詢,查詢學校教師、學生的總的資訊表,包括ID和姓名
SELECT ID,Name FROM Students
UNION
SELECT ID,Name FROM Teachers

2.INNER JOIN
INNER JOIN(內連接),也成為自然連接
作用:根據兩個或多個表中的列之間的關系,從這些表中查詢資料,
注意: 內連接是從結果中洗掉其他被連接表中沒有匹配行的所有行,所以內連接可能會丟失資訊,
重點:內連接,只查匹配行,
SELECT fieldlist
FROM table1
[INNER](可省)
join table2
ON table1.column=table2.column
例:實體:查詢學生資訊,包括ID,姓名、專業名稱
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students INNER JOIN Majors
ON Students.MajorID = Majors.ID

3.外連接
與內連接相比,即使沒有匹配行,也會回傳一個表的全集,
(內連接的兩個表只會回傳匹配起的行,但是外連接,以左外連接為例,左邊的那個表將會回傳所有行,無論是否匹配,不能匹配的用null占位,右邊的只會回傳匹配的行)
(1)LEFT JOIN 左外連接
結果集保留左表的所有行,但只包含第二個表與第一表匹配的行,第二個表相應的空行被放入NULL值,
例:使用左連接查詢學生的資訊,其中包括學生ID,學生姓名和專業名稱,
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students LEFT JOIN Majors
ON Students.MajorID = Majors.ID

(2)RIGHT JOIN 右外連接
(3)FULL JOIN 全連接
會把兩個表所有的行都顯示在結果表中
例:使用全連接查詢學生的資訊,其中包括學生ID,學生姓名和專業名稱,
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students FULL JOIN Majors
ON Students.MajorID = Majors.ID

4、CROSS JOIN
交叉連接,交叉連接回傳左表中的所有行,左表中的每一行與右表中的所有行組合,交叉連接也稱作笛卡爾積,
笛卡兒積:笛卡爾乘積,也叫直積,假設集合A={a,b},集合B={0,1,2},則兩個集合的笛卡爾積為{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)},可以擴展到多個集合的情況,類似的例子有,如果A表示某學校學生的集合,B表示該學校所有課程的集合,則A與B的笛卡爾積表示所有可能的選課情況,
例:交叉連接查詢學生的資訊,其中包括學生ID,學生姓名和專業名稱,
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students CROSS JOIN Majors

- 資料洗掉
- delete
洗掉表中的行:delete陳述句執行洗掉的程序是每次從表中洗掉一行,并且同時將該行的洗掉操作作為事務記錄在日志中保存
DELETE FROM 表名稱 WHERE 列名稱 = 值,
例:delete from [test].[dbo].[userInfo] where username = '2'
2.Drop
洗掉表:洗掉內容和定義,釋放空間,簡單來說就是把整個表去掉.以后要新增資料是不可能的,除非新增一個表,
3.Truncate
清空表中的資料:洗掉內容、釋放空間但不洗掉定義(保留表的資料結構),與drop不同的是,只是清空表資料而已,
注意:truncate 不能洗掉行資料,要刪就要把表清空,
- 資料增加
- INSERT INTO
用于向表格中插入新的行,
INSERT INTO 表名稱 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例:INSERT INTO [test].[dbo].[person](name,age,sex) VALUES ('liliya',20,'男')
- 資料修改
1、UPDATE
修改表中現有的記錄
UPDATE [table_name]
SET column1 = value1, column2 = value2...., columnN = valueN
例:UPDATE [test].[dbo].[person] set name = 'jan' where name = 'JAN'
- 函數
1、concat()函式
功能:將多個字串連接成一個字串,
語法:concat(str1, str2,…)
例:SELECT a.inputid,concat('DDBI',a.inputid) AS CustomsNumber,a.vendorcode, a.vendorname,b.operationtime,
(CASE WHEN a.state ='10' THEN '暫存'
WHEN a.state ='20' THEN '人工審核中'
WHEN a.state ='30' THEN '審核通過'
WHEN a.state ='40' THEN '退件'
WHEN a.state ='50' THEN '海關通過'
ELSE '例外' END) AS state
FROM i90005_imagerecognition_head a INNER JOIN i90005_imagerecognition_flow b
on a.inputid = b.inputid
where a.vendorcode = 'MS112CN3' and b.state = '10'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423970.html
標籤:其他
下一篇:doris生產使用記錄
