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.***附近有错误 出错原因:语法错误或者是符号错误 */
--六 约束
--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