基本语法(增,删,改,查)
一、新增
--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 )