【sql】sql知识汇总

1.OpenRowSet例子

远程查表

 select * from openrowset('SQLOLEDB','192.168.3.81';'account';'password',Product_Db.dbo.login);
 --192.168.3.81为ip
 --account为登录账户名
 --password为密码
 --Product_Db.dbo.login为要查询的数据库表名,全称:数据库名.架构名.表名

远程运行sql

insert into dbo.UserInfo select * from openrowset('SQLOLEDB','10.0.1.1';'sa';'password',
'select [Created_UserId]
      ,[Created]
      ,[Description]
      ,[Code]
      ,[Name]
	  from MESDb_dev.dbo.UserInfo');

2.SET IDENTITY_INSERT

通常由于自增id,导致我们无法插入带id的数据,一种方法是不要自增id字段,另一种是以下的SET IDENTITY_INSERT ON方式

  • 注意:这三条语句要一起执行,不能分开执行,否则会报错

SET IDENTITY_INSERT [Product_Db].[dbo].[Menu] ON --设置为允许手动插入值
INSERT INTO [Product_Db].[dbo].[login]([Id], ...) VALUES(...);--插入数据
SET IDENTITY_INSERT [Product_Db].[dbo].[Menu] OFF --//设置为禁止手动插入值

查询主外键关系

在主表DepartDment中查询主外键关系

exec sp_helpconstraint 'Department'

删除外键命令(注:删除前做好备份)


alter table MESDb.dbo.Department drop constraint FK_Department_Department_ParentId
alter table MESDb.dbo.Department_And_Attr drop constraint FK_Department_And_Attr_Department_DepartmentId
alter table MESDb.dbo.Line   drop constraint FK_Line_Department_DepartmentId
alter table MESDb.dbo.[User] drop constraint FK_User_Department_DepartmentId
alter table MESDb.dbo.Warehouse_And_Dept drop constraint FK_Warehouse_And_Dept_Department_DepartmentId

查看所有用户、添加用户

SELECT * FROM sys.server_principals;
EXEC sp_addlogin readonly,pwd
EXEC sp_adduser readonly,readonly,pwd

冷门而必要的SQL语句

1.SQL Server查询所有表名的名称,含Schema架构名,格式:架构名.表名

--查询所有表名的名称,含Schema架构名,格式:架构名.表名
 select concat(s.name ,concat('.',t.name)) as tableName 
 from sys.tables t left join sys.schemas s
 on t.schema_id=s.schema_id order by tableName asc;

2.查询当前数据库名称

--查询当前数据库名称
select Name From Master..SysDataBases Where DbId=(Select Dbid From Master..SysProcesses Where Spid = @@spid)

3.SQL Server创建临时表,并把数据写入临时表

if  Object_ID('tempdb..#temp1')  is not null  
	drop table #temp1;
Select * into #temp1 from MasterData;

4.昨天

select getdate()-1

5.查询外部数据库

select  * from OPENROWSET('SQLOLEDB',
       'server=192.168.3.99;uid=sa;pwd=pwd;database=LOCAL_TEST',
       'SELECT  * FROM [dbo].[V_TEST]')

6.-查询数据库中所有的表名及数据量

SELECT  a.name ,  b.rows  FROM    sysobjects AS a
INNER JOIN sysindexes AS b 
ON a.id = b.id
WHERE   ( a.type = 'u' )  AND ( b.indid IN ( 0, 1 ) )
ORDER BY b.rows DESC
  1. 外键作用

1、不执行任何操作(EF Core默认Restrict):如果数据被其其他表外键依赖,拒绝删除
2、级联(Cascade):删除外键表中相应的所有行
3、设置NULL(SetNull):将表的外键字段值设置为空值NULL
4、设置默认值:如果外键表的所有外键列均已定义默认值,则将该列设置为默认值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值