SQL 經常使用語法

記錄日常用到的SQL語句寫法及用法數據庫

SQL server數據庫設計

基礎用法部分:ide

1.添加字段函數

ALTER table [TableName] add [字段名稱] 字段類型  ; 
ALTER table [sale_plan] add addr_no nvarchar(50) null ; 

 2. 刪除字段工具

--刪除 "Person" 表中的 "Birthday" 列
ALTER TABLE Person DROP COLUMN Birthday ;

3. 更改字段類型spa

ALTER TABLE Persons
ALTER COLUMN Name nvarchar(50) 

4. 建立表設計

CREATE TABLE Persons
(
   Id_P int  IDENTITY(1,1) NOT NULL, --主鍵自增
   LastName varchar(255) NOT NULL,  --不爲空
   FirstName varchar(255),
   Address varchar(255),
   City varchar(255)
)

5. 插入數據3d

--語法
--INSERT INTO 表名稱 VALUES (值1, 值2,....)
--INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

 6. 更新字段的值帶有單引號時 '  的處理方式 code

update tableA columns1 = 'M''s ABC' where id = 1 ;
-- columns1的值在數據庫中顯示爲: M's ABC

 7. 查詢出一個表的數據插入到另一張表server

select * into destTbl from srcTbl ;
insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl ;
--以上兩句都是將 srcTbl 的數據插入到 destTbl,但兩句又有區別的:
--第一句(select into from)要求目標表(destTbl)不存在,由於在插入時會自動建立。
--第二句(insert into select from)要求目標表(destTbl)存在,因爲目標表已經存在,因此咱們除了插入源表(srcTbl)的字段外,還能夠插入常量,如例中的:5。

 

 8. 不肯定字段查詢和更新

1 select * from where 1=1 ;
2 
3 update Table set columu1=column1 ... where ... ;

 

9.SQL Server 分頁;

 //若搜索則重新生成rownum (當前生成的rownum不能做爲where後面的條件)

SELECT T.* FORM( select ROW_NUMBER() OVER(ORDER BY A.createDate asc ) AS sortNum,A.*  from TableA where 1=1) T
where T.sortNum> 10 and T.sortNum <=11;

 

 10. SQL Server 插入長文本;

注意:SQL自己是沒有限制長度的,插入數據後,使用select 查詢出來,直接複製vnarchar(max)字段,是複製不全的,須要導出到*.csv文件中才能查看到完整的值;

ALTER TABLE WriteBackDataLog 
ALTER COLUMN Payload varchar(MAX); 

 以下圖,copy不出完整payload字段的值,save results as 可將完整的數據導出來!

 

 

 


 11. 添加主鍵:

alter table Scrap_Info add id numeric(18,0) identity(1,1)

12. SQL Server Management Studio 修改表字段順序

在 Microsoft SQL Server Management Studio 中:
    a). 工具->選項->Designers->表設計器和數據庫設計器->將「阻止保存要求從新建立表的更改」的選項的勾去掉。
    b). 右鍵單擊你要更改的數據表,點選「設計」,而後在表設計器中用鼠標拖動各列的位置,最後保存便可。

 

 

 

 

經常使用部分:

1.查詢當前時間: select GETDATE() ;

2.查詢非表字段寫法: 

select columns1, columns2, '' as otherColumns , 123 as tempColumns from Table ;

3. distinct 用法,distinct 必須用在select 後面的第一個位置, distinct後面出現的字段也會去重(columnsA的值相同,columnsB不一樣會做爲結果分別查出來 );

select distinct columnsA , columnsB from Table ;

4.字段爲空 ISNULL()函數的使用

--查詢出姓名爲空的記錄
select * from Person where ISNULL(name,'') =''  ;

5. case when 

 

6.having 在 SQL 中增長 HAVING 子句緣由是,WHERE 關鍵字沒法與合計函數一塊兒使用。

 

--查找訂單總金額少於 2000 的客戶
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

 7.left join

  左連接,作表所有顯示,無論右表有沒有匹配項;  左表的一條記錄,好比右表有2條知足on的匹配條件,就會出現2條記錄。

select tableA.*,tableB.addr
tableA left join tableB on tableA.addrID=tableB.addrID
where tableA.id=1;

   (tableA爲學生表,tableB爲地址表,tableA中的addrID在tableB裏有兩個相同的addrID,則查詢結果就會出現一個學生對應兩個地址,出現兩條查詢結果)

 8. inner join

若是表結果以下: inner join 第二表中on的條件中有兩條匹配項,查詢結果就會出現兩條記錄;注意不能join後使用group by 來統計數量,這個統計出來的數據是錯誤的。

        

  以下:若是先join 再統計,顯然統計錯誤;應該先統計出來後,再匹配過濾 select name,sum(quality) from Lw_T1 group by name ;

           

 

 9. SQL拼接字段的值 

相關文章
相關標籤/搜索