用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 数据库开发教程 > MySQL教程 > Mysql使用实例 > 文章正文
MySQL数据库技术(14)
iTbulo.COM 2005-4-10 佚名()

    3.4.2 DROP TABLE 语句
    删除表比创建表要容易得多,因为不需要指定有关其内容的任何东西;只需指定其名称即可,如:
    DROP TABLE tb1_name
    MySQL 对DROP TABLE 语句在某些有用的方面做了扩充。首先,可在同一语句中指定几个表对它们进行删除,如:
    DROP TABLE tb1_name1,tb1_name2,......
    其次,如果不能肯定一个表是否存在,但希望如果它存在就删除它。那么可在此语句中增加IF EXISTS。这样,如果DROP TABLE 语句中给出的表不存在,MySQL 不会发出错误信息。如:
    DROP TABLE IF EXISTS tb1_name
    IF EXISTS 在mysql 所用的脚本中很有用,因为缺省情况下, mysql 将在出错时退出。例如,有一个安装脚本能够创建表,这些表将在其他脚本中继续使用。在此情形下,希望保证此创建表的脚本在开始运行时无后顾之忧。如果在该脚本开始处使用普通的DROP TABLE,那么它在第一次运行时将会失败,因为这些表从未创建过。如果使用IF EXISTS,就不会产生问题了。当表已经存在时,将它们删除;如果不存在,脚本继续运行。
    3.4.3 创建和删除索引
    索引是加速表内容访问的主要手段,特别对涉及多个表的连接的查询更是如此。这是第4章“查询优化”中的一个重要内容,第4章讨论了为什么需要索引,索引如何工作以及怎样利用它们来优化查询。本节中,我们将介绍索引的特点,以及创建和删除索引的语法。
    1. 索引的特点
    MySQL 对构造索引提供了很大的灵活性。可对单列或多列的组合进行索引。如果希望能够从一个表的不同列中找出一个值,还可以在一个表上构造不止一个索引。如果某列为串类型而非ENUM 或SET 类型,可以选择只对该列最左边的n 个字符进行索引。如果该列的前n个字符最具有唯一性,这样做一般不会牺牲性能,而且还会对性能有大的改善:用索引列的前缀而非整个列可使索引更小且访问更快。虽然随着MySQL 的进一步开发创建索引的约束将会越来越少,但现在还是存在一些约束的。下面的表根据索引的特性,给出了ISAM 表和MyISAM 表之间的差别:

    从此表中可以看到,对于ISAM 表来说,其索引列必须定义为NOT NULL,并且不能对BLOB 和TEXT 列进行索引。MyISAM 表类型去掉了这些限制,而且减缓了其他的一些限制。两种表类型的索引特性的差异表明,根据所使用的MySQL 版本的不同,有可能对某些列不能进行索引。例如,如果使用3.23 版以前的版本,则不能对包含NULL 值的列进行索引。
    如果使用的是MySQL 3.23版或更新的版本,但表是过去以ISAM 表创建的,可利用ALTER TABLE 很方便地将它们转换为MyISAM 存储格式,这样使您能利用某些较新的索引功能,如:
    ALTER TABLE tb1_name TYPE=MYISAM
    2. 创建索引
    在执行C R E ATE TABLE 语句时,可为新表创建索引,也可以用CREATE INDEX 或ALTER TABLE 来为一个已有的表增加索引。C R E ATE INDEX 是在MySQL 3.23版中引入的,但如果使用3.23 版以前的版本,可利用A LTER TABLE 语句创建索引(MySQL 通常在内部将CRE ATE INDEX 映射到A LTER TA B L E)。可以规定索引能否包含重复的值。如果不包含,则索引应该创建为P R I M A RY KEY 或UNIQUE 索引。对于单列惟一索引,这保证了列不包含重复的值。对于多列惟一索引,它保证值的组合不重复。
    PRIMARY KEY 索引和UNIQUE 索引非常类似。事实上, PRIMARY KEY 索引仅是一个具有名称PRIMARY 的UNIQUE 索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。同一个表中可有多个UNIQUE 索引,虽然这样做意义不
大。
    为了给现有的表增加一个索引,可使用ALTER TABLE 或CREATE INDEX 语句。ALTER TABLE 最常用,因为可用它来创建普通索引、UNIQUE 索引或PRIMARY KEY 索引,如:

    其中tbl_name 是要增加索引的表名,而column_list 指出对哪些列进行索引。如果索引由不止一列组成,各列名之间用逗号分隔。索引名index_name 是可选的,因此可以不写它,MySQL 将根据第一个索引列赋给它一个名称。ALTER TABLE 允许在单个语句中指定多个表的更改,因此可以在同时创建多个索引。
    CREATE INDEX 可对表增加普通索引或UNIQUE 索引,如:

    tbl _ name、index_name 和column_list 具有与A LTER TABLE 语句中相同的含义。这里索引名不可选。不能用CREATE INDEX 语句创建PRIMARY KEY 索引。要想在发布CREATE TABLE 语句时为新表创建索引,所使用的语法类似于ALTER TABLE 语句的语法,但是应该在您定义表列的语句部分指定索引创建子句,如下所示:

    与ALTER TABLE 一样,索引名对于INDEX 和UNIQUE 都是可选的,如果未给出,MySQL 将为其选一个。有一种特殊情形:可在列定义之后增加PRIMARY KEY 创建一个单列的PRIMARY KEY索引,如下所示:

    前面所有表创建样例都对索引列指定了NOT NULL。如果是ISAM 表,这是必须的,因为不能对可能包含NULL 值的列进行索引。如果是MyISAM 表,索引列可以为N U L L,只要该索引不是P R I M A RY KEY 索引即可。
    如果对某个串列的前缀进行索引(列值的最左边n 个字符),应用column_list 说明符表示该列的语法为col_name(n) 而不用c o l _ name。例如,下面第一条语句创建了一个具有两个CHAR 列的表和一个由这两列组成的索引。第二条语句类似,但只对每个列的前缀进行索引:

    在某些情况下,可能会发现必须对列的前缀进行索引。例如,索引行的长度有一个最大上限,因此,如果索引列的长度超过了这个上限,那么就可能需要利用前缀进行索引。在MyISAM 表索引中,对BLOB 或TEXT 列也需要前缀索引。对一个列的前缀进行索引限制了以后对该列的更改;不能在不删除该索引并使用较短前缀的情况下,将该列缩短为一个长度小于索引所用前缀的长度的列。
    3. 删除索引
    可利用DROP INDEX 或A LTER TABLE 语句来删除索引。类似于CREATE INDEX 语句,DROP INDEX 通常在内部作为一条A LTER TABLE 语句处理,并且DROP INDEX 是在MySQL 3.22 中引入的。删除索引语句的语法如下:

    前两条语句是等价的。第三条语句只在删除PRIMARY KEY 索引时使用;在此情形中,不需要索引名,因为一个表只可能具有一个这样的索引。如果没有明确地创建作为PRIMARY KEY 的索引,但该表具有一个或多个UNIQUE 索引,则MySQL 将删除这些UNIQUE 索引中的第一个。
    如果从表中删除了列,则索引可能会受到影响。如果所删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将被删除。

上一页  [1] [2] [3] [4] 下一页

文章搜索
相关资讯
相关文章 相关下载
MySQL数据库技术(01)
MySQL数据库技术(02)
MySQL数据库技术(03)
MySQL数据库技术(04)
MySQL数据库技术(05)
焦点信息