SQL 筆記彙總

基本語法(增,刪,改,查)
1、新增
--1.1 增長數據的語法(增)
insert into 表名 (列名,列名,...)
values (值,值,...)

--1.2 簡化的增長數據的語法
insert into 表名
values (值,值,...)        ---注:此時值必須和表中列名對應,而且不能省略值

--1.3 一次插入多行數據(增)
insert into 代表
select 值,值,...           --不須要小括號,此時輸入的default是無效的,必須手動填默認值
union                        --表示用於組合先後兩條插入語句
select 值,值,...

--1.4 將現有表中的數據添加到已存在的表中(新表以前存在)(增)
insert into 已存在新表名 (列名,列名)
select 列名,列名,
from 現有表名

--1.5 將現有表中的數據添加到新表中(新表以前不存在)(增)
select 列名,列名,...
into 新表
from 原表


2、更新數據
--2.1 更新數據(改)
update 表名 set 列名=更新值,列名=更新值
where 更新條件(可省略,意思是知足這個條件後執行更新) 
--2.2 更新的數據來源於其餘表
UPDATE a SET a.要更新的列名=b.更新的值  from tbA a LEFT JOIN  tbB b
ON a.ID=b.FID -- WHERE A.Process=6

--2.3 更新的數據來源於本表的其餘行 屬性不一樣的值
UPDATE a SET a.Money=a.Money+b.Money  from dbo.tb_InExpen a LEFT JOIN  tb_InExpen b
ON a.ManifestID=b.ManifestID WHERE A.Abstract=6 AND B.Abstract=9 

3、刪除數據 
--3.1 刪除數據(刪)
delete from 表名
where 條件表達式        --若是知足此條件就能夠傷處
  
--3.2 刪除數據(刪)
truncate table 表名    --標的結構,列,約束,索引等不會被改動
--3.3 刪除表數據 關聯條件 DELETE FROM LEFT JOIN 
DELETE A FROM A  
LEFT JOIN B ON A.ID =B.ID
LEFT JOIN C ON C.ID=B.IDD
WHERE B.ID=ID OR C.ID=ID

 


4、查詢數據 --4.1 查詢一個表的全部數據(查) select * from 表名 --4.2 篩選符合條件的全部數據(查) selcet * from 表名 where 條件 --4.3 查詢某些列或者列的數據(查) select 列名,列名 from 表名 where 條件 --4.4 在查詢中使用別名(查) a). select 列名 as 別名, 列名 as 別名 from 表名 where 條件 b). select 別名=列名,別名=列名 from 表名 where 條件 --4.5 查詢爲空(不爲空)的數據(查) select 列名 from 表名 where 列名 is null(爲空) where 列名 is not null(不爲空) --4.6 查詢中使用常量(查) select 列名,列名,'常量' as 別名 from 表名 --4.7 查詢返回限制的行數(查) select top 行數 * from 表名 select top 行數 percent * from 表名(按百分比查詢) --4.8 排序 ORDER BY DESC/ASC 降序/升序 默認爲 Asc 升序 select * from 表名 order by 列名 (asc/desc) --無篩選條件的升序排列,asc能夠省略,默認爲升序 5、經常使用函數字符串 --5.1 查找指定字符的位置 select 列名,charindex('字符',列名,起始位置)(as 別名) from 表名 --5.2 replace 替換 select 列名,replace(列名,'字符','替換成的') from 表名 --5.3 .stuff 插入替換 select 列名,stuff(列名,起始下標,修改長度,'替換成的') from 表名 --5.4 長度 Len SELECT Len(字段名) FROM 表名 --中文和英文字符 都是一個長度 --5.4 截取字符串 SUBSTRING('要截取的字符',截取開始位置,截取結束位置) --5.5 拼接字符 變量字符類型 DECLARE @str varchar(50) SET @str='若是變量是字符類型' DECLARE @ExccSql varchar(1000) SET @ExccSql='SELECT '''+@str+''' ' EXEC (@ExccSql) --5.6 拼接字符 變量數字類型 DECLARE @i int SET @i=5201314 DECLARE @ExccSql varchar(1000) --SET @ExccSql='SELECT '''+@i+''' ' --錯誤 SET @ExccSql='SELECT '+cast(@i as varchar(10)) EXEC (@ExccSql) SELECT SUBSTRING('ABCDEFGHIJKLMN',1,2) --結果爲 AB 得出結論SQL下標從一開始 --常見錯數 /* 1.對象名不存在 a.數據庫選擇錯誤 b.表名或者列名錯誤 2.不能爲表'列名'中的標識插入顯示值 出錯緣由:不能爲標識列插入值 3.列名或所提供值的數目與表定義不匹配 出錯緣由:列的個數和值的個數不匹配 4.不能在對象'表名'中插入重複鍵 出錯緣由:主鍵值重複 5.約束"FK...."衝突,發生於"數據庫名",表"表名",列名 出錯緣由:外鏈引用的數據不存在 6.將截斷字符串二進制數據 出錯緣由:超出設置長度 7.約束"CK...."衝突,發生於"數據庫名"表"表名",列名 出錯緣由:數據違背了檢查約束 8.***附近有錯誤 出錯緣由:語法錯誤或者是符號錯誤 */

 

--六 約束
--6.1 建立完表之後添加多列 惟一約束 UNIQUE 
ALTER TABLE YFCarryover 
ADD CONSTRAINT uc_salvType UNIQUE (psid,salvType)

 

--修改自增列 標識種子
DECLARE @MaxID INT
SET @MaxID=(SELECT MAX(ID) FROM cc1)
DBCC CHECKIDENT(cc1, RESEED,@MaxID )
相關文章
相關標籤/搜索