【你也能从零基础学会网站开发】请你小心使用SQL Server中的DROP语句

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

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操作是不可逆的!

如果之间存在依赖关系也就是外键约束的情况下,那么需要先删除这些依赖关系才能成功删除表!

关于删除存储过程、索引、视图这些,我会放到后面把这几个概念给大家讲解之后,再做说明!

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

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