增
-
增加單條資料
insert into Department(DepartmentName,DepartmentDesc) values('研發部','這是研發部')--插入單條資料
-
多條
/*insert into [Rank](RankName,RankDesc) select 'A','A級'union select 'B','B級'union select 'C','C級' --插入多條資料 */
刪
-
語法
delete from 表名 where 條件
-
刪除員工表所有記錄
delete from Employee
-
刪除研發部中工資大於10000的員工
update Employee set EmployeeSalary = 10000 where DepartmentId =1 and EmployeeSalary<=10000
-
--關於drop delete truncate
--drop 刪除表
--delete 可選刪,加入刪除自動編號為1,2,3資料,刪除資料後,編號將被永遠刪除,之後再新增資料編號從4,5,6開始
--truncate 必須全部刪除表中資料,清空資料後再新增編號依然從1,2,3開始
改
- 語法
update 表名 set 欄位1=值1,欄位2=值2 where 條件
-
工資調整,每個人工資增加1000
update Employee set EmployeeSalary +=1000
-
將員工編號為6的工資加100
update Employee set EmployeeSalary +=100 where EmployeeId = 6
-
將研發部工資低於10000的漲到10000
update Employee set EmployeeSalary = 10000 where DepartmentId =1 and EmployeeSalary<=10000
查
-
查詢所有列
select * from Department
-
查詢指定列
select EmployeeName,EmployeeSalary from Employee
-
指定查詢後的中文名
select EmployeeName 員工名,EmployeeSalary*1.2 加薪資後工資 from Employee
條件查詢
select * from Employee where EmployeeSalary>=10000 and EmployeeSalary<=20000
select * from Employee where EmployeeSalary between 10000 and 20000
- 排序
select * from Employee order by EmployeeSalary asc --預設為asc可不寫
select * from Employee order by EmployeeSalary desc --逆序
select top 5 * from Employee order by EmployeeSalary desc --工資最高的5個人
select top 10 percent * from Employee order by EmployeeSalary desc --工資最高的10%個人
-
null 查詢地址沒有填寫或填寫了地址的員工資訊
select * from Employee where EmployeeAddress is null select * from Employee where EmployeeAddress is not null select * from Employee where EmployeeAddress=''--空字串
-
查詢工資比大喬高的人的資訊
select * from Employee where EmployeeSalary>(select EmployeeSalary from Employee where EmployeeName = '大喬')
模糊查詢
like
與萬用字元搭配
萬用字元 含義
- % 包含零個或更多字元的任意字串。
_(下劃線) 任何單個字元。
[ ] 指定範圍(例如 [a-f])或集合(例如 [abcdef])內的任何單個字元。
[^] 不在指定範圍(例如 [^a - f])或集合(例如 [^abcdef])內的任何單個字元。
eg
- LIKE '趙%' 將搜尋姓趙的人名或者說以漢字‘趙’ 開頭的字串(如 趙剛、趙小剛等)。
LIKE '%剛' 將搜尋以漢字‘剛’結尾的所有字串(如 劉剛、李小剛等)。
LIKE '%小%' 將搜尋在任何位置包含漢字‘小’的所有字串(如趙小剛、李小剛、山本小郎等)。
LIKE '_小剛' 將搜尋以漢字“小剛”結尾的所有三個漢字的名稱(如 李小剛、趙小剛)。
select * from Employee where EmployeePhone like '183[0-5]%[^2,3]' --前三位為183,第四位為0-5,最後一位不是2,3
SUBSTRING
select * from Employee where SUBSTRING(EmployeeName,3,1) = '香' --從第三個位置擷取一個
聚合函式
-
AVG
在 SQL Server 中,
AVG()
函式是用於計算指定列中所有數值的平均值的聚合函式。 -
COUNT
在 SQL Server 中,
COUNT()
函式是用於計算指定列或表示式中的行數的聚合函式。 -
MAX
在 SQL Server 中,
MAX()
函式是用於計算指定列或表示式中最大值的聚合函式。 -
MIN
在 SQL Server 中,
MIN()
函式是用於計算指定列或表示式中最小值的聚合函式。 -
SUM
在 SQL Server 中,
SUM()
函式是一個聚合函式,用於計算指定列的數值之和。
綜合案例
select count(*) 員工總數,max(EmployeeSalary) 最高工資,min(EmployeeSalary) 最低工資,SUM(EmployeeSalary) 工資總和,ROUND(AVG(EmployeeSalary),3) 平均工資三位小數 from Employee
分組查詢
前言
要查詢武漢和重慶兩個城市的用聚合函式查詢的內容可以用union進行連線
union前後查詢的列要一樣
select count(*) 員工總數,max(EmployeeSalary) 最高工資,min(EmployeeSalary) 最低工資,SUM(EmployeeSalary) 工資總和,ROUND(AVG(EmployeeSalary),3) 平均工資三位小數 from Employee where EmployeeAddress = '武漢'union select count(*) 員工總數,max(EmployeeSalary) 最高工資,min(EmployeeSalary) 最低工資,SUM(EmployeeSalary) 工資總和,ROUND(AVG(EmployeeSalary),3) 平均工資三位小數 from Employee where EmployeeAddress = '四川'
查詢各個城市的員工資訊
- 用到分組函式group by
select EmployeeAddress 員工城市,count(*) 員工總數,max(EmployeeSalary) 最高工資,min(EmployeeSalary) 最低工資,SUM(EmployeeSalary) 工資總和,ROUND(AVG(EmployeeSalary),3) 平均工資三位小數 from Employee group by EmployeeAddress
-
前面的列不能放除了聚合函式和group by 外的列
-
加條件
有固定位置
普通條件>group by >聚合函式所使用的having
select EmployeeAddress 員工城市,count(*) 員工總數,max(EmployeeSalary) 最高工資,min(EmployeeSalary) 最低工資,SUM(EmployeeSalary) 工資總和,ROUND(AVG(EmployeeSalary),3) 平均工資三位小數 from Employee where RanId = 1 group by EmployeeAddress having COUNT(*)>1