精华内容
下载资源
问答
  • 数据库删除表中数据

    千次阅读 2019-03-27 11:37:48
    数据库删除表中数据 数据库删除表中数据,如果直接清空数据,id自增长的话,再添加的数据会从清除之前的id继续自增长,想要删除数据,id 自增长仍然从1开始,如下操作: show create TABLE Analysis.ORDER_SUMM ...

    数据库删除表中数据

    数据库删除表中数据,如果直接清空数据,id自增长的话,再添加的数据会从清除之前的id继续自增长,想要删除数据,id 自增长仍然从1开始,如下操作:

    show create TABLE Analysis.ORDER_SUMM
    

    执行以上语句结果如下:
    其实在这里插入图片描述
    其实就是表结构 全选后是这样的:

    CREATE TABLE `order_detail` (
      `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `SOURCE_ID` varchar(255) DEFAULT NULL COMMENT '源数据来源',
      `ACCOUNT_ID` varchar(255) DEFAULT NULL COMMENT '账户ID',
      `ORDER_ID` varchar(255) DEFAULT NULL COMMENT '订单ID',
      `DATE` datetime DEFAULT NULL COMMENT '日期',
      `CUSTOMER_ID` varchar(255) DEFAULT NULL COMMENT '顾客',
      `POS_ID` varchar(32) DEFAULT NULL COMMENT '网点',
      `DEVICE_ID` varchar(32) DEFAULT NULL COMMENT '设备',
      `GOODS_ID` varchar(32) DEFAULT NULL COMMENT '产品',
      `PRICE` decimal(10,2) DEFAULT NULL COMMENT '单价',
      `COUNT` int(11) DEFAULT NULL COMMENT '订单本种商品数量',
      `PAYMENT` varchar(255) DEFAULT NULL COMMENT '支付方式',
      `STATE` int(11) DEFAULT NULL COMMENT '订单状态,1-完成,2-未完成',
      `SYNC_TIME` datetime DEFAULT NULL COMMENT '同步时间',
      PRIMARY KEY (`ID`),
      KEY `POS` (`POS_ID`),
      KEY `DEVICE` (`DEVICE_ID`),
      KEY `PRODUCT` (`GOODS_ID`),
      KEY `CUSTOMER` (`CUSTOMER_ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单详情表'
    

    一般我会先drop 数据表 ,然后再create ,但是发现这样操作,对自增长的id有影响,id会从删除表之前的数据开始(跟直接清空表是一样的),我不想要这样,想要id 从1开始,于是执行下面这句话

    TRUNCATE TABLE Analysis.ORDER_SUMMARY
    

    这句话是关键 TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作
    这样,id 就会从头开始啦 笔芯

    展开全文
  • SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。...DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据 SQL SELECT * 实例 现在我们希望从 “Perso

    SQL DML 和 DDL

    可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
    SQL (结构化查询语言)是用于执行查询的语法。
    但是 SQL 语言也包含用于更新、插入和删除记录的语法。

    查询和更新指令构成了 SQL 的 DML 部分:

    SELECT - 从数据库表中获取数据
    UPDATE - 更新数据库表中的数据
    DELETE - 从数据库表中删除数据
    INSERT INTO - 向数据库表中插入数据
    

    SQL SELECT * 实例

    现在我们希望从 “Persons” 表中选取所有的列。 请使用符号 * 取代列的名称,就像这样:

    SELECT * FROM Persons
    

    Update 语句

    Update 语句用于修改表中的数据。

    语法:
    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
    

    DELETE 语句

    DELETE 语句用于删除表中的行。

    //语法:
    DELETE FROM 表名称 WHERE 列名称 =

    INSERT INTO 语句

    INSERT INTO 语句用于向表格中插入新的行。

    //语法:
    INSERT INTO 表名称 VALUES (1,2,....)
    //我们也可以指定所要插入数据的列:
    INSERT INTO table_name (1,2,...) VALUES (1,2,....)
    
    展开全文
  • 如果要删除数据表中所有数据只要遍历一下数据库删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍。 使用sql删除数据库中所有表是不难的,就是...

    来源:转载

    如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍。

     

    使用sql删除数据库中所有表是不难的,就是遍历一下数据库中所有用户表,并将它清除,下边是具体的sql语句,在关键部分已经作了详细的注释:

     代码如下 复制代码

    --变量@tablename保存表名
    declare @tablename nvarchar(100)

    --将用户表全部保存到临时表#tablename中
    SELECT [name] into #tablename FROM sysobjects
    WHERE type = 'U';

    --当#tablename有数据时
    while(select count(1) from #tablename)>0
    begin
    --从#tablename中取第一条
    select top 1 @tablename=[name] from #tablename;
    --进行表删除操作,表名为变量,所以此处用到动态sql
    exec('drop table '+@tablename);
    --将此表名记录从#tablename中删除
    delete from #tablename where [name]=@tablename;
    end

    --最后删除临时表#tablename

    drop table #tablename可见sql里没有使用游标,而是使用了临时表用来遍历,到这里就达到了使用sql清除数据库中所有表的目的。

    另一种办法

    方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下

     

     代码如下 复制代码
    --删除所有约束 
    DECLARE c1 cursor for 
    select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; ' 
    from sysobjects 
    where xtype ='F' 
    open c1 
    declare @c1 varchar(8000) 
    fetch nextfrom c1 into@c1 
    while(@@fetch_status=0) 
    begin 
    exec(@c1) 
    fetch nextfrom c1 into@c1 
    end 
    close c1 
    deallocate c1 
    --删除数据库所有表 
    declare @tname varchar(8000) 
    set@tname='' 
    select@tname=@tname+Name+','from sysobjects where xtype='U' 
    select@tname='drop table '+ left(@tname,len(@tname)-1) 
    exec(@tname)

    然后清空数据库中的所有表: 
    如果需要删除存储过程等只需要将上面的做如下修改就行了的where xtype='U' 改成 where xtype='P',drop table 改成 drop Procedure


    附上清空数据表中所有数据


    清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER.
    1.搜索出所有表名,构造为一条SQL语句

     代码如下 复制代码

    declare @trun_name varchar(8000)
    set @trun_name=''
    select @trun_name=@trun_name + 'truncate table ' + [name] + ' ' from sysobjects where xtype='U' and status > 0
    exec (@trun_name)

    该方法适合表不是非常多的情况,否则表数量过多,超过字符串的长度,不能进行完全清理.
    2.利用游标清理所有表

     代码如下 复制代码

    declare @trun_name varchar(50)
    declare name_cursor cursor for
    select 'truncate table ' + name from sysobjects where xtype='U' and status > 0
    open name_cursor
    fetch next from name_cursor into @trun_name
    while @@FETCH_STATUS = 0
    begin
      exec (@trun_name)
     print 'truncated table ' + @trun_name
     fetch next from name_cursor into @trun_name
    end
    close name_cursor
    deallocate name_cursor

    这是我自己构造的,可以做为存储过程调用, 能够一次清空所有表的数据,并且还可以进行有选择的清空表.
    3.利用微软未公开的存储过程

     

     代码如下 复制代码

    exec sp_msforeachtable "truncate table ?"

    转自:http://www.111cn.net/database/mssqlserver/48639.htm

    转载于:https://www.cnblogs.com/fanluyao/p/4361111.html

    展开全文
  • 如果要删除数据表中所有数据只要遍历一下数据库删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍。 使用sql删除数据库中所有表是不难的,...
    如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍。

    使用sql删除数据库中所有表是不难的,就是遍历一下数据库中所有用户表,并将它清除,下边是具体的sql语句,在关键部分已经作了详细的注释:

     代码如下 复制代码

    --变量@tablename保存表名
    declare @tablename nvarchar(100)

    --将用户表全部保存到临时表#tablename中
    SELECT [name] into #tablename FROM sysobjects
    WHERE type = 'U';

    --当#tablename有数据时
    while(select count(1) from #tablename)>0
    begin
    --从#tablename中取第一条
    select top 1 @tablename=[name] from #tablename;
    --进行表删除操作,表名为变量,所以此处用到动态sql
    exec('drop table '+@tablename);
    --将此表名记录从#tablename中删除
    delete from #tablename where [name]=@tablename;
    end

    --最后删除临时表#tablename

    drop table #tablename可见sql里没有使用游标,而是使用了临时表用来遍历,到这里就达到了使用sql清除数据库中所有表的目的。

    另一种办法

    方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下

     

     代码如下 复制代码
    --删除所有约束 
    DECLARE c1 cursor for 
    select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; ' 
    from sysobjects 
    where xtype ='F' 
    open c1 
    declare @c1 varchar(8000) 
    fetch nextfrom c1 into@c1 
    while(@@fetch_status=0) 
    begin 
    exec(@c1) 
    fetch nextfrom c1 into@c1 
    end 
    close c1 
    deallocate c1 
    --删除数据库所有表 
    declare @tname varchar(8000) 
    set@tname='' 
    select@tname=@tname+Name+','from sysobjects where xtype='U' 
    select@tname='drop table '+ left(@tname,len(@tname)-1) 
    exec(@tname)

    然后清空数据库中的所有表: 
    如果需要删除存储过程等只需要将上面的做如下修改就行了的where xtype='U' 改成 where xtype='P',drop table 改成 drop Procedure


    附上清空数据表中所有数据


    清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER.
    1.搜索出所有表名,构造为一条SQL语句

     代码如下 复制代码

    declare @trun_name varchar(8000)
    set @trun_name=''
    select @trun_name=@trun_name + 'truncate table ' + [name] + ' ' from sysobjects where xtype='U' and status > 0
    exec (@trun_name)

    该方法适合表不是非常多的情况,否则表数量过多,超过字符串的长度,不能进行完全清理.
    2.利用游标清理所有表

     代码如下 复制代码

    declare @trun_name varchar(50)
    declare name_cursor cursor for
    select 'truncate table ' + name from sysobjects where xtype='U' and status > 0
    open name_cursor
    fetch next from name_cursor into @trun_name
    while @@FETCH_STATUS = 0
    begin
      exec (@trun_name)
     print 'truncated table ' + @trun_name
     fetch next from name_cursor into @trun_name
    end
    close name_cursor
    deallocate name_cursor

    这是我自己构造的,可以做为存储过程调用, 能够一次清空所有表的数据,并且还可以进行有选择的清空表.
    3.利用微软未公开的存储过程

     代码如下 复制代码

    exec sp_msforeachtable "truncate table ?"



    转载:http://www.111cn.net/database/mssqlserver/48639.htm

    我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程

    Sql Server中清空所有数据表中的记录

    清空所有数据表中的记录:

    复制代码代码如下:
    exec sp_msforeachtable  @Command1 ='truncate table ?'

    删除所有数据表:

    复制代码代码如下:
    exec sp_msforeachtable 'delete   N''?'''

    清空SQL Server数据库中所有表数据的方法(有约束的情况)

    其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程。

      也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,删除不了,因为可能有外键约束,一个常见的数据库结构是一个主表,一个子表,这种情况下一般都得先删除子表记录,再删除主表记录。

      说道删除数据记录,往往马上会想到的是delete和truncate语句,但在遇到在两个或多个表之间存在约束的话,这两个语句可能都会失效,而且最要命的是这两个命令都只能一次操作一个表。那么真正遇到要删除SQL Server数据库中所有记录时,该怎么办呢?有两个选择:

      1.按照先后顺序逐个删除,这个方法在表非常多的情况下显得很不现实,即便是表数量不多,但约束比较多时,你还是要花费大量的时间和精力去研究其间的约束关系,然后找出先删哪个表,再删哪个表,最后又删哪个表。

      2.禁用所有约束,删除所有数据,最后再启用约束,这样就不用花时间和精力去研究什么约束了,只需要编写一个简单的存储过程就可以自动完成这个任务。

    复制代码代码如下:

    CREATE PROCEDURE sp_DeleteAllData
    AS
    EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
    EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'
    EXEC sp_MSForEachTable 'DELETE FROM ?'
    EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
    EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'
    EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'
    GO 

    从这两个选择中不难看出第二个选择是最简单有效的了,那么在使用第二个选择时,具体该怎么实施呢?

      首先得编写代码循环检查所有的表,这里我推荐一个存储过程sp_MSForEachTable,因为在微软的官方文档中没有对这个存储过程有描述,很多开发人员也许都还未曾听说,所以你在互联网上搜索得到的解决办法大多很复杂,也许有的人会认为,既然没有官方文档,这个存储过程可能会不稳定,打心理上会排斥它,但事实并非如此。下面来先看一个完整的脚本:

      这个脚本创建了一个命名为sp_DeleteAllData的存储过程,前面两行语句分别禁用约束和触发器,第三条语句才是真正地删除所有数据,接下里的语句分别还原约束和触发器,最后一条语句是显示每个表中的记录,当然这条语句也可以不要,我只是想确认一下是否清空了所有表而已。

      你可以在任何数据库上运行这个存储过程,当然不要在生成数据库上运行,可别怪我没告诉你!不管怎样,还是先备份一下数据库,使用备份数据库还原,然后再运行该存储过程,呵呵,即使是一个大型数据库,也要不多长时间,你的数据库就成一个空库了

    第三种方法:TRUNCATE TABLE 

    在sql server数据库中快速删除记录,清空表若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE 速度更快,并且使用更少的系统资源和事务日志资源。 

    与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点: 

    所用的事务日志空间较少。 

    DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。 

    使用的锁通常较少。 

    当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。 

    如无例外,在表中不会留有任何页。 

    执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。 

    与 DELETE 语句相同,使用 TRUNCATE TABLE 清空的表的定义与其索引和其他关联对象一起保留在数据库中。

    转载:http://www.jb51.net/article/42239.htm

    展开全文
  • SQL删除表中数据语句

    千次阅读 2020-11-11 15:49:20
    如果你想从数据库删除记录,那么需要使用DELETE语句。DELETE语句的基本格式如下: DELETE FROM <表名> WHERE ...; 如果WHERE条件没有匹配到任何记录,DELETE语句不会报错,也不会有任何记录被删除。 ...
  • SQL语句删除数据库表中重复数据

    千次阅读 2016-03-23 10:22:05
     用SQL语句,删除掉重复项只保留一条 ...1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId
  • 数据库删除表数据

    2021-03-22 10:08:51
    Delete:用于删除表中的行(注:可以删除某一行;也可以在不删除表的情况下(即意味着表的结构、属性、索引完整)删除所有行) 语法:删除某一行:Delete From 表名称  Where 列名称=值 删除所有行: Delete ...
  • 在Oracle数据库删除表中相同数据的方法是用到in语句,本文通过实例来讲解删除表中相同数据的方法。
  • 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中数据可以使用Delete语句或者Truncate语句,下面分别介绍。 一、delete语句 (1)有条件删除 语法格式:delete [from] table_name [where ...
  • 数据库表的插入更新表中的数据记录删除表中数据记录 表的插入 删除数据记录是数据操作中常见的操作,可以删除表中已经存在的数据记录。在MySQL中可以通过DELETE语句来删除数据记录,该SQL语句可以通过以下几种方式...
  • A表 id name price 1 茶叶 ...如图,假设有表A,A中数据如下,如何用一条sql语句删除表中重复数据,保留其id值最小的那一条数据(也就是id为1,3,4的保留) ...
  • 数据表中数据的插入 数据表中某些数据的修改 数据表或表内元素的删除 Hello,你好哇,我是灰小猿!一个超会写bug的程序猿! 最近在进行SQL server数据库的相关学习,所以对该数据库的一些常用的操作语句进行了些...
  • 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中数据可以使用Delete语句或者Truncate语句,下面分别介绍。 一、delete语句 (1)有条件删除 语法格式:delete [from] table_name [where ...
  • oracle数据库删除数据Delete语句和Truncate语句的使用比较作者:oracle当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中数据可以使用Delete语句或者Truncate语句,下面分别介绍当表中的数据不...
  • <update id="truncate"> truncate table [表名] </update>
  • 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中数据进行增加,修改,删除及查询操作。 l什么是数据库管理系统 数据库管理系统(DataBase Management ...
  • SQL语句解释大全--从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --...
  • 1,删除表 drop 1.1 执行drop table table_name 语句 被 drop后的表被放在用户回收站(user_recyclebin)里,而没有被直接删除掉,回收站里的表可以被恢复。 通过查询回收站user_recyclebin获取被删除的表信息,...
  • 快速删除数据库中所有表中数据 原文:快速删除数据库中所有表中数据select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc; 该条语句执行之后会将数据库中...
  • 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中数据进行增加,修改,删除及查询操作。 什么是数据库管理系统 数据库管理系统(DataBase Management ...
  • 用户可以对数据库中数据进行增加,修改,删除及查询操作。 B: 什么是数据库管理系统 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护...
  • --选择需要删除的表 select table_name from user_tables --得到需要删除表语句 select 'truncate table '||table_name||';' from user_tables --复制语句,执行删除

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,738
精华内容 2,295
关键字:

数据库删除表中数据语句