如何删除数据库中的所有用户表(表与表之间有外键关系)

1、由表名求字段名
create proc up_008(@table varchar(20))
as
begin
        declare @sql varchar(99)
    select @sql=\'select name from syscolumns where id=object_id(\'
    select @sql=@sql+\'\'\'\'+@table+\'\'\'\'+\')\'
    --select @sql
    exec(@SQL)
end

exec up_008 a_idx2
2、编程删除数据库中的用户表
create proc up_010
as
begin
        declare @sql varchar(99),@tbl varchar(30),@fk varchar(30)
   declare cur_fk cursor local for
      select object_name(constid),object_name(fkeyid) from sysreferences
   --删除所有外键
   open cur_fk
   fetch cur_fk into @fk,@tbl
   while @@fetch_status =0
   begin
                select @sql=\'alter table \'+@tbl+\' drop constraint \'+@fk
      exec(@SQL)
      --select @sql=\'drop table \'+@tbl
      fetch cur_fk into @fk,@tbl
   end
   close cur_fk
   declare cur_fks cursor local for
      select name from sysobjects where xtype=\'U\'
   open cur_fks
   fetch cur_fks into @tbl
   while @@fetch_status =0
   begin
      select @sql=\'drop table [\'+@tbl+\']\'
      exec(@SQL)
      fetch cur_fks into @tbl
   end
   close cur_fks  
end

exec up_010

--declare @sql varchar(99)
--select @sql=\'alter table Orders drop constraint FK_Orders_Customers\'
--exec(@SQL)

--select * from sysreferences
--select object_name(constid),object_name(fkeyid) from sysreferences

--alter table Orders drop constraint FK_Orders_Customers
3、统计数据库中每个用户表的记录数
    create proc up_011
as
begin
   create table #tmp (qty int)
   create table #tmp1 (tbl varchar(30),qty int)
        declare @sql varchar(99),@tbl varchar(30),@qty int
   declare cur_fks cursor local for
      select name from sysobjects where xtype=\'U\'
   open cur_fks
   fetch cur_fks into @tbl
   while @@fetch_status =0
   begin
      select @sql=\'select count(*) from \'+@tbl
      insert into #tmp exec(@SQL)
      select @qty=qty from #tmp
      insert into #tmp1 values(@tbl,@qty)
      delete from #tmp
      fetch cur_fks into @tbl
   end
   close cur_fks  
   select * from #tmp1
end

exec up_011

create table #tmp(qty int)
insert into #tmp exec(\'select count(*) from sales\')
select * from #tmp

4 求表中两行记录之差
-----求表中两条记录之差
create table a099
(
id int,
qty int
)

create procedure p015
as
begin
        declare @max int,@sql varchar(999)
        select @max=count(*) from a099
        select @max=@max-1
        select * into #tmp1 from a099 where 0=1
        select @sql=\'select top \'+cast(@max as varchar(9))+\' * from a099\'
        insert into #tmp1 exec (@sql)
        declare cur_1 cursor local for select * from #tmp1
       
        select * into #tmp2 from a099 where 0=1
        select @sql=\'select top \'+cast(@max as varchar(9))+\' * from a099 order by 1 desc\'
        insert into #tmp2 exec (@sql)
        declare cur_2 cursor local for select * from #tmp2 order by 1

  --计算两个游标之差
  declare @id int,@id1 int,@qty int,@qty1 int,@diff int
  declare @tbl table(id int identity(1,1),diff int)
  open cur_1
  open cur_2
  fetch cur_1 into @id,@qty
  fetch cur_2 into @id1,@qty1
  while @@fetch_status=0
  begin
          select @diff=@qty1-@qty
    insert into @tbl(diff) values(@diff)
    fetch cur_1 into @id,@qty
    fetch cur_2 into @id1,@qty1
  end
  close cur_1
  close cur_2
  --计算两个游标之差
       
  drop table #tmp1
        drop table #tmp2
  
  select * from @tbl
end

exec p015

select * from a099
select * from a099 a,a099 b where a.id=b.id

--简单的求差问题
alter proc p016
as
begin
  declare cur_1 cursor local for select * from a099 order by 1
        declare @id int,@qty int,
          @id1 int,@qty1 int,@diff int
  declare @tbl table(id int identity(1,1),qty int)
  open cur_1
  fetch cur_1 into @id ,@qty
  while @@fetch_status=0
  begin
    if @qty1<>0
    begin
      select @diff=@qty1-@qty
      select @qty=@qty1
      insert into @tbl(qty) values(@diff)
    end
    fetch cur_1 into @id1,@qty1
  end
  close cur_1  
  select * from @tbl
end

exec p016

select * from a099 a,a099 b where a.id=b.id

--最简单的求差计算
create procedure p017
as
begin
   select identity(int,1,1) id,qty into #tmp from a099
   declare cur_1 cursor local for
      select a.id,a.qty q1,b.qty q2 from #tmp a,#tmp b where a.id=b.id-1
   declare @id int,@q1 int,@q2 int,@diff int
   declare @tbl table(id int identity(1,1),qty int)
   open cur_1
   fetch cur_1 into @id,@q1,@q2
   while @@fetch_status=0
   begin
                 select @diff=@q2-@q1
     insert into @tbl(qty) values(@diff)
     fetch cur_1 into @id,@q1,@q2
   end
   close cur_1
   select * from @tbl
end

exec p015
go
exec p016
go
exec p017
go

转载于:https://www.cnblogs.com/tonykan/p/3439680.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Azure开发者任务之一:解决Azure Storage Emulator初始化失败

初学Windows Azure&#xff1a; 我打算开始学习Windows Azure。我安装了Azure SDK&#xff0c;然后在“Cloud”标签下选择Windows Azure模板&#xff0c;创建了一个项目&#xff0c;然后又创建了一个Web角色。 在aspx文件上&#xff0c;我只添加了一个标签&#xff0c;但是当我…

关于Java里如何跳出一个多重循环

一般我们要跳出一个循环&#xff0c;用break就OK了&#xff0c;比如&#xff1a; 1 for(int i1;i<5;i){ 2   if&#xff08;条件&#xff09; 3     break&#xff1b; 4   //一些代码 5 } 但是如果这时候&#xff0c;在这一层循环外面还有一层循环的话&#…

CCRC认证对企业的作用?

CCRC认证&#xff08;中国网络安全审查认证&#xff09;是针对网络产品和服务的安全审查制度&#xff0c;它对企业的作用主要体现在以下几个方面&#xff1a; 1. 提升产品安全性 CCRC认证要求企业对其网络产品和服务进行全面的安全审查&#xff0c;确保符合国家网络安全标准和…

java运行python3_python写脚本并用java调用python(三)

1)编写mytest.py完成一个简单加法计算# coding:utf8#def 表示一个方法 adderdef adder(a, b):return ab#这里执行adder方法并打印出结果print adder(1,2)2)运行以上脚本方式如图12 3 打印成功&#xff01;3)java调用python脚本的两种方式Process process Runtime.getRuntime(…

Hibernate教程– ULTIMATE指南(PDF下载)

编者注&#xff1a;在本文中&#xff0c;我们提供了全面的Hibernate教程。 Hibernate ORM&#xff08;简称Hibernate&#xff09;是一个对象关系映射框架&#xff0c;它有助于将面向对象的域模型转换为传统的关系数据库。 Hibernate通过用高级对象处理功能代替直接与持久性相关…

mysql单源多表同步单库单表_MySQL主从复制单表或者多表

MySQL数据库安装不过多的介绍了&#xff1a;必须保证2个数据库的版本一致。 主数据库&#xff1a;192.168.0.43 从数据库&#xff1a;192.168.0.53 修改43主数据MySQL数据库安装不过多的介绍了&#xff1a;必须保证2个数据库的版本一致。主数据库&#xff1a;192.168.0.43从数据…

悲观锁定时如何避免可怕的死锁-以及Java 8的一些用法!

有时您根本无法避免&#xff1a;通过SQL进行悲观锁定。 实际上&#xff0c;当您要在共享的全局锁上同步多个应用程序时&#xff0c;它是一个很棒的工具。 有些人可能认为这是在滥用数据库。 如果可以解决您遇到的问题&#xff0c;我们认为可以使用您拥有的工具。 例如&#xf…

object - c 函数的值

函数名说明int rand()随机数生成。&#xff08;例&#xff09;srand(time(nil)); //随机数初期化int val rand()%50; //0&#xff5e;49之间的随机数int abs(int a)整数的绝对值&#xff08;例&#xff09;int val abs(-8); →8※浮点数的时候用fabs。double fabs(double …

xshell 秘钥连接_如何使用PuTTY和xshell 分别远程连接linux,并配置秘钥认证

使用PuTTY 连接并配置密钥认证第一步&#xff1a;下载PuTTY下载 .zip 64位的电脑 32位的putty也能用第二步&#xff1a;配置基本信息打开 PuTTY端口默认是22 (端口是可以改的)ip 地址如果忘记&#xff0c;ifconfig 查看一下Load >Open输入登录名 密码即可完成登录若出现上…

滨河新区(黄河楼)夜景

转载于:https://www.cnblogs.com/ysx4221/p/3454517.html

使用Junit测试名称

命名测试 在创建Junit测试时&#xff0c;通常没有实际使用该方法的名称。 Junit运行程序使用反射来发现测试方法&#xff0c;并且从版本4开始&#xff0c;您不再被限制以test开始方法的名称。 测试方法的名称用于文档目的。 人们遵循不同的风格。 您可以使用给定的given_Somet…

java 门面模式_Java门面模式

一、简介隐藏系统的复杂性&#xff0c;对外提供统一的访问入口&#xff0c;外部系统访问只通过此暴露出的统一接口访问。是一种结构型模式。封装子系统接口的复杂性&#xff0c;提供统一的对外接口&#xff0c;能够使子系统更加简单的被使用。二、结构及使用场景如上所示&#…

摘成功道路上容易被忽视的5项技能

本文摘自《电子工程师专辑》&#xff0c;来源&#xff1a;http://forum.eet-cn.com/FORUM_POST_10008_1200257568_0.HTM。 人人都渴望成功&#xff0c;在通往成功的道路上&#xff0c;少不了技能和运气&#xff0c;运气往往难以受人控制&#xff0c;技能却能好好把握&#xff0…

selenium java测试_java+selenium 自动化测试

在项目上使用自动化测试&#xff0c;是为了跑主流程的回归测试&#xff0c;提高测试效率&#xff0c;在每个测试版本中把主要的精力放在发版内容新增的需求中&#xff1b;根据项目的功能模块&#xff0c;把业务主流程和使用频率高的功能抽取出来进行自动化测试&#xff0c;作为…

通用名称

泛型类型参数名称通常包含一个大写字母字符。 如果您开始阅读有关泛型的官方ORACLE文档&#xff0c;则第一个示例是 /*** Generic version of the Box class.* param <T> the type of the value being boxed*/ public class Box<T> {// T stands for "Type&q…

扩大缩小Linux物理分区大小

由于产品在不同的标段&#xff0c;设备硬盘也不同&#xff0c; 有些500G&#xff0c;有些320G有些200G&#xff0c;开始在大硬盘上做的配置&#xff0c;想把自己定制好的Linux克隆到小硬盘上&#xff0c;再生龙会纠结空间大小的问题&#xff0c; 因此需要做一些分区的改变。 网…

java 文件上传 servlet_java文件上传-原始的Servlet方式

前言&#xff1a;干了这几个项目&#xff0c;也做过几次文件上传下载&#xff0c;要么是copy项目以前的代码&#xff0c;要么是百度的&#xff0c;虽然做出来了&#xff0c;但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的&#xff0c;在北京出去找房子…

内存泄漏 和 内存溢出

在计算机科学中&#xff0c;内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;失去了对该段内存的控制&#xff0c;因而造成了内…

不要被泛型和向后兼容性所愚弄。 使用泛型类型

最近&#xff0c;我与jOOQ的早期客户Ergon的 Sebastian Gruber进行了非常有趣的讨论&#xff0c;我们与之保持了密切联系。 与Sebastian交谈使我们的工程团队得出结论&#xff0c;认为我们应该完全重写jOOQ API。 现在&#xff0c;我们已经有很多用于各种用途的泛型&#xff0c…

java 什么是耦合_什么是耦合、解耦

什么是耦合、解耦一、耦合1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。2、在软件工程中&#xff0c;对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高&#xff0c;维护成本越高&#xff0c;因此对象的设计应使类和构…