SQL 笔记汇总
基本語法(增,刪,改,查)
一、新增
--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.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.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.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.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.***附近有錯誤出錯原因:語法錯誤或者是符號錯誤 */
?
四、查詢數據 --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.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 )?
轉載于:https://www.cnblogs.com/suqifeng/p/3402311.html
總結
- 上一篇: 解决ARC下performselecto
- 下一篇: 我终究还是辞职了