您的位置:首页 > 数据库 > SQL

MySql常用维护命令2

2015-09-11 11:12 651 查看
内容摘要:

       本篇主要是对项目运行过程中会产生的一些数据维护,更新,参数设置等常用操作的记录和总结,方面在运用是有个参考。主要内容会涉及可参考目录简介。本编包含第2章节。本章节介绍的比较细致,从语法结构和规范,包括实例。主要是想通过一个常用的内容的细致讲解,能够触类旁通,在学习或使用其他操作是参考语法结构就能够顺利的使用,避免通过一些非通用渠道获取的实际操作内容不一定能解决自己的问题。这也算获渔非获鱼。尊重作者,本文部分参考:http://blog.sina.com.cn/s/blog_6a6c136d0101azmw.html

目录简介:

1.     数据库启停及状态检查

2.     CREATE 操作项目

3.     ALTER 操作项目

4.     数据库参数查看和设置

5.     客户端权限管理

6.     事件调度/临时触发器/定制任务

7.     触发器、存储过程

标签:
       MySql,Create,Alter,Show
Parameter,Event,Trigger,Procedure,Privilige

CREATE 操作项目

       这里涉及的create操作主要是介绍建表语句。对于其他对象如EVENT和Procedure会分别在以下对应章节单独介绍。先看一下create的操作语法。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

    [(create_definition,...)]

    [table_options] [select_statement]

column_definition:  #对列的属性的定义

col_name type

[NOT NULL | NULL] [DEFAULT default_value]

        [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]

        [COMMENT 'string']

table_option:

    {ENGINE|TYPE} = engine_name

       | AUTO_INCREMENT = value

       | AVG_ROW_LENGTH = value

      | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]

       | CHECKSUM = {0 | 1}

       | COMMENT = 'string'

       | CONNECTION = 'connect_string'

       | MAX_ROWS = value

       | MIN_ROWS = value

  | PACK_KEYS = {0 | 1 | DEFAULT}

       | PASSWORD = 'string'

       | DELAY_KEY_WRITE = {0 | 1}

  |ROW_FORMAT = {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}

      | UNION = (tbl_name[,tbl_name]...)

       | INSERT_METHOD = { NO | FIRST | LAST }

      | DATA DIRECTORY = 'absolute path to directory'

       | INDEX DIRECTORY = 'absolute path to directory'

语法说明:

       前提规则:[]中的内容表示语法可选项目

       TEMPORARY:该关键字表示用MySQL
create table新建的表为临时表,此表在当前会话结束后将自动消失。

       IF NOT EXISTS:实际上是在建表前加上一个判断,只有该表目前尚不存在时才执行create
table操作。用此选项可以避免出现表已经存在无法再新建的错误。当然若要在表存在的情况也要重建,可以在create语句前加上DROP TABLE tbl_name IF EXISTS。这样就先将存在的表删除,再建立新表。

       tbl_name:你所要创建的表的表名。该表名必须符合标识符规则。通常的做法是在表名中仅使用字母、数字及下划线。例如titles、our_sales、my_user1等都应该算是比较规范的表名。

       create_definition:这是MySQL
create table语句中关键部分所在

              col_name:表中列的名字。必须符合标识符规则,而且在表中要唯一。

type:列的数据类型。有的数据类型需要指明长度n,并用括号括起。具体的类型可参考其他资料或关注后继博文。

NOT NULL | NULL:指定该列是否允许为空。如果既不指定NULL也不指定NOT
NULL,列被认为指定了NULL。

DEFAULT default_value:为列指定默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL作为值,缺省值是NULL。如果列被声明为NOT
NULL,缺省值取决于列类型:

1、对于没有声明AUTO_INCREMENT属性的数字类型,缺省值是0。对于一个AUTO_INCREMENT列,缺省值是在顺    序中的下一个值。

    2、对于除TIMESTAMP的日期和时间类型,缺省值是该类型适当的“零”值。对于表中第一个TIMESTAMP列,    缺省值是当前的日期和时间。

3、对于除ENUM的字符串类型,缺省是空字符串。对于ENUM,缺省值是第一个枚举值。

AUTO_INCREMENT:设置该列有自增属性,只有整型列才能设置此属性。当你插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,在这里 value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。

UNIQUE:在UNIQUE索引中,所有的值必须互不相同。如果您在添加新行时使用的关键字与原有行的关键字相同,则会出现错误。

KEY:KEY通常是INDEX同义词。如果关键字属性PRIMARY
KEY在列定义中已给定,则PRIMARY KEY也可以只指定为KEY。这么做的目的是与其它数据库系统兼容。

PRIMARY KEY:是一个唯一KEY,此时,所有的关键字列必须定义为NOT
NULL。如果这些列没有被明确地定义为NOT NULL,MySQL应隐含地定义这些列。一个表只有一个PRIMARY KEY。如果您没有PRIMARY
KEY并且一个应用程序要求在表中使用PRIMARY KEY,则MySQL返回第一个UNIQUE索引,此索引没有作为PRIMARY
KEY的NULL列。

COMMENT:对于列的评注可以使用COMMENT选项来进行指定。评注通过SHOW
CREATE TABLE和SHOW FULL COLUMNS语句显示。

 

备注:通过SHOW CREATE TABLE tbl_name可以查看对应表的建表语句。

 

ENGINE和TYPE选项用于为表指定存储引擎。ENGINE是首选的选项名称。

  ENGINE和TYPE选项采用以下值:



如果被指定的存储引擎无法利用,则MySQL使用MyISAM代替。例如,一个表定义包括ENGINE=BDB选项,但是MySQL服务器不支持BDB表,则表被创建为MyISAM表。

目前主要常用InnoDB和MyISAM引擎。InnoDB支持事务,MyISAM不支持;InnoDB对数据插入是行锁,MyISAM是表所,所以在大量的数据更新和插入操作的系统中建议MyISAM引擎。这个是两个简单的比较差别。

·AUTO_INCREMENT表的初始AUTO_INCREMENT值。您也可以使用ALTER
TABLE tbl_nameAUTO_INCREMENT = n来重新设置AUTO_INCREMENT值。

·AVG_ROW_LENGTH表中平均行长度的近似值。只需要对含尺寸可变的记录的大型表进行此项设置。

·[DEFAULT] CHARACTER SET用于为表指定一个默认字符集。CHARSET是CHARACTER
SET的同义词。支持中文字符集的话用utf-8

·COLLATE
bdde

用于为表指定一个默认整序。

·CHECKSUM

如果您希望MySQL随时对所有行进行实时检验求和(也就是,表变更后,MySQL自动更新检验求和),则应把此项设置为1。这样做,表的更新速度会略微慢些,但是更容易寻找到受损的表。CHECKSUM
TABLE语句用于报告检验求和(仅限于MyISAM)。

·COMMENT表的注释,最长60个字符。

·CONNECTIONFEDERATED表的连接字符串。(备注:较早版本的MySQL使用COMMENT选项用于连接字符串。

·MAX_ROWS您打算储存在表中的行数目的最大值。这不是一个硬性限值,而更像一个指示语句,指示出表必须能存储至少这么多行。

·MIN_ROWS您打算存储在表中的行数目的最小值。

·PACK_KEYS如果您希望索引更小,则把此选项设置为1。这样做通常使更新速度变慢,同时阅读速度加快。把选项设置为0可以取消所有的关键字压缩。把此选项设置为DEFAULT时,存储引擎只压缩长的CHAR或VARCHAR列(仅限于MyISAM)。

·PASSWORD使用密码对.frm文件加密。在标准MySQL版本中,本选项不起任何作用。

·DELAY_KEY_WRITE如果您想要延迟对关键字的更新,等到表关闭后再更新,则把此项设置为1(仅限于MyISAM)。

·ROW_FORMAT定义各行应如何储存。当前,此选项只适用于MyISAM表。对于静态行或长度可变行,此选项值可以为FIXED或DYNAMIC。myisampack用于把类型设置为COMPRESSED。请参见15.1.3节,“MyISAM表的存储格式”。

在默认情况下,InnoDB记录以压缩格式存储(ROW_FORMAT=COMPACT)。通过指定ROW_FORMAT=REDUNDANT,仍然可以申请用于较早版本的MySQL中的非压缩格式。

·RAID_TYPE在MySQL 5.0中,RAID支持被删除了

·UNION当您想要把一组相同的表当作一个表使用时,采用UNION。UNION仅适用于MERGE表。请参见15.3节,“MERGE存储引擎”。对于您映射到一个MERGE表上的表,您必须拥有SELECT,
UPDATE和DELETE权限。(注释:以前,所有被使用的表必须位于同一个数据库中,并作为MERGE表。这些限制不再适用。)

·INSERT_METHOD如果您希望在MERGE表中插入数据,您必须用INSERT_METHOD指定应插入行的表。INSERT_METHOD选项仅用于MERGE表。使用FIRST或LAST把行插入到第一个或最后一个表中;或者使用NO,阻止插入行。请参见15.3节,“MERGE存储引擎”。

·DATA DIRECTORY, INDEX DIRECTORY通过使用DATA DIRECTORY='directory'或INDEX
DIRECTORY='directory',您可以指定MyISAM存储引擎放置表格数据文件和索引文件的位置。注意,目录应是通向目录的完整路径(不是相对路径)。

 

实际使用 SHOW CREATE TABLE tbl_name查询的内容,如下是完整的建表语句。如果仅仅想查看表结构及字段定义 可使用DESC
tbl_name.

CREATE TABLE `roles` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `rolename` char(64) DEFAULT NULL,

  `flag` int(11) DEFAULT '0',

  `childroleid` char(64) DEFAULT '0',

  PRIMARY KEY (`id`),

  KEY `NewIndex1` (`rolename`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql CRATE TABLE