sql server相关操作

sql语句

数据库表操作

增加列

alter table [BUSITMS].[dbo].[P_PROJECT_MOL_EXTENTION_INFO] add vc_test2 [nvarchar](1) not null default '0'

删除列

alter table [BUSITMS].[dbo].[P_PROJECT_INFO_BACK] drop column VC_IS_MOL

备份表

select * into [BUSITMS].[dbo].[P_PROJECT_INFO_BACK] from [BUSITMS].[dbo].[P_PROJECT_INFO]

插入单独数据

INSERT into [BUSITMS].[dbo].[P_PROJECT_MOL_EXTENTION_INFO](VC_ID) values('029cb4f0551743c3b09b0d5a5bdf3301')

多表联查

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录,假如右表没有,返回null
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录,假如左表没有,返回null

select * from A left join B on A.aID = B.bID

inner join(等值连接) 只返回两个表中联结字段相等的行

SELECT * FROM TableA INNER JOIN TableB ON  TableA.id = TableB.rec_id

LEFT (OUTER) JOIN   产生表A的完全集,而表B中匹配的则有值,没有匹配的则以null值取代.

RIGHT(OUTER)  JOIN 产生表B的完全集,而表A中匹配的则有值,没有匹配的则以null值取代

FULL (OUTER)   JOIN  产生A和B的并集,对于没有匹配的记录,以null值做为值

SELECT * FROM TableA RIGHT   OUTER JOIN TableB ON TAbleA.id = TableB.rec_id

Union: 

只适合列数相同的表,表A、表B,将B的所有数据放到A表里面,

与join相比就是,join增加列,union增加行

sql server根据查找到得值,来改成自己想要的值

(case a.VC_TASK_STATUS when 0 then '未开始' when 1 then '进行中' when 2 then '已完成' end) as RWZT

sql server根据日期排序

select * from “你所需要的表名” order by convert(char(19),“日期的字段名”,120)

视图

当基于一个表或者多个表创建了视图后,当你修改表数据,视图也会随之改变。本地TMS数据库没有改变的原因是因为数据库复制过来的,把view当成了table,所以失去 了该功能

创建例子

 

存储过程

创建

use BUSITMS
go
if(exists(select * from sys.objects where name ='Transfer'))
drop proc Transfer

go 
create procedure Transfer(@DeleteProjectName varchar(32),@TargetProjectName varchar(32))
as 
begin
declare @DeleteProjectID varchar(32)
select @DeleteProjectID = VC_ID from P_PROJECT_INFO where VC_PRO_NAME=@DeleteProjectName;

declare @TargetProjectID varchar(32)
select @TargetProjectID = VC_ID from P_PROJECT_INFO where VC_PRO_NAME=@TargetProjectName;

declare @TaskID varchar(32);
select @TaskID = VC_ID from P_PRO_TASK_INFO where VC_PRO_ID=@DeleteProjectID

if(@DeleteProjectID is null) return
if(@TargetProjectID is null) return
if(@TaskID is null) return

update P_PRO_TASK_INFO set VC_PRO_ID=@TargetProjectID where VC_PRO_ID=@DeleteProjectID
update P_PRO_TASK_REPORT set VC_PRO_ID = @TargetProjectID where VC_TASK_ID = @TaskID
delete from P_PROJECT_INFO where VC_PRO_NAME = @DeleteProjectName

end
go

执行

exec dbo.Transfer @DeleteProjectName=N'22345',@TargetProjectName=N'ddddd';

sqlServer数据库备份和还原

1.sqlserver 本地复制数据库

https://blog.csdn.net/lynehylo/article/details/80577519

  先备份,再还原,中间可能报错,按如下操作

    1. 恢复数据库时,单击左边的“Option”,在右侧,你会看到“Restore Options,勾选”Overwrite the existing database.
    2. 在Restore the database as选项表格中有两行,一行是数据文件,一行是日志文件,在Restore As列中将他们分别改为你新数据库名(B.mdf, B.ldf).

      3. 点击OK既可正确恢复数据了。
  还原后的数据库,可能会一直显示“正在还原...”。管理器不会主动刷新,手工刷新一下。如果手工刷新后还是显示“正在还原”,则可能是进程被挂起了,需要执行:RESTORE database  dbname2 with recovery 即可。

2. sqlserver远程复制数据库  

开始菜单打开Import and Export 工具,选择远程数据库和本地数据库,假如密码失败,则通过Windows Authentication.

但是这种情况下,暂时有2点问题

<1>原来的view移植过来会变成表,需要重新生成

<2>原来的表的自增字段会变成普通字段,需要手动修改Identity Specification, 修改的过程中会报错,需要修改Microsoft SQL Server Management Studio的配置

 sql server 中普通字段修改为自增字段,如图:

把否修改为是,然后按ctrl+s报错

 修改如下配置

 

 去掉勾

回到设计表中再次按ctrl+s保存字段自增

备份数据库报错

 本地备份,只能备份到指定目录

配置数据库,使得它可以被远程访问

 Right click the server, select Property

 Right click the folder, click manage

Open the firewall and set Inbound Rules, allow ip and port

https://blog.csdn.net/qq_2300688967/article/details/80356613

c# connection string设置

Server或者OpenSource都可以使用,值使用远程或本地的服务器名字

var connectionString = "Server=CN11WPWANG-702\SQLEXPRESS;user id=sa;pwd=1111111;database=test";

using (SqlConnection connection = new SqlConnection(connectionString))
{
        connection.Open();
}
原文地址:https://www.cnblogs.com/xiaojidanbai/p/14182015.html