🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

DROP语句介绍
在我们的数据库中中,DROP语句的作用用于删除数据库对象的强大命令。
它可以删除包括表、视图、存储过程、索引、数据库等等~ ,但是如果我们使用不当,可能会导致数据丢失,所以我们平常在执行DROP语句之前,应该确保数据或者数据库、表这些对象已备份或者不再需要它们!
我就简单的用一个数据库来测试一下,通常情况下,使用DROP语句都是用来删除表和数据库当然还可能有其他的!
我们先简单从里到外来删除数据库对象!
删除表主键索引
在SQL Server 2000中,如果我们想删除一个主键 也就是说删除主键索引通常意味着删除主键约束,
我们需要使用ALTER TABLE语句结合DROP CONSTRAINT子句来完成!
语法规则
ALTER TABLE 表名称 DROP CONSTRAINT 主键索引名称;
注意
删除主键的时候,我们需要知道要删除的主键的名称 !
在SQL Server中,我们创建主键约束通常会有一个自动生成的名称,
但如果我们在建表时指定了主键名称,那么就可以直接使用那个名称进行删除!
注意
关于我们创建表的时候,如何给主键创建名称这里我简单的给大家讲一下
我们在SQL Server 2000中创建表的时候,可以通过在PRIMARY KEY约束后添加CONSTRAINT子句来为主键指定名称!
语法规则
CONSTRAINT 主键名称 PRIMARY KEY (字段1,[字段2,字段N..])
举个栗子
这里我们简单创建一个Employees表 并且指定主键为其命名!
CREATE TABLE Employees(
EmployeeID INT NOT NULL,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
DateOfBirth DATETIME,
CONSTRAINT pk_emp PRIMARY KEY (EmployeeID)
)
如图

我们可以在企业管理器中去查询一下,这个表的主键索引名称
如图

举个栗子
我们现在有一个t_student表, 我们要是不知道主键索引的名称,可以在企业管理器中进行查询!
如图

当然你也可以使用SQL语句进行查询某个表的主键名称, 在SQL Server 2000中语法规则如下
SELECT name FROM sysobjects WHERE xtype = 'PK' AND parent_obj = OBJECT_ID('表名称');
如图

那么我们知道名称之后,执行以下语句
ALTER TABLE t_student DROP CONSTRAINT PK__t_student__74AE54BC;
我们来执行一下看看效果!
如图

然后你可以回到 企业管理器中查看一下是否删除了主键约束索引
如图

删除表中的外键关联
这个我在之前的FOREIGN KEY章节也已经讲过了,我们这里简单的回顾一下~
首先语法规则如下:
ALTER TABLE 表名称 DROP CONSTRAINT 外键名称
那么这里主要就是要注意的是外键名称, 如果你在创建的时候,指定的外键名称,那么在实际开发中,最好做一个记录,如果你没有指定外键名称 那么系统将给我们生成一个外键名称
这个时候,可能就需要我们自己去使用SQL查看了!
具体查看外键规则语法如下
SELECT c.constraint_name, c.constraint_type FROM information_schema.table_constraints c
WHERE c.table_name = '表名称' AND c.constraint_type = 'FOREIGN KEY'
举个栗子

那么删除就很简单了!
ALTER TABLE S_C DROP CONSTRAINT test1
ALTER TABLE S_C DROP CONSTRAINT test2
删除表中的字段
在SQL Server 2000中,如果我们想要删除一个表中的字段, 那么也是需要可以使用ALTER TABLE语句配合DROP COLUMN子句来实现的!
语法规则
ALTER TABLE 表名称 DROP COLUMN 字段名;
举个栗子
ALTER TABLE t_student DROP COLUMN classId;
如图

删除表中所有数据记录
有的时候,我们仅仅需要删除表中的数据记录,并不删除表结构本身!
很多人认为是使用delete语句来实现~
但是delete语句虽然可以删除表中的所有数据记录,并且保留表结构,但是表中的某些东西依旧存在,比如说:索引、触发器这些仍然会保留!
举个栗子
我们现在来使用delete来清空一个表,同时,我们也看看主键索引值的变化!
如下
delete from Employee;
如图

那现在我们再次插入数据到Employee表中
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('张军',26,3600,'开发部门','333-222-777',5);
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('王辉',30,5600,'技术部门','111-000-888',4);
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('张三进',21,2301,'市场部门','666-777-111',2);
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('杨小明',26,4520,'开发部门','888-999-000',3);
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('刘罗戈',19,7800,'新媒体部门','111-111-111',4);
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('毛利兰',22,3000,'市场部门','999-999-321',1);
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('詹华',22,8000,'运营部门','999-888-321',8);
INSERT INTO Employee(ename,eage,esaley,epart,ephone,cid) VALUES('何林',37,2500,'制造部门','100-888-321',9);
如图

然后再次查询一下,看看
如图

我们可以注意到,主键字段的自动递增并没有从1开始,而是继续进行迭代走的!
那么该怎么办呢?
其实我们可以使用TRUNCATE TABLE语句
语法规则
TRUNCATE TABLE 表名称;
我们再来试试这个命令看看效果怎么样
如下
TRUNCATE TABLE Employee;

然后重新插入数据看看效果!
如图

看,主键递增从1开始了, 就是这么神奇!
因为TRUNCATE TABLE语句删除所有行后,表中的自动增长计数器(IDENTITY) 将重置为初始值
也就是从1开始! 这意味着,如果我们再次向表中插入数据,新数据的ID将从1开始,在某些需求下,可能就会使用到,并且与DELETE语句相比,TRUNCATE TABLE语句通常执行得更快!
注意: 使用TRUNCATE TABLE语句后,不能使用ROLLBACK语句来撤销删除操作,无法在事务中进行回滚 这个我们后面再说!
删除表(table)
删除表的操作就非常简单了~ 但是执行这个操作之前,一定要小心,备份好相关数据!
语法如下
DROP TABLE 表名称;
举个栗子
DROP TABLE S_C;
如图

那么此时这个表就彻底被删除了!
删除数据库
删除数据库和删除表是一样的,没什么区别,方法也很简单
语法规则
DROP DATABASE 数据库名;
举个栗子
DROP DATABASE test;
注意:在删除数据库之前,先把在使用的数据库关闭一下, 在SQL Server 2000中,其实就是切换到其他数据库就可以了,我个人建议,最好也把企业管理器关闭了再进行删除数据库!
如图

这样就成功删除了!

最后
我们在执行DROP语句之前,一定要确保已经备份了重要数据,因为DROP操作是不可逆的!
如果表与表之间存在依赖关系也就是外键约束的情况下,那么需要先删除这些依赖关系才能成功删除表!
关于删除存储过程、索引、视图这些,我会放到后面把这几个概念给大家讲解之后,再做说明!


"👍点赞" "✍️评论" "收藏❤️"欢迎一起交流学习❤️❤️💛💛💚💚

好玩 好用 好看的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇


1019

被折叠的 条评论
为什么被折叠?



