设为首页 加入收藏

TOP

MySQL中数据表操作详解(一)
2014-11-23 17:42:15 来源: 作者: 【 】 浏览:98
Tags:MySQL 数据 操作 详解

摘要:本文讲解了MySQL数据库中表的操作方法。通过本文的学习您应该掌握如何在MySQL中创建表、删除表,如何改变表的结构、名字,如何使用mysqlshow实用程序等。

使用MySQL,目前你可以在三种基本数据库表格式间选择。当你创建一张表时,你可以告诉MySQL它应该对于表使用哪个表类型。MySQL将总是创建一个.frm文件保存表和列定义。视表类型而定,索引和数据将在其他文件中存储。

你能用ALTER TABLE语句在不同类型的表之间变换。

MyISAM

在MySQL 3.23中,MyISAM是缺省表格类型,它是基于ISAM代码并且有很多有用的扩展。索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中。你能用myisamchk实用程序检查/修复MyISAM表。

ISAM

你也可以使用放弃的ISAM。这将在不久消失,因为MyISAM是同一个东西的更好实现。ISAM使用一个B-tree索引,这个索引存储在一个有.ISM扩展名的文件中并且数据存储在有.ISD扩展名的文件中,你可用isamchk实用程序检查/修复ISAM表。ISAM表不是跨OS/平台二进制可移植的。

HEAP

HEAP表格使用一个杂凑(hashed)索引并且存储在内存中。这使他们更快,但是如果MySQL崩溃,你将失去所有存储的数据。HEAP作为临时表很可用!

用SHOW/ DESCRIBE语句显示数据表的信息

句法:

SHOW TABLES [FROM db_name] [LIKE wild]
or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]
or SHOW INDEX FROM tbl_name [FROM db_name]
or SHOW TABLE STATUS [FROM db_name] [LIKE wild]

{DESCRIBE | DESC} tbl_name {col_name | wild}


你能使用db_name.tbl_name作为tbl_name FROM db_name句法的另一种选择。

SHOW TABLES列出在一个给定的数据库中的表。你也可以用mysqlshow db_name命令得到这张表。

注意:如果一个用户没有一个表的任何权限,表将不在SHOW TABLES或mysqlshow db_name中的输出中显示。

SHOW COLUMNS列出在一个给定表中的列。如果列类型不同于你期望的是基于CREATE TABLE语句的那样,注意,MySQL有时改变列类型。

DESCRIBE语句提供了类似SHOW COLUMNS的信息。DESCRIBE提供关于一张表的列的信息。col_name可以是一个列名字或包含SQL的“%”和“_”通配符的一个字符串。这个语句为了与 Oracle 兼容而提供的。

SHOW TABLE STATUS(在版本3.23引入)运行类似SHOW STATUS,但是提供每个表的更多信息。你也可以使用mysqlshow --status db_name命令得到这张表。

SHOW FIELDS是SHOW COLUMNS一个同义词,SHOW KEYS是SHOW INDEX一个同义词。

你也可以用mysqlshow db_name tbl_name或mysqlshow -k db_name tbl_name 列出一张表的列或索引。

SHOW INDEX以非常相似于ODBC的SQLStatistics调用的格式返回索引信息。

使用mysqlshow 工具得到信息

下面简单介绍一下mysqlshow实用程序的用法,在得到数据库和表的信息上,使用起来非常方便。

得到已有数据库的列表:

shell> mysqlshow

列出某数据库db_name中已有的表:

shell> mysqlshow db_name

列出某数据库表db_name.tbl_name的结构信息:

shell>mysqlshow db_name tbl_name

列出一张表的索引:

shell> mysqlshow k db_name tbl_name

用CREATE TABLE 语句创建数据表

用 CREATE TABLE 语句创建表。此语句的完整语法是相当复杂的,因为存在那么多的可选子句,但在实际中此语句的应用相当简单。如我们在第 1 章中使用的所有 CREATE TABLE 语句都不那么复杂。

有意思的是,大多数复杂东西都是一些子句,这些子句MySQL在分析后扔掉。参阅附录 1 可以看到这些复杂的东西。

1、CREATE TABLE 语句的基本语法

CREATE TABLE tbl_name(create_definition,...) [TYPE =table_type]
create_definition: col_name type [NOT NULL | NULL]
[DEFAULT default_value] [AUTO_INCREMENT][PRIMARY KEY]


在MySQL3.22或以后版本中,表名可以被指定为db_name.tbl_name,不管有没有当前的数据库都可以。

例如,创建一个访问者留言表:

shell> mysql u root p
mysql> create database mytest;
mysql> CREATE TABLE guestbook
-> (
-> visitor VARCHAR(40),
-> comments TEXT,
-> entrydate DATETIME
->);


如果一切正常,祝贺你,你已经建立了你的第一个表!

你所创建的表名为guestbook,你可以使用这个表来存储来字你站点访问者的信息。你是用REEATE TABLE语句创建的这个表,这个语句有两部分:第一部份指定表的名子;第二部份是括在括号中的各字段的名称和属性,相互之间用逗号隔开。

表guestbook有三个字段:visitor,comments 和entrydate。visitor字段存储访问者的名字,comments字段存储访问者对你站点的意见,entrydate字段存储访问者访问你站点的日期和时间。

注意每个字段名后面都跟有一个专门的表达式。例如,字段名comments后面跟有表达式TEXT。这个表达式指定了字段的数据类型。数据类型决定了一个字段可以存储什么样的数据。因为字段comments包含文本信息,其数据类型定义为文本型。

2、如何指定表的类型

你也可以在创建表时指定表的类型,如果不指定表的类型,在3.22及以前版本中缺省为ISAM表,在3.23版本中缺省为MyISAM表。你应该尽量使用MyISAM表。指定表的类型经常用于创建一个HEAP表:

mysql> CREATE TABLE fast(id int,articles TEXT) TYPE=HEAP;

3、隐含的列说明的改变

在某些情况下,MySQL隐含地改变在一个CREATE TABLE语句给出的一个列说明。(这也可能在ALTER TABLE。)长度小于4的VARCHAR被改变为CHAR。如果在一个表中的任何列有可变长度,结果是整个行是变长的。因此, 如果一张表包含任何变长的列(VARCHAR、TEXT或BLOB),所有大于3个字符的CHAR列被改变为VARCHAR列。这在任何方面都不影响你如何使用列;在MySQL中,VARCHAR只是存储字符的一个不同方法。MySQL实施这种改变,是因为它节省空间并且使表操作更快捷。

TIMESTAMP的显示尺寸必须是偶数且在2 ~ 14

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇excel2010安装分析工具库(Analys.. 下一篇MysqlDoor函数创建浅析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: