SQL语句语法分析.docx

上传人:b****2 文档编号:1140434 上传时间:2022-10-17 格式:DOCX 页数:169 大小:156.34KB
下载 相关 举报
SQL语句语法分析.docx_第1页
第1页 / 共169页
SQL语句语法分析.docx_第2页
第2页 / 共169页
SQL语句语法分析.docx_第3页
第3页 / 共169页
SQL语句语法分析.docx_第4页
第4页 / 共169页
SQL语句语法分析.docx_第5页
第5页 / 共169页
点击查看更多>>
下载资源
资源描述

SQL语句语法分析.docx

《SQL语句语法分析.docx》由会员分享,可在线阅读,更多相关《SQL语句语法分析.docx(169页珍藏版)》请在冰豆网上搜索。

SQL语句语法分析.docx

SQL语句语法分析

SQL语句语法

13.1.数据定义语句

13.1.1.ALTERDATABASE语法

13.1.2.ALTERTABLE语法

13.1.3.CREATEDATABASE语法

13.1.4.CREATEINDEX语法

13.1.5.CREATETABLE语法

13.1.6.DROPDATABASE语法

13.1.7.DROPINDEX语法

13.1.8.DROPTABLE语法

13.1.9.RENAMETABLE语法

13.2.数据操作语句

13.2.1.DELETE语法

13.2.2.DO语法

13.2.3.HANDLER语法

13.2.4.INSERT语法

13.2.5.LOADDATAINFILE语法

13.2.6.REPLACE语法

13.2.7.SELECT语法

13.2.8.Subquery语法

13.2.9.TRUNCATE语法

13.2.10.UPDATE语法

13.3.MySQL实用工具语句

13.3.1.DESCRIBE语法(获取有关列的信息)

13.3.2.USE语法

13.4.MySQL事务处理和锁定语句

13.4.1.STARTTRANSACTION,COMMIT和ROLLBACK语法

13.4.2.不能回滚的语句

13.4.3.会造成隐式提交的语句

13.4.4.SAVEPOINT和ROLLBACKTOSAVEPOINT语法

13.4.5.LOCKTABLES和UNLOCKTABLES语法

13.4.6.SETTRANSACTION语法

13.4.7.XA事务

13.5.数据库管理语句

13.5.1.账户管理语句

13.5.2.表维护语句

13.5.3.SET语法

13.5.4.SHOW语法

13.5.5.其它管理语句

13.6.复制语句

13.6.1.用于控制主服务器的SQL语句

13.6.2.用于控制从服务器的SQL语句

13.7.用于预处理语句的SQL语法

本章介绍了SQL语句的语法。

13.1. 数据定义语句

13.1.1.ALTERDATABASE语法

13.1.2.ALTERTABLE语法

13.1.3.CREATEDATABASE语法

13.1.4.CREATEINDEX语法

13.1.5.CREATETABLE语法

13.1.6.DROPDATABASE语法

13.1.7.DROPINDEX语法

13.1.8.DROPTABLE语法

13.1.9.RENAMETABLE语法

13.1.1. ALTERDATABASE语法

ALTER{DATABASE|SCHEMA}[db_name]

alter_specification[,alter_specification]...

alter_specification:

[DEFAULT]CHARACTERSETcharset_name

|[DEFAULT]COLLATEcollation_name

ALTERDATABASE用于更改数据库的全局特性。

这些特性储存在数据库目录中的db.opt文件中。

要使用ALTERDATABASE,您需要获得数据库ALTER权限。

CHARACTERSET子句用于更改默认的数据库字符集。

COLLATE子句用于更改默认的数据库整序。

在第10章:

字符集支持中对字符集和整序名称进行了讨论。

数据库名称可以忽略,此时,语句对应于默认数据库。

也可以使用ALTERSCHEMA。

13.1.2. ALTERTABLE语法

ALTER[IGNORE]TABLEtbl_name

alter_specification[,alter_specification]...

alter_specification:

ADD[COLUMN]column_definition[FIRST|AFTERcol_name]

|ADD[COLUMN](column_definition,...)

|ADDINDEX[index_name][index_type](index_col_name,...)

|ADD[CONSTRAINT[symbol]]

PRIMARYKEY[index_type](index_col_name,...)

|ADD[CONSTRAINT[symbol]]

UNIQUE[index_name][index_type](index_col_name,...)

|ADD[FULLTEXT|SPATIAL][index_name](index_col_name,...)

|ADD[CONSTRAINT[symbol]]

FOREIGNKEY[index_name](index_col_name,...)

[reference_definition]

|ALTER[COLUMN]col_name{SETDEFAULTliteral|DROPDEFAULT}

|CHANGE[COLUMN]old_col_namecolumn_definition

[FIRST|AFTERcol_name]

|MODIFY[COLUMN]column_definition[FIRST|AFTERcol_name]

|DROP[COLUMN]col_name

|DROPPRIMARYKEY

|DROPINDEXindex_name

|DROPFOREIGNKEYfk_symbol

|DISABLEKEYS

|ENABLEKEYS

|RENAME[TO]new_tbl_name

|ORDERBYcol_name

|CONVERTTOCHARACTERSETcharset_name[COLLATEcollation_name]

|[DEFAULT]CHARACTERSETcharset_name[COLLATEcollation_name]

|DISCARDTABLESPACE

|IMPORTTABLESPACE

|table_options

|partition_options

|ADDPARTITIONpartition_definition

|DROPPARTITIONpartition_names

|COALESCEPARTITIONnumber

|REORGANIZEPARTITIONpartition_namesINTO(partition_definitions)

|ANALYZEPARTITIONpartition_names

|CHECKPARTITIONpartition_names

|OPTIMIZEPARTITIONpartition_names

|REBUILDPARTITIONpartition_names

|REPAIRPARTITIONpartition_names

ALTERTABLE用于更改原有表的结构。

例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。

您还可以更改表的评注和表的类型。

允许进行的变更中,许多子句的语法与CREATETABLE中的子句的语法相近。

其中包括table_options修改,选项有ENGINE,AUTO_INCREMENT和AVG_ROW_LENGTH等。

请见13.1.5节,“CREATETABLE语法”。

存储引擎不支持有些操作,如果进行这些操作,会出现警告。

使用SHOWWARNINGS可以显示出这些警告。

请参见13.5.4.22节,“SHOWWARNINGS语法”。

如果您使用ALTERTABLE更改列规约,但是DESCRIBEtbl_name提示您列规约并没有改变,则可能是因为MySQL忽略了您所做的更改。

忽略更改的原因见13.1.5.1节,“沉寂的列规格变更”。

例如,如果您试图把VARCHAR列更改为CHAR列,此时,如果表包含其它长度可变的列,则MySQL仍会使用VARCHAR。

ALTERTABLE运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。

在执行ALTERTABLE时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。

新表生成后,这些更新和修改信息会自动转移到新表上。

注意,如果您在执行ALTERTABLE时使用除了RENAME以外的选项,则MySQL会创建一个临时表。

即使数据并不需要进行复制(例如当您更改列的名称时),MySQL也会这么操作。

对于MyISAM表,您可以通过把myisam_sort_buffer_size系统变量设置到一个较高的值,来加快重新创建索引(该操作是变更过程中速度最慢的一部分)的速度。

·        要使用ALTERTABLE,您需要获得表的ALTER,INSERT和CREATE权限。

·        IGNORE是MySQL相对于标准SQL的扩展。

如果在新表中有重复关键字,或者当STRICT模式启动后出现警告,则使用IGNORE控制ALTERTABLE的运行。

如果没有指定IGNORE,当重复关键字错误发生时,复制操作被放弃,返回前一步骤。

如果指定了IGNORE,则对于有重复关键字的行,只使用第一行,其它有冲突的行被删除。

并且,对错误值进行修正,使之尽量接近正确值。

·        您可以在一个ALTERTABLE语句里写入多个ADD,ALTER,DROP和CHANGE子句,中间用逗号分开。

这是MySQL相对于标准SQL的扩展。

在标准SQL中,每个ALTERTABLE语句中每个子句只允许使用一次。

例如,在一个语句中取消多个列:

·               mysql>ALTERTABLEt2DROPCOLUMNc,DROPCOLUMNd;

·        CHANGEcol_name,DROPcol_name和DROPINDEX是MySQL相对于标准SQL的扩展。

·        MODIFY是Oracle对ALTERTABLE的扩展。

·        COLUMN只是自选项目,可以忽略。

·        如果您使用ALTERTABLEtbl_nameRENAMETOnew_tbl_name并且没有其它选项,则MySQL只对与tabletbl_name相对应的文件进行重命名。

不需要创建一个临时表。

(您也可以使用RENAMETABLE语句对表进行重命名。

请参见13.1.9节,“RENAMETABLE语法”。

·        column_definition子句使用与CREATETABLE中的ADD和CHANGE子句相同的语法。

注意,此语法包括列名称,而不只是列类型。

请参见13.1.5节,“CREATETABLE语法”。

·        您可以使用CHANGEold_col_namecolumn_definition子句对列进行重命名。

重命名时,需给定旧的和新的列名称和列当前的类型。

例如:

要把一个INTEGER列的名称从a变更到b,您需

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1