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
先备份,再还原,中间可能报错,按如下操作
- 恢复数据库时,单击左边的“Option”,在右侧,你会看到“Restore Options,勾选”Overwrite the existing database.
- 在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(); }