@Author:JZhang
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)开始,后跟几个可选关键字。
②关键字说明
如果没有默认说明,则系统会自动分配一个默认值。当数据属性设置为NULL时,则该字段的默认值为NULL;当数据属性设置为NOT NULL时,具体默认值如下表所示:
不同数据类型的默认值
| 数据类型 | 属性 | 默认值 |
| 数值型 | AUTO_INCREMENT | 序列中的下一个数 |
| 其他 | 0 | |
| 日期和时间型 | TIMESTAMP | 当前日期 |
| 其他 | 零 | |
| 字符串型 | ENUM | 第一个枚举元素 |
| 其他 | 空 |
注:“UNIQUE”、“PRIMARY KEY”、“INDEX”、“KEY”区别
“UNIQUE”和“PRIMARY KEY”指定必须包含唯一值的索引,而且“PRIMARY KEY”属性的列必须指定为“NOT NULL”;“INDEX”和“KEY”指定可以包含重复值的索引。索引是基于“index_columns”中所指定的列。
⑷“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。这通常使的更新更慢并且读取更快(MyISAM,ISAM)。 |
| 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用于指定一个或多个操作,各操作用逗号隔开,主要的操作有:
6.删除表
DROP TABLE [IF EXISTS] table_name [, table_name,...]