SQL_Update
1、将表B中的数据更新到表A(Cardno要为空)
①update A set A.CardNo = B.CardNo from A,B where B.Id = A.Id and A.CardNo is null
②update A set A.CardNo=(select B.CardNo from B inner join A on B.ID=A.ID )
2、利用带关联子查询Update语句更新数据
① UPDATE b SET b.EmployeeID=a.EmployeeID FROM Tests a,OriginalCheckData b WHERE
b.CardNo = a.CardNo AND b.EmployeeID IS NULL
② Update Table1
set c = (select c from Table2 where a = Table1.a)
where c is null
③ update
(select A.bnum ,A.newqiantity,B.qiantity from A
left join B on A.bnum=B.bnum) AS C
set C.newqiantity = C.qiantity
where C.bnum ='001'
3、修改数据库名称
①ALTER DATABASE oldname MODIFY NAME = newname;--修改数据库名称
② sp_renamedb oldname,newname --修改数据库名称
4、批量修改某列中的数据:
UPDATE dbo.X_Dept SET Remark= CASE Remark
WHEN '销售' THEN 'SAML'
WHEN '仓库' THEN 'STRL'
ELSE Remark end
5、批量修改数据(行)
update X_Dept set remark = dx,age=11,sex='man'
--5.1、模糊修改:
update X_Dept set remark =1 where remark like '%明'
6、修改数据库表名称:
EXEC sp_rename 'Deptments'(旧),'Deptment'(新)
EXEC sp_rename 'oldname','newname'
6.1、修改数据库登陆密码(忘记密码的情况下)
sp_password null,'123456','sa'
7、修改数据库列名:
EXEC sp_rename 'Customer.[CustomerName1]', 'CustomerName', 'COLUMN'
EXEC sp_rename 'table.name','oldfiled','newfiled',COLUMN
8、修改数据库视图名称:
EXEC sp_rename 'V_KMCSYE(旧)', 'V_KMCSYE(新)'
9、修改数据存储过程图名称:
EXEC sp_rename 'MY_SP_TZKC1', 'MY_SP_TZKC'
10、修改数据库触发器名称:
11.1修改变长文本型字段的大小:
alter table Table1 alter column Column1 varchar(10)
11.2 修改字段的名称
①alter table 表名 rename column A to B
②execute sp_rename '表名.字段名','新字段名'
11.3 修改字段的字段类型
alter table 表名 alter column 字段名 type not null
12、
①表与表可多次连接,但是表别名不能一样
②批量修改数据,同列同数据,指定ID修改(ID=4和ID=5的规格全部改为500ml)
UPDATE dbo.SAL_X_CO2 SET Specification='500ml' WHERE Id in(4,5)
③批量修改数据,不同列不同数据,不指定ID修改??
13、给没有自增列的表加一个自增字段(按指定增值设置)
a、更新一个列按一定的顺序排列.加自增列tempCol ,101为起始值,1为自增值,更新之后删掉这列
b、给没有自动增长列的表插入数据,先添加一个自动增长列,复制表,在此表加,最后在插入到原始表中并删除不需要的列--SQL
三步走: ①alter table Tables add TempCol int identity(101,1); ②Update Tables ID=TempCol; ③alter table Tables drop column TempCol
14、批量更新ID,每个ID逐行+1
批量更新ID,逐行+1,要先将ID值全部赋值为1
UPDATE A
SET EmployeeID=1+CAST(RN AS NVARCHAR)
FROM (SELECT *,ROW_NUMBER() OVER (ORDER BY EmployeeID) AS RN
FROM test
WHERE EmployeeID=1) AS A
WHERE RN<>1 AND RN<=500
15、原始记录表中给员工ID为空的数据赋值员工ID
UPDATE a SET a.employeeid = b.EmployeeID FROM dbo.OriginalCheckData a,dbo.OriginalCheckData b WHERE a.CardNo
=b.CardNo AND a.EmployeeID IS NULL AND b.EmployeeID IS NOT NULL /*AND a.OccurTime<'2018-07-01'*/
16、无自增和主键需要加一个序号
Update MyExcelTable
Set RPID=(select max(isnull(RPID,0)) from RewardsAndPunishment )+XH
17、随机生成时间(21:30-21:36之间),将时间转换为整数来取。如分钟数转为秒数,5分钟转为300/s
SELECT DATEADD(ss,CONVERT(INT,360*RAND(CHECKSUM(NEWID()))),'21:30')
18、找回考勤数据。打卡后有记录,但是empid为空时需要执行的语句:
UPDATE a SET a.EmpID = b.EmpID,a.EmpNo = b.EmpNo FROM (SELECT CardID,EmpID,EmpNo FROM AttCardData WHERE EmpID ='' AND YYMMDD >='2020-01-16') a
,AttCardData b WHERE a.CardID = b.CardID AND a.EmpID = '' AND b.YYMMDD >='2020-01-14'
浙公网安备 33010602011771号