⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 06-5.html

📁 MySQL4.1.0 中文参考手册
💻 HTML
📖 第 1 页 / 共 4 页
字号:
  <HTML>
  <HEAD>
  <TITLE>MySQL 4.1.0 中文参考手册 --- 犬犬(心帆)翻译</TITLE>
   <style> code {color:purple} tt {color:green} samp {color:navy} pre {color:maroon} </style>
   <META http-equiv="Content-Type" content="text/html; charset=gb2312">
   <META name="description" content="MySQL 4.1.0  中文参考手册">
   <META name="keywords" content="MySQL,4.1.0,Shuixin13,MySQL 4.1.0,中文,中文参考手册,犬犬(心帆)">
   <LINK rel="shortcut icon" href="shuixin13.ico" />
   <LINK href="images/index.css" type=text/css rel=STYLESHEET>
<SCRIPT language=javascript src="images/index.js"></SCRIPT>
<SCRIPT language=javascript><!--
x = new Date()  
function cal() {
	y = new Date()   
	diff = y.getTime() - x.getTime()
	document.write("载入时间 " + diff/1000 + " 秒")
}
//--></SCRIPT>
<SCRIPT language=JavaScript>
var currentpos,timer; 
function initialize() 
{ 
timer=setInterval("scrollwindow()",10); 
} 
function sc() 
{ 
clearInterval(timer); 
} 

function scrollwindow() 
{ 
currentpos=document.body.scrollTop; 
window.scroll(0,++currentpos); 
if (currentpos != document.body.scrollTop) 
sc(); 
} 
document.onmousedown=sc 
document.ondblclick=initialize 
</SCRIPT>

  </HEAD>
  <BODY BGCOLOR=#efefff TEXT=#000000 LINK=#101090 VLINK=#7030B0>
<H1>MySQL Reference Manual for version 4.1.0-alpha.</H1>
<P>
<P><HR>
<H2><A NAME="Data_Definition"></A>6.5 数据定义: <CODE>CREATE</CODE>、<CODE>DROP</CODE>、<CODE>ALTER</CODE></H2>

<H3><A NAME="CREATE_DATABASE"></A>6.5.1  <CODE>CREATE DATABASE</CODE> 句法</H3>

<P>
<A NAME="IDX1446"></A>

</P>

<PRE>
CREATE DATABASE [IF NOT EXISTS] db_name
</PRE>

<P>
<CODE>CREATE DATABASE</CODE> 以给定名字创建一个数据库。允许的数据库名规则在章节 <A HREF="06-1.html#Legal_names">6.1.2  数据库、表、索引、列和别名</A> 中被给出。 如果数据库已经存在,并且你没有指定 <CODE>IF NOT EXISTS</CODE>,这时会产生一个错误。
</P>

<P>
在 MySQL 中,数据库以包含数据库表对应文件的目录实现的。因为数据库在初始创建时没有表,所以 <CODE>CREATE DATABASE</CODE> 语句只在 MySQL 数据目录下创建一个目录。
</P>

<P>
<A NAME="IDX1447"></A>
你也可以使用 <CODE>mysqladmin</CODE> 创建一个数据库。查看章节 <A HREF="manual1.html#Client-Side_Scripts">4.8  MySQL 客户端脚本和实用程序</A>。
</P>



<H3><A NAME="DROP_DATABASE"></A>6.5.2  <CODE>DROP DATABASE</CODE> 句法</H3>

<P>
<A NAME="IDX1448"></A>
<A NAME="IDX1449"></A>
<A NAME="IDX1450"></A>

</P>

<PRE>
DROP DATABASE [IF EXISTS] db_name
</PRE>

<P>
<CODE>DROP DATABASE</CODE> 移除数据库是的所有表并删除数据库。如果你在一个符号链接(symbolic link)数据库上执行一个 <CODE>DROP DATABASE</CODE>,链接与原始数据库均会被删除。<STRONG>要非常小心地使用这个命令!</STRONG>
</P>
<P>

<CODE>DROP DATABASE</CODE> 返回从数据库目录下删除的文件数目。通常,它是表的数目的三倍,因为第张表通常对应于一个 <TT>“.MYD”</TT> 文件、一个 <TT>“.MYI”</TT> 文件和一个 <TT>“.frm”</TT> 文件。

</P>
<P>
<CODE>DROP DATABASE</CODE> 命令从给定的数据库目录下移除以下列为扩展名的所有文件:
</P>
<TABLE BORDER WIDTH="95%">
<TR><TD><STRONG>扩展名 </STRONG> </TD><TD> <STRONG>扩展名 </STRONG> </TD><TD> <STRONG>扩展名 </STRONG> </TD><TD> <STRONG>Ext</STRONG>
</TD></TR>
<TR><TD>.BAK </TD><TD> .DAT </TD><TD> .HSH </TD><TD> .ISD
</TD></TR>
<TR><TD>.ISM </TD><TD> .ISM </TD><TD> .MRG </TD><TD> .MYD
</TD></TR>
<TR><TD>.MYI </TD><TD> .db </TD><TD> .frm </TD><TD>
</TD></TR>
</TABLE>

<P>
所有包含两个数字的子目录(<CODE>RAID</CODE> 目录)也同样被删除。
</P>

<P>
在 MySQL 3.22 或以后的版本中,你可以使用关键词 <CODE>IF EXISTS</CODE> 以防止如果数据库不存在时发生错误。
</P>

<P>
<A NAME="IDX1451"></A>
你也可以使用 <CODE>mysqladmin</CODE> 移除数据库。查看章节 <A HREF="manual1.html#Client-Side_Scripts">4.8  MySQL 客户端脚本和实用程序</A>。
</P>


<H3><A NAME="CREATE_TABLE"></A>6.5.3  <CODE>CREATE TABLE</CODE> 句法</H3>

<P>
<A NAME="IDX1452"></A>

</P>


<PRE>
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
[table_options] [select_statement]

or

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name LIKE old_table_name;

create_definition:
  col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
            [PRIMARY KEY] [reference_definition]
  or    PRIMARY KEY (index_col_name,...)
  or    KEY [index_name] (index_col_name,...)
  or    INDEX [index_name] (index_col_name,...)
  or    UNIQUE [INDEX] [index_name] (index_col_name,...)
  or    FULLTEXT [INDEX] [index_name] (index_col_name,...)
  or    [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
            [reference_definition]
  or    CHECK (expr)

type:
        TINYINT[(length)] [UNSIGNED] [ZEROFILL]
  or    SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
  or    MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
  or    INT[(length)] [UNSIGNED] [ZEROFILL]
  or    INTEGER[(length)] [UNSIGNED] [ZEROFILL]
  or    BIGINT[(length)] [UNSIGNED] [ZEROFILL]
  or    REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
  or    DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
  or    NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
  or    CHAR(length) [BINARY]
  or    VARCHAR(length) [BINARY]
  or    DATE
  or    TIME
  or    TIMESTAMP
  or    DATETIME
  or    TINYBLOB
  or    BLOB
  or    MEDIUMBLOB
  or    LONGBLOB
  or    TINYTEXT
  or    TEXT
  or    MEDIUMTEXT
  or    LONGTEXT
  or    ENUM(value1,value2,value3,...)
  or    SET(value1,value2,value3,...)

index_col_name:
        col_name [(length)]

reference_definition:
        REFERENCES tbl_name [(index_col_name,...)]
                   [MATCH FULL | MATCH PARTIAL]
                   [ON DELETE reference_option]
                   [ON UPDATE reference_option]

reference_option:
        RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

table_options:
	TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
or	AUTO_INCREMENT = #
or	AVG_ROW_LENGTH = #
or	CHECKSUM = {0 | 1}
or	COMMENT = "string"
or	MAX_ROWS = #
or	MIN_ROWS = #
or	PACK_KEYS = {0 | 1 | DEFAULT}
or	PASSWORD = "string"
or	DELAY_KEY_WRITE = {0 | 1}
or      ROW_FORMAT= { default | dynamic | fixed | compressed }
or	RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=#  RAID_CHUNKSIZE=#
or	UNION = (table_name,[table_name...])
or	INSERT_METHOD= {NO | FIRST | LAST }
or      DATA DIRECTORY="absolute path to directory"
or      INDEX DIRECTORY="absolute path to directory"

select_statement:
	[IGNORE | REPLACE] SELECT ...  (Some legal select statement)
</PRE>

<P>
<CODE>CREATE TABLE</CODE> 以给定的名字在当前数据库创建一个表。允许的表名规则在章节 <A HREF="06-1.html#Legal_names">6.1.2  数据库、表、索引、列和别名</A> 中被给出。如果没有当前数据库或表已经存在,一个错误将会发生。
</P>

<P>
在 MySQL 3.22 或以后的版本中,表名可以被指定为 <CODE>db_name.tbl_name</CODE>。不管有没有当前数据库,它也能正常工作。</P>

<P>
从 MySQL 3.23 开始,在创建一个表时,你可以使用关键词 <CODE>TEMPORARY</CODE>。它的名字被限止在当前连接中,当连接关闭时,临时表会自动地被删除。这就意味着,两个不同的连接可以使用同一个临时表名而不会与另一个冲突,也不会与同名现有的表相冲突(现有表将被隐藏,只到临时表被删除)。从 MySQL 4.0.2 开始,为了能创建临时表,你必须有 <CODE>CREATE TEMPORARY TABLES</CODE> 权限。
</P>

<P>
在 MySQL 3.23 或以后的版本中,你可以使用关键词 <CODE>IF NOT EXISTS</CODE>,因而如果表已存在,错误也不会发生。注意,它并不验证表结构是否一致。
</P>

<P>
在 MySQL 4.1 中你可以使用 <CODE>LIKE</CODE> 来基于一个表定义创建另一个表。to create a table based on
 a table definition in another table.  In MySQL 4.1 中,你同样也可以为一个被生成的列指定类型:
</P>

<PRE>
CREATE TABLE foo (a tinyint not null) SELECT b+1 AS 'a' FROM bar;
</PRE>

<P>
第张表 <CODE>tbl_name</CODE> 由数据库目录下的一些文件表示。对于 MyISAM 类型的表,你将得到:
</P>

<TABLE BORDER WIDTH="95%">
<TR><TD><STRONG>文件 </STRONG> </TD><TD> <STRONG>用途 </STRONG>
</TD></TR>
<TR><TD><CODE>tbl_name.frm</CODE> </TD><TD> 表定义 (form) 文件
</TD></TR>
<TR><TD><CODE>tbl_name.MYD</CODE> </TD><TD> 数据文件
</TD></TR>
<TR><TD><CODE>tbl_name.MYI</CODE> </TD><TD> 索引文件
</TD></TR>
</TABLE>

<P>
对于各种列类型的性质的更多信息,查看章节 <A HREF="06-2.html#Column_types">6.2  列类型</A>:
</P>

<UL>
<LI>
如果既没有指定 <CODE>NULL</CODE> 也没有指定 <CODE>NOT NULL</CODE>,列被视为指定了 <CODE>NULL</CODE> 。

<P></P>

<LI>
一个整型列可以有附加属性 <CODE>AUTO_INCREMENT</CODE>。当你插入一个 <CODE>NULL</CODE> 值(推荐)或 <CODE>0</CODE> 到一个 <CODE>AUTO_INCREMENT</CODE> 列,该列将被设置到 <CODE>value+1</CODE>,在这里,<CODE>value</CODE> 是表中当前列的最大值。<CODE>AUTO_INCREMENT</CODE> 序列以 <CODE>1</CODE> 开始。查看章节 <A HREF="manual2.html#mysql_insert_id">8.1.3.130  <CODE>mysql_insert_id()</CODE></A>。

如果你一个 <CODE>AUTO_INCREMENT</CODE> 列中包含最大值的行,对于 <CODE>ISAM</CODE> 或 <CODE>BDB</CODE> 表,该值会被重新使用,但是对于一个 <CODE>MyISAM</CODE> 或 <CODE>InnoDB</CODE> 表,却不会被重用。如果你以 <CODE>AUTOCOMMIT</CODE> 模式执行 <CODE>DELETE FROM table_name</CODE> (没有一个 <CODE>WHERE</CODE> 子句) 删除表中的所有记录行,对于所有的表序列均重新开始。

<STRONG>注意:</STRONG>每个表只能有一个 <CODE>AUTO_INCREMENT</CODE> 列,并且必须被索引。MySQL 3.23 同样也只工作于 <CODE>AUTO_INCREMENT</CODE> 列只支持正值。插入一个负值将被当作插入一个很大的正值。
这是为了避免数字从正到负“包装”的精度问题,也是为了确保不会意外地得到一个包含 0 的 <CODE>AUTO_INCREMENT</CODE> 列。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -