SQL常用語句收集

--語 句         功 能

--數據操作
SELECT   --從數據庫表中檢索數據行和列 
INSERT   --向數據庫表添加新數據行 
DELETE   --從數據庫表中刪除數據行 
UPDATE   --更新數據庫表中的數據 

--數據定義

CREATE TABLE  --創建一個數據庫表 
DROP TABLE   --從數據庫中刪除表 
ALTER TABLE   --修改數據庫表結構 
CREATE VIEW   --創建一個視圖 
DROP VIEW   --從數據庫中刪除視圖 
CREATE INDEX  --爲數據庫表創建一個索引 
DROP INDEX   --從數據庫中刪除索引 
CREATE PROCEDURE  --創建一個存儲過程 
DROP PROCEDURE  --從數據庫中刪除存儲過程 
CREATE TRIGGER  --創建一個觸發器 
DROP TRIGGER  --從數據庫中刪除觸發器 
CREATE SCHEMA  --向數據庫添加一個新模式 
DROP SCHEMA   --從數據庫中刪除一個模式 
CREATE DOMAIN  --創建一個數據值域 
ALTER DOMAIN  --改變域定義 
DROP DOMAIN   --從數據庫中刪除一個域 

 --數據控制

GRANT   --授予用戶訪問權限 
DENY   --拒絕用戶訪問 
REVOKE   --解除用戶訪問權限 

--事務控制

COMMIT   --結束當前事務 
ROLLBACK   --中止當前事務 
SET TRANSACTION  --定義當前事務數據訪問特徵 

--程序化SQL

DECLARE   --爲查詢設定遊標 
EXPLAN   --爲查詢描述數據訪問計劃 
OPEN   --檢索查詢結果打開一個遊標 
FETCH   --檢索一行查詢結果 
CLOSE   --關閉遊標 
PREPARE   --爲動態執行準備SQL 語句 
EXECUTE   --動態地執行SQL 語句 
DESCRIBE   --描述準備好的查詢 

---局部變量

declare @id char(10
--set @id = ’10010001’ 
select @id = ’10010001

---全局變量
---必須以@@開頭

 

--IF ELSE 
declare @x int @y int @z int 
select @x = 1 @y = 2 @z=3 
if @x > @y 
print ’x > y’ --打印字符串’x > y’ 
else if @y > @z 
print ’y > z’ 
else print ’z > y’ 

--CASE 
use pangu 
update employee 
set e_wage = 
case 
 
when job_level = ’1’ then e_wage*1.08 
 
when job_level = ’2’ then e_wage*1.07 
 
when job_level = ’3’ then e_wage*1.06 
 
else e_wage*1.05 
end 

--WHILE CONTINUE BREAK 
declare @x int @y int @c int 
select @x = 1 @y=1 
while @x < 3 
begin 
 
print @x --打印變量x 的值 
 while @y < 3 
  
begin 
  
select @c = 100*@x + @y 
  
print @c --打印變量c 的值 
  select @y = @y + 1 
  
end 
 
select @x = @x + 1 
 
select @y = 1 
end 

--WAITFOR 
--
例 等待1 小時2 分零3 秒後才執行SELECT 語句 
waitfor delay ’01:02:03’ 
select * from employee 
--例 等到晚上11 點零8 分後才執行SELECT 語句 
waitfor time ’23:08:00’ 
select * from employee 


***SELECT*** 

  
select *(列名) from table_name(表名) where column_name operator value 
  ex:(宿主) 
 
select * from stock_information where stockid  = str(nid) 
   stockname 
= ’str_name’ 
   stockname 
like ’% find this %’ 
   stockname 
like ’[a-zA-Z]%’ --------- ([]指定值的範圍) 
   stockname like ’[^F-M]%’  --------- (^排除指定範圍) 
   --------- 只能在使用like關鍵字的where子句中使用通配符) 
   or stockpath = ’stock_path’ 
   
or stocknumber < 1000 
   
and stockindex = 24 
   
not stocksex = ’man’ 
   stocknumber 
between 20 and 100 
   stocknumber 
in(10,20,30
   
order by stockid desc(asc--------- 排序,desc-降序,asc-升序 
   order by 1,2 --------- by列號 
   stockname = (select stockname from stock_information where stockid = 4
   
--------- 子查詢 
   --------- 除非能確保內層select只返回一個行的值, 
   --------- 否則應在外層where子句中用一個in限定符 
 select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重複 
 select stocknumber ,"stocknumber + 10= stocknumber + 10 from table_name 
 
select stockname , "stocknumber" = count(*from table_name group by stockname 
                   
--------- group by 將表按行分組,指定列中有相同的值 
     having count(*= 2 --------- having選定指定的組 
     
 
select * 
 
from table1, table2          
 
where table1.id *= table2.id -------- 左外部連接,table1中有的而table2中沒有得以null表示 
   table1.id =* table2.id -------- 右外部連接 

 
select stockname from table1 
 
union [all] ----- union合併查詢結果集,all-保留重複行 
 select stockname from table2 

***insert*** 

 
insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx") 
       value (
select Stockname , Stocknumber from Stock_table2)---value爲select語句 

***update*** 

 
update table_name set Stockname = "xxx" [where Stockid = 3] 
     Stockname 
= default 
     Stockname 
= null 
     Stocknumber 
= Stockname + 4 

***delete*** 

 
delete from table_name where Stockid = 3 
 
truncate table_name ----------- 刪除表中所有行,仍保持表的完整性 
 drop table table_name --------------- 完全刪除表 

***alter table*** --- 修改數據庫表結構 

 
alter table database.owner.table_name add column_name char(2null ..... 
 sp_help table_name 
---- 顯示錶已有特徵 
 create table table_name (name char(20), age smallint, lname varchar(30)) 
 
insert into table_name select ......... ----- 實現刪除列的方法(創建新表) 
 alter table table_name drop constraint Stockname_default ---- 刪除Stockname的default約束 

***function(/*常用函數*/)***

AVG  --求平均值 
COUNT  --統計數目 
MAX  --求最大值 
MIN  --求最小值 
SUM  --求和 

--AVG 
use pangu 
select avg(e_wage) as dept_avgWage 
from employee 
group by dept_id 

--MAX 
--
求工資最高的員工姓名 
use pangu 
select e_name 
from employee 
where e_wage = 
(
select max(e_wage) 
 
from employee) 

--STDEV() 
--
STDEV()函數返回表達式中所有數據的標準差 

--STDEVP() 
--
STDEVP()函數返回總體標準差 

--VAR() 
--
VAR()函數返回表達式中所有值的統計變異數 

--VARP() 
--
VARP()函數返回總體變異數 

----算術函數----
/***三角函數***/ 
SIN(float_expression) --返回以弧度表示的角的正弦 
COS(float_expression) --返回以弧度表示的角的餘弦 
TAN(float_expression) --返回以弧度表示的角的正切 
COT(float_expression) --返回以弧度表示的角的餘切 
/***反三角函數***/ 
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角 
ACOS(float_expression) --返回餘弦是FLOAT 值的以弧度表示的角 
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角 
ATAN2(float_expression1,float_expression2) 
    
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角 
DEGREES(numeric_expression) 
            
--把弧度轉換爲角度返回與表達式相同的數據類型可爲 
    --INTEGER/MONEY/REAL/FLOAT 類型 
RADIANS(numeric_expression) --把角度轉換爲弧度返回與表達式相同的數據類型可爲 
    --INTEGER/MONEY/REAL/FLOAT 類型 
EXP(float_expression) --返回表達式的指數值 
LOG(float_expression) --返回表達式的自然對數值 
LOG10(float_expression)--返回表達式的以10 爲底的對數值 
SQRT(float_expression) --返回表達式的平方根 
/***取近似值函數***/ 
CEILING(numeric_expression) --返回>=表達式的最小整數返回的數據類型與表達式相同可爲 
    --INTEGER/MONEY/REAL/FLOAT 類型 
FLOOR(numeric_expression)  --返回<=表達式的最小整數返回的數據類型與表達式相同可爲 
    --INTEGER/MONEY/REAL/FLOAT 類型 
ROUND(numeric_expression)  --返回以integer_expression 爲精度的四捨五入值返回的數據 
    --類型與表達式相同可爲INTEGER/MONEY/REAL/FLOAT 類型 
ABS(numeric_expression)   --返回表達式的絕對值返回的數據類型與表達式相同可爲 
    --INTEGER/MONEY/REAL/FLOAT 類型 
SIGN(numeric_expression)   --測試參數的正負號返回0 零值1 正數或-1 負數返回的數據類型 
    --與表達式相同可爲INTEGER/MONEY/REAL/FLOAT 類型 
PI()    --返回值爲π 即3.1415926535897936 
RAND([integer_expression])  --用任選的[integer_expression]做種子值得出0-1 間的隨機浮點數 

----字符串函數----
ASCII()     --函數返回字符表達式最左端字符的ASCII 碼值 
CHAR()  --函數用於將ASCII 碼轉換爲字符 
  --如果沒有輸入0 ~ 255 之間的ASCII 碼值CHAR 函數會返回一個NULL 值 
LOWER()  --函數把字符串全部轉換爲小寫 
UPPER()  --函數把字符串全部轉換爲大寫 
STR()  --函數把數值型數據轉換爲字符型數據 
LTRIM()  --函數把字符串頭部的空格去掉 
RTRIM()  --函數把字符串尾部的空格去掉 
LEFT(),RIGHT(),SUBSTRING() --函數返回部分字符串 
CHARINDEX(),PATINDEX() --函數返回字符串中某個指定的子串出現的開始位置 
SOUNDEX() --函數返回一個四位字符碼 
  --SOUNDEX函數可用來查找聲音相似的字符串但SOUNDEX函數對數字和漢字均只返回0 值   
DIFFERENCE()  --函數返回由SOUNDEX 函數返回的兩個字符表達式的值的差異 
  --0 兩個SOUNDEX 函數返回值的第一個字符不同 
  --1 兩個SOUNDEX 函數返回值的第一個字符相同 
  --2 兩個SOUNDEX 函數返回值的第一二個字符相同 
  --3 兩個SOUNDEX 函數返回值的第一二三個字符相同 
  --4 兩個SOUNDEX 函數返回值完全相同 
                    

QUOTENAME() --函數返回被特定字符括起來的字符串 
/*select quotename(’abc’, ’{’) quotename(’abc’) 
運行結果如下 
----------------------------------{ 
{abc} [abc]
*/
 

REPLICATE()   --函數返回一個重複character_expression 指定次數的字符串 
/*select replicate(’abc’, 3) replicate( ’abc’, -2) 
運行結果如下 
----------- ----------- 
abcabcabc NULL
*/
 

REVERSE()    --函數將指定的字符串的字符排列順序顛倒 
REPLACE()    --函數返回被替換了指定子串的字符串 
/*select replace(’abc123g’, ’123’, ’def’) 
運行結果如下 
----------- ----------- 
abcdefg
*/
 

SPACE()  --函數返回一個有指定長度的空白字符串 
STUFF()  --函數用另一子串替換字符串指定位置長度的子串 

----數據類型轉換函數----
CAST() 函數語法如下 
CAST() (<expression> AS <data_ type>[ length ]
CONVERT() 函數語法如下 
CONVERT() (<data_ type>[ length ]<expression> [, style]

select cast(100+99 as charconvert(varchar(12), getdate()) 
運行結果如下 
------------------------------ ------------ 
199  Jan 15 2000 

----日期函數----
DAY()  --函數返回date_expression 中的日期值 
MONTH()  --函數返回date_expression 中的月份值 
YEAR()  --函數返回date_expression 中的年份值 
DATEADD(<datepart> ,<number> ,<date>
  
--函數返回指定日期date 加上指定的額外日期間隔number 產生的新日期 
DATEDIFF(<datepart> ,<number> ,<date>
  
--函數返回兩個指定日期在datepart 方面的不同之處 
DATENAME(<datepart> , <date>) --函數以字符串的形式返回日期的指定部分 
DATEPART(<datepart> , <date>) --函數以整數值的形式返回日期的指定部分 
GETDATE() --函數以DATETIME 的缺省格式返回系統當前的日期和時間 
----系統函數----
APP_NAME()   --函數返回當前執行的應用程序的名稱 
COALESCE() --函數返回衆多表達式中第 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章