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 )