Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握MS ACCESS SQL(09)

时 间:2017-12-29 16:08:33
作 者:Big Young   ID:252  城市:襄阳
摘 要:    用SQL删除数据库表,即DROP TABLE语句的使用。
正 文:

第四节 用SQL删除数据库表

    前面说过,表是数据库的最基本对象,数据全部存储在表中,数据库的管理与操作最终都会涉及到表的操作,表的创建、修改及删除是最常见的事情,在讨论了表的创建与修改之后,我们再来看一下表的删除问题,这个在编程中经常会用到,如过渡性的临时表,用后都是需要删除(大多数据库系统都支持在内存中创建临时表,退出时会自动释放,但ACCESS却不支持这一特性,所有的表都是在库文件中创建,都是正式表,不删除会一直存在)。

    一、删除表的SQL语句的语法

    Drop TABLE table_name;

    参数说明:语句中的table_name是要删除的表的名称。

    Drop TABLE语句用于删除表(表的结构、属性以及索引也会被删除),删除内容和定义,释放空间。简单来说就是把整个表去掉,以后要新增数据是不可能的,除非新增一个表。例如:学生管理数据中,一个班的学生数据单独放在一个表中,包括学生的各个方面的数据,表名为“class”这时用Drop TABLE class,就是把整个班移除,学生的信息数据全部都消失了。所以这里特别提醒大家删除表时一定要小心谨慎,只有确认确实是不需要的表再实施删除操作,删除时一定要先备份数据。

    另外,“Drop TABLE”语句不能用于除去由“FOREIGN KEY”约束引用的表。必须先除去引用的“FOREIGN KEY”约束或引用的表。除去表时,表上的规则或默认值将解除绑定,任何与表关联的约束或触发器将自动除去。如果重新创建表,必须重新绑定适当的规则和默认值,重新创建任何触发器并添加必要的约束。在系统表上不能使用Drop TABLE语句。

    二、删除表语句Drop TABLE示例

    示例一,空表的删除。我们先来测试一下空白表的删除操作。首先来建立一个空表,名称为学生,我们用下面的SQL语句来操作:

    Create TABLE 学生

(

  学号     TEXT(10) PRIMARY KEY,

  姓名     TEXT(4) NOT NULL,

  性别     TEXT(1),

  出生年月 DATETIME,

  住址     TEXT(50),

  电话     TEXT(11)

);

    上面的语句执行后,表被创建,我们在导航窗格中可以看到名为学生的表,这个表中目前还没有数据任何数据,是一个真正的空白表,下面我们来测试一下对其进行删除操作:

    Drop TABLE 学生;

    命令运行后,学生表被删除,导航窗格中再看不到表名了,为了确认表确实被我们删除了,我们可以再执行一次“Drop TABLE 学生;”命令,系统会弹出一个错误提示框,告诉你学生表不存在。

    示例二,删除有数据的表。现在我们来创建一个客户表,用如下语句:

    Create TABLE 客户

(

  编号 INTEGER NOT NULL,

  姓名 TEXT(50) NOT NULL,

  电话 TEXT(11),

  地址 TEXT(50)

);

    这时我们在导航窗格中看到了客户表的名字,表明表已创建。我们再来插入一些数据,用以下的语句来插入:

    Insert INTO 客户 (编号,姓名,电话,地址) VALUES (1, "张三", "07103511057", "湖北襄阳东街26");

    Insert INTO 客户 (编号,姓名,电话,地址) VALUES (2, "李四", "07103511058", "湖北襄阳西东街66");

    Insert INTO 客户 (编号,姓名,电话,地址) VALUES (3, "王五", "18903511088", "湖北襄阳西东街346");

    这三条命令执行下来,表中有了三条记录,我们用查询语句证实一下:

我们用“Select * FROM 客户;”查询一下,显示结果如下表:

编号

姓名

电话

地址

1

张三

07103511057

湖北襄阳东街26

2

李四

07103511058

湖北襄阳西东街66

3

王五

18903511088

湖北襄阳西东街346

    这说明表中的数据是存在的,表不为空。这时我们再来删除一下看看情况是什么样的:

    Drop TABLE 客户;

    执行后,表被删除了,再查询,表不存在了,原来的数据也没有了。这说明“Drop TABLE”不仅删除了表的结构,也删除了附加在表上的一切特性包括其中存储的数据,这提醒我们删除表一定要慎重,一定要先备份再删除否则后果非常严重哟。

    示例三,删除系统表测试。ACCESS是关系型数据库管理系统,它对自身的管理也采用了关系数据表来进行的,它的对象、属性等系统的特征都是记录在内部的表中,这些表称为系统表,由系统自动创建和维护,用户不能直接删除与修改。

    我们在ACCESS系统的导航窗格中点击鼠标右键,在弹出的菜单中选择导航选项……”命令,会弹出一个导航选项对话框,在此对话框中我们勾选“显示隐藏对象显示系统对象两个复选框后,再确定后,我们在导航窗格中会看上去许多以“MSys”开头的表,这些都系统自动创建和由系统自己维护的,我们只能查询,不能直接删除与修改,下面我们来测试一下看是不是这样。

    我们在SQL视图中键入“Drop TABLE MSysAccessStorage;”并执行,我们会看到一个错误对话框出现,告诉我们由于表‘MSysAccessStorage’ 下被别的用户或进程使用,数据库引擎无法锁定它。这表明我们不能删除系统的表,我们再试一下:“Drop TABLE MSysACEs;”这时还是会弹出一个错误提示框,上显示没有使用‘MSysACEs’对象的必要权限,请让系统管理员或安装此对象的人为您设置适当的权限。我们不是不能删除系统的表。



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助