首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > MySQL数据库和表的操作
【标  题】:MySQL数据库和表的操作
【关键字】:MySQL
【来  源】:http://blog.csdn.net/zhangjunhd/archive/2006/11/23/1408785.aspx

MySQL数据库和表的操作

本文主要介绍MySQL数据库和表操作的基本命令。

@Author:JZhang 06-11-23

E-mail:zhangjunhd@gmail.com

Blog: http://blog.csdn.net/zhangjunhd/

 

1.创建数据库

mysql>create database database_name;

 

⑵此时虽然建立了数据库,但当前使用的数据库对象并不是它,可通过查询语句查看当前数据库的名称。

mysql>select database();//返回用户当前使用的数据库名称

 

2.使用数据库

mysql>use database_name[;]

注:

①“use”是少有几个不需要用“;”或“\g”的命令。

②下面三条命令等价:

mysql>use database_name

mysql>use database_name;

mysql>use database_name\g

 

⑵与服务器连接时指定数据库

shell>mysql –h 主机名 –u 用户名 –p database_name

Enter password:****

 

3.删除数据库

mysql>drop database database_name;

 

4.创建表

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name

[(create_definition,...)]

[table_options]

[[IGNORE|REPLACE]select_statement]

 

create_definition:

{

  column_declaration

  or    PRIMARY KEY (index_column_name,...)

  or    KEY [index_name] (index_column_name,...)

  or    INDEX [index_name] (index_column_name,...)

  or    UNIQUE [INDEX] [index_name] (index_column_name,...)

  or    [CONSTRAINT symbol] FOREIGN KEY index_name (index_column_name,...)

  or    [reference_definition]

  or    CHECK (expr)

}

 

column_declaration:

{

column_name column_type

[NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]

[PRIMARY KEY] [reference_definition]

}

reference_definition:

{

        REFERENCES table_name [(index_columns,...)]

                   [MATCH FULL | MATCH PARTIAL]

                   [ON DELETE reference_option]

                   [ON UPDATE reference_option]

}

reference_option:

{

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

}

 

⑴“TEMPORARY”关键字

表示该表仅在当前客户机连接中止前存在。也就是说,临时表会在会话结束后自动消失,而且只有创建临时表的客户机才能看见该临时表。

 

⑵“IF NOT EXISTS”子句

用来防止创建已经存在的表。

 

⑶“create_defination”清单

指定希望创建的列和索引。

①列定义(column_declaration)以列名(column_name)和列数据类型(column_type)开始,后跟几个可选关键字。

②关键字说明

  • PRIMARY KEY—该属性表示相应的字段是否为主关键字,即通过该字段的值可以唯一的确定一条记录。
  • NULL|NOT NULL—该属性表明相应的字段是否允许为空。作为主关键字的字段不能为空。
  • DEFAULT—该属性用于设置相应字段的默认值,以便当该字段不输入任何内容时,系统会自动给它一个预先设定的值。该属性不能用于“BLOB”或“TEXT”类型。

如果没有默认说明,则系统会自动分配一个默认值。当数据属性设置为NULL时,则该字段的默认值为NULL;当数据属性设置为NOT NULL时,具体默认值如下表所示:

 

不同数据类型的默认值

 

 

数据类型

属性

默认值

数值型

AUTO_INCREMENT

序列中的下一个数

其他

0

日期和时间型

TIMESTAMP

当前日期

其他

字符串型

ENUM

第一个枚举元素

其他

 

  • AUTO_INCREMENT—该属性表示相应的字段值是自增的。被指定的列必须为“UNIQUE”索引或“PRIMARY KEY”而且应该为“NOT NULL”属性的列。
  • UNIQUE—该属性用于指定某列为索引列。

注:“UNIQUE”、“PRIMARY KEY”、“INDEX”、“KEY”区别

UNIQUE”和“PRIMARY KEY”指定必须包含唯一值的索引,而且“PRIMARY KEY”属性的列必须指定为“NOT NULL”;“INDEX”和“KEY”指定可以包含重复值的索引。索引是基于“index_columns”中所指定的列。

  • UNSIGNED—该属性表示相应的字段的值不允许为负数,用来修饰数值型字段。

 

⑷“table_options”子句

包含一个或多个选项,如下表所示:

 

AUTO_INCREMENT=n

为表设定的下一个 auto_increment ( MyISAM

AVG_ROW_LENGTH=n

表的平均行长度的近似值。

CHECKSUM={0|1}

如果想要MySQL对每行维持一个校验和(使表变得更慢以更新但是使它更容易找出损坏的表)设置它为1 ( MyISAM )

COMMENT=string

对于表的一篇60个字符的注释

MAX_ROWS=n

计划在表中存储的行的最大数目

MIN_ROWS=n

计划在表中存储的行的最小数目

PACK_KEYS={0|1}

如果想要有更小的索引,将它设为1。这通常使的更新更慢并且读取更快(MyISAMISAM)

PASSWORD=string

用一个口令加密.frm文件。该选项在标准MySQL版本中不做任何事情。

TYPE={ISAM|MyISAM|HEAP}

指定表的存储格式。MySQL的默认格式为“MyISAM”。

 

⑸“select_statement”子句

给出此子句,将利用查询结果的内容创建表。对于唯一索引(UNIQUE)中有重复值的行,将根据指定的是“IGNORE”还是“REPLACE”来忽略或者替换现有的行。如果两者都没有指定,则有重复值出现时会出错。

几种常用的select子句用法:

①通过一个表的部分或全部内容拷贝生成一个新表。

mysql>create table new_table_name

    ->select * from table_name;

mysql>create table new_table_name

    ->select column1,column2,… from table_name

->where conditions;

②利用一个逻辑假的where子句来生成一个空表。

mysql>create table new_table_name

    ->select column1,column2,… from table_name

->where 1=0;

③使用“TEMPORARY”创建一个临时表。

mysql>create temporary table new_table_name

    ->select * from table_name;

④如果select语句是从多个表中读取数据,而这些表中又有相同字段名称,那么必须用别名来区别。

mysql>create table t_2

    ->select t1.name as name1,t2.name as name2 from t1,t2;

 

5.修改表

ALTER [IGNORE] TABLE table_name

alter_list

 

alter_list用于指定一个或多个操作,各操作用逗号隔开,主要的操作有:

  • ADD [COLUMN] create_definition [FIRST | AFTER column_name ]用来给表增加一列。如果给出“FIRST”关键字,则增加的列成为表中的第一列;如果给出“AFTER column_name”,则增加的列放置在指定的列后面。如果为指定增加的列的位置,那么此列成为表中的最后一列。
  • ADD INDEX [index_name] (index_columns)用来给表增加索引。
  • ADD PRIMARY KEY (index_columns)用来给表增加一个主键。如果已经存在主键,则会出错。
  • ADD UNIQUE [index_name] (index_columns)用来给表增加一个唯一值索引。
  • ALTER [COLUMN] column_name {SET DEFAULT value | DROP DEFAULT}用来修改或删除当前的默认值。
  • CHANGE [COLUMN] old_column_name create_definition用来修改列的名称和列的定义。
  • MODIFY [COLUMN] create_definition用来修改列的定义。
  • DROP [COLUMN] column_name用于从表中删除指定的列。
  • DROP PRIMARY KEY用于从表中删除主键。如果表中没有创建“PRIMARY KEY”的唯一索引,但是有一个或多个“UNIQUE”索引,则删除这些索引‘中的第一个索引。
  • DROP INDEX index_name用于从表中删除指定的索引。
  • RENAME [AS] new_table_name用于重新将表“table_name”命名为“new_table_name”。如果重命名一个临时表为数据库中已经存在的表的名称,将会隐藏原始表。

 

6.删除表

DROP TABLE [IF EXISTS] table_name [, table_name,...]

 

 
千万数量级分页存储过程(效果演示):【上一篇】
为什么是存储过程而不是SQL string:【下一篇】
【相关文章】
  • Dec-cpp中连接MYSQL实例(How connect to MYSQL in Dev-cpp)
  • 今天修改了以前写的一个c++访问mysql的程序,出现了错误
  • FreeBSD上ports安装Apache2+MySQL5+PHP5
  • PHP + MYSQL +APACHE FREEBSD(转)
  • FreeBSD 4.10 安装配置vsftpd、mysql、apache
  • mysql+php+apache的安装
  • 如何设置MySQL同步(Replication)
  • MySQL环境熟悉
  • jbpm连接不同机器上的mysql
  • [超简单]C++如何使用MySQL数据库
  • 【随机文章】
  • [超简单]C++如何使用MySQL数据库
  • 约瑟夫环的问题(Joseph Ring)
  • QA与TEST(相同点与不同点)
  • 基于Linux的中小企业应用解决方案
  • 逆波兰计算器 雏形
  • 检验字符在字符串中的出现次数
  • Visual Basic程序-动态跟踪分析 上
  • 使用subvision进行版本控制(1)
  • 中搜>GOOGLE+微软!?
  • ×nix 补丁 Patch
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.