A. 如何用sql语言删除一个表
DROP命令。
1、drop table xx --xx是数据表的名字
作用:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。
2、 drop table test,就是把整个表 移除.里面的数据都消失
比如下面有一个[FusionChartsDB]数据库中的test表。
B. SQL如何直接批量删除表
SQL直接批量删除表的方法步骤:
所需工具原料:phpmyadmin。
1.数据操作前进行数据备份。
4.打开文本框中输入命定执行:
deletefromwp_postswhere`post_date`>='2010-01-0100:00:00'and`post_date`<'2014-12-1422:00:00:00'。
【命令语句意思】:从wp_posts数据表的post_date字段中检索文章创建日期在2010年1月1日0时和2014年12月14日22时之间的数据进行删除操作。
5.成功后点击上部“浏览”按钮查看,表被删除,sql执行语句成功。
删除指令解析:
1.全部删除:deletefromtable。
2.部分删除:deletefromtableawherenuidin(selectnuidfromtableB)。
注意事项:
1.进行数据库操作前须要进行数据库备份。
2.数据库操作是删除数据文本,图片等上传文件不会受到影响。
C. SQL 怎样删除有外键约束的表
1、自动生成所有的DROP语句,将其中的MyDatabaseName替换成你的数据库名称:
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';2、然后,在生成的代码前后添加下面设置FOREIGN_KEY_CHECKS变量的语句:
SET FOREIGN_KEY_CHECKS = 0
-- DROP语句
SET FOREIGN_KEY_CHECKS = 1;
(3)sql删除表锁定扩展阅读:
外键约束可双击关系线添加外键约束,外键约束有四种不同的选项:CASCADE, SET NULL, NO ACTION, RESTRICT。
1、CASCADE : 从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行。[ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。]
2、SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。[注意,这些在外键列没有被设为NOT NULL时才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。]
3、NO ACTION: InnoDB拒绝删除或者更新父表。
4、RESTRICT: 拒绝删除或者更新父表。[指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的。]
D. SQL删除数据库中的所有数据
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 清空的表的定义与其索引和其他关联对象一起保留在数据库中。
E. sqlserver怎么清除死锁
查询语句的表名后加(nolock)少用临时表和group by HAVING。
F. sql怎么删除数据库表
数据库删除语句如下:
1、delete。基础用法:delete from table(表名)。这个用于删除有明确定义的数据或者整个表的数据。比如:id是唯一不可重复的,delete from Student where id=5,即把id=5的唯一的一条数据删除。
2、rop基础用法:drop table +表名称、drop database +数据库名称、drop index +索引名称、drop view +视图名称(*在不同数据库中写法不一定是一样的),只针对删除表来说,delete用于删除整个表的数据以及结构。即把整个表彻底删除,表中的数据和字段等等全部被删除。
3、truncate基础用法:truncate table +表名称。删除表中的全部数据,包括占用的id也会全部清除。表结构不会改变,一般来说想重新往表中导入数据,就会用到这个方法。
数据库删除语句的注意事项。
用delete语句删除掉的数据,原本的被占用id并不会被删除。意思是你删除掉了id中1-10的数据,你再往里加数据,id就是从11开始。所以有些不太熟练数据库的入门者,就可能会看到id断断续续(1,5,7,8,11)排序,有可能是因为使用了detele删除了某些数据。在删除数据之前,可以使用SELECT语句对DELETE语句中的WHERE子句进行测试,这样可以对即将删除的数据进行验证,保证不会勿删。
G. SQL Server表锁定原理以及如何解除锁定
SELECT resource_type, request_mode, resource_description WHERE resource_type 'DATABASE' order by request_modeROLLBACK TRAN 6. Bulk Update locks (BU) 数据库引擎在将数据大容量复制到表中时使用了大容量更新 (BU) 锁, 并指定了 TABLOCK 提示或使用 sp_tableoption 设置了 table lock on bulk load 表选项. 大容量更新锁(BU 锁)允许多个线程将数据并发地大容量加载到同一表, 同时防止其他不进行大容量加载数据的进程访问该表. 7. Key - Range locks 在使用可序列化事务隔离级别时, 对于 Transact-SQL 语句读取的记录集, 键范围锁可以隐式保护该记录集中包含的行范围. 键范围锁可防止幻读. 通过保护行之间键的范围, 它还防止对事务访问的记录集进行幻像插入或删除. 二: 死锁与死锁解除 1. 死锁 使用或管理数据库都不可避免的涉及到死锁. 一旦发生死锁, 数据相互等待对方资源的释放,会阻止对数据的访问, 严重会造成DB挂掉. 当资源被锁定, 无法被访问时, 可以终止访问DB的那个session来达到解锁的目的(即 Kill掉造成锁的那个进程). 在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。 例如: 事务A 获取了行 1 的共享锁。 事务B 获取了行 2 的共享锁。 现在,事务 A 请求行 2 的排他锁,但在事务 B 完成并释放其对行 2 持有的共享锁之前被阻塞。 现在,事务 B 请求行 1 的排他锁,但在事务 A 完成并释放其对行 1 持有的共享锁之前被阻塞。 事务B 完成之后事务 A 才能完成,但是事务 B 由事务 A 阻塞。该条件也称为循环依赖关系: 事务 A 依赖于事务 B,事务 B 通过对事务 A 的依赖关系关闭循环。 除非某个外部进程断开死锁,否则死锁中的两个事务都将无限期等待下去。 Microsoft SQL Server 数据库引擎死锁监视器定期检查陷入死锁的任务。 如果监视器检测到循环依赖关系,将选择其中一个任务作为牺牲品,然后终止其事务并提示错误。 这样,其他任务就可以完成其事务。 对于事务以错误终止的应用程序,它还可以重试该事务,但通常要等到与它一起陷入死锁的其他事务完成后执行。 2. 死锁检测 2.1 SQL Server 数据库引擎自动检测 SQL Server 中的死锁循环。数据库引擎选择一个会话作为死锁牺牲品,然后终止当前事务(出现错误)来打断死锁。 2.2 查看DMV: sys.dm_tran_locks 2.3 SQL Server Profiler能够直观的显示死锁的图形事件. 三: 锁兼容性 锁兼容性控制多个事务能否同时获取同一资源上的锁。 如果资源已被另一事务锁定,则仅当请求锁的模式与现有锁的模式相兼容时,才会授予新的锁请求。 如果请求锁的模式与现有锁的模式不兼容,则请求新锁的事务将等待释放现有锁或等待锁超时间隔过期。 例如,没有与排他锁兼容的锁模式。 如果具有排他锁(X 锁),则在释放排他锁(X 锁)之前,其他事务均无法获取该资源的任何类型(共享、更新或排他)的锁。 另一种情况是,如果共享锁(S 锁)已应用到资源,则即使第一个事务尚未完成,其他事务也可以获取该项的共享锁或更新锁(U 锁)。 但是,在释放共享锁之前,其他事务无法获取排他锁。
H. 求sql语句:informix 创建、删除、锁定 数据库用户
informix直接删除唯一索引的语法:
drop index 索引名 ;
可做如下测试:
1、创建表:
create table tab_yzh_test_01
(
proct_id decimal(20,0),
proct_no varchar(40),
cust_level varchar(10)
);
2、创建唯一索引:
create unique index idx_tab_yzh_test_01_01 on tab_yzh_test_01(proct_id);
3、删除唯一索引:
drop index idx_tab_yzh_test_01_01 ;
I. SQL中 如何删除约束
1、首先找到要操作的表,右键单击选择设计选项
J. SQL中怎样通过锁机制,使表的第一行不允许被删除
锁是一种机制,不是事务,实现不了。
可以用触发器实现。
不知道你所谓的表的第一行是怎么定义的,假设是主键为1的行吧
create trigger tr_name on table
instead of delete
as
begin
delete table from table inner join deleted on ....(主键关联)
where deleted.主键!=1
end
关联之后排除第一行就可以了