【你也能从零基础学会网站开发】请你小心使用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操作
是不可逆的!
如果表
与表
之间存在依赖关系
也就是外键约束
的情况下,那么需要先删除
这些依赖关系
才能成功删除表
!
关于删除存储过程、索引、视图
这些,我会放到后面把这几个概念给大家讲解之后,再做说明!
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以
点击下方关注❤️
微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇