一、数据库的创建、删除、修改和查看

1、数据库的创建

创建数据库的命令如下:

mysql> create  {database|schema} [if not exists] db_name  [character set=charset_name]  [collate = collation_name ];      

[ if not exists]:表示如果数据库不存在,则创建;存在就不创建,这样即使数据存在,也不会报错。

[character set = charset_name ]:用来设置默认字符集。

[collate =collation_name ]:用来设定排序规则。

 

如:创建一个hello数据库,并指定字符集为utf32,排序规则为utf32_bin。

mysq> create database hello character set =utf32 collate = utf32_bin;

 

查看hello数据库的字符集和排序规则

mysql> show create database hello;
+----------+-----------------------------------------------------------------------------------+
| Database | Create Database                                                                   |
+----------+-----------------------------------------------------------------------------------+
| hello    | CREATE DATABASE `hello` /*!40100 DEFAULT CHARACTER SET utf32 COLLATE utf32_bin */ |
+----------+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

 

2、数据库的删除

数据库的删除命令如下:

mysql> drop  {database|schema}  [if existx]  db_name; 

[if exists]:表示当数据存在时,则删除;如果数据库不存在,也不会报错。不加参数时,如果删除一个不存在的数据库则会报错。

 

 

3、数据库的修改

数据库的修改主要修改的是数据库的字符集和排序规则

mysql> alter {database| schema} [db_name]  [defalut] character set [=] charset_name
  | [default] collate [=] collation_name;

 

如:将hello数据库的字符集改位utf8,排序规则改为uft8_bin。

mysql> alter database hello character set =utf8 collate = utf8_bin;
Query OK, 1 row affected (0.01 sec)

 

创建完成之后,再次查看hello数据库的字符集和排序规则。

mysql> show create database hello;
+----------+---------------------------------------------------------------------------------+
| Database | Create Database                                                                 |
+----------+---------------------------------------------------------------------------------+
| hello    | CREATE DATABASE `hello` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+---------------------------------------------------------------------------------+
1 row in set (0.00 sec)

 

4、数据库的查看命令 

mysql> show  {databases|schemas}:查看所有的数据库;

mysql> select database():查看当前正在使用的数据库;

mysql> show create database database_name:查看指定数据库的字符集和排序规则;

mysql> select version():查看数据库的版本号信息;

 

5、选择数据库

mysql> use db_name  

 

如果想获取更多关于如何创建、删除、修改数据库的命令,可以使用如下命令来查看:

mysql>help  KEYWORD

例如:help  create database;  or   help drop database; 


二、表的创建、删除、修改及查看 

1、表的创建

创建表有三种方式:

(1)、直接定义一张空表

mysql> create [temporary] table  tb_name(colum1,colum2...date_type [primary key] [not null] [unsigned] [default value] [unique key])  [tables_options]; 由于创建表就是创建列(或字段)的过程,因此括号内的参数就是列(或字段)的属性字段。这些属性包括数据类型、数据长度、修饰符、键、索引、约束等。

[temporary]:表示创建一张临时表,临时表保存在内存中。

提示:如果在创建表的时候,有多个字段一起作为主键(primary key)和唯一键(unique key),那么可以在创建表的时候,单独定义。当然一个字段作为主键和唯一键也可以单独定义。

例如:创建一张stu表,该表中存有sid,name,gender,age这四个字段。

mysql> create table stu (sid tinyint unsigned not null auto_increment,name char(20) not null,gender enum('F','M') default 'M',age tinyint unsigned not null default 20,primary key(sid,name));
Query OK, 0 rows affected (0.05 sec)

注意:如果某个字段中的属性同时包括unsigned、not null,那么必须将unsigned属性放在not null属性的前面。否则,会显示语法错误。

 

查看stu表的结构

mysql> desc stu;
+--------+---------------------+------+-----+---------+----------------+
| Field  | Type                | Null | Key | Default | Extra          |
+--------+---------------------+------+-----+---------+----------------+
| sid    | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| name   | char(20)            | NO   | PRI | NULL    |                |
| gender | enum('F','M')       | YES  |     | M       |                |
| age    | tinyint(3) unsigned | NO   |     | 20      |                |
+--------+---------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

 

 

(2)、使用select查询语句从其他表中查出数据,并将查询出来的数据创建为表

mysql> create  [temporary]  table [if not exists] tbl_name  [(create_definition,...)]  [table_options]
select_statement;

说明:使用该方法创建的表的表结构会发生改变,不会和select_statement中的表的表结构相同。

如:创建表tb1

mysql> create table tb1  select * from stu;
Query OK, 1 row affected (0.04 sec)
Records: 1  Duplicates: 0  Warnings: 0

 

查看表tb1的表结构

mysql> desc tb1;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| sid    | tinyint(3) unsigned | NO   |     | 0       |       |
| name   | char(20)            | NO   |     | NULL    |       |
| gender | enum('F','M')       | YES  |     | M       |       |
| age    | tinyint(3) unsigned | NO   |     | 20      |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.04 sec)

 

由此看出,表tb1和表stu的表结构是不一样的。

 

 

(3)、以其他表为模板创建一个空表

mysql> create [temporary] table  [if not exists] tbl_name  { like old_tbl_name | (like old_tbl_name);

如:以tb1表为模板,创建一张空表tb2。

mysql> create table tb2 like tb1;
Query OK, 0 rows affected (0.11 sec)

 

查看tb1和tb2的表结构

mysql> desc tb2;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| sid    | tinyint(3) unsigned | NO   |     | 0       |       |
| name   | char(20)            | NO   |     | NULL    |       |
| gender | enum('F','M')       | YES  |     | M       |       |
| age    | tinyint(3) unsigned | NO   |     | 20      |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.05 sec)

 

mysql> desc tb1;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| sid    | tinyint(3) unsigned | NO   |     | 0       |       |
| name   | char(20)            | NO   |     | NULL    |       |
| gender | enum('F','M')       | YES  |     | M       |       |
| age    | tinyint(3) unsigned | NO   |     | 20      |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

 

说明:使用该方法创建的表的表结构和模板表的表结构相同,只不过此方式创建的表是一张空表。

 

[tables_options]

在创建表的时候,可以指定一些选项。其中,常见的选项有这些:

ENGINE [=] engine_name   指定表的储存引擎,默认存储引擎为InnoDB;

[DEFAULT] CHARACTER SET [=] charset_name :设定[默认]字符集;

[DEFAULT] COLLATE [=] collation_name: 设定[默认]排序规则;

AUTO_INCREMENT = VALUE:设定auto_increment的起始值; 

 

 

2、表的删除

mysql> drop [temporary]  table [if exists]   tbl_name

  

3、表的修改

表的修改主要修改的是一些字段的属性信息、删除字段、添加字段、删除属性等操作。

mysql> alter table  tb_name

MODIFY [COLUMN] col_name column_definition:表示修改字段的属性(字段后的参数)。

CHANGE [COLUMN] old_col_name new_col_name column_definition:修改字段名称及其属性。

ADD [COLUMN] (col_name column_definition,...):表示增加某些字段及该字段属性。

ADD {INDEX|KEY} [index_name]   [index_type] (index_col_name,...) [index_option] :增加索引字段

| DROP [COLUMN] col_name                删除某字段
| DROP PRIMARY KEY                           删除主键
| DROP {INDEX|KEY} index_name        删除索引
| DROP FOREIGN KEY fk_symbol        删除外键

|engine = ‘存储引擎’                             修改表的存储引擎

|order by col1,col2...                                修改排序标准的字段

 

4、表的重命名

表的重命名有2种方式:

(1)、mysql> rename table old_table to new_table;

(2)、mysql> alter table tb_name rename to new_tb_name;

 

 

5、查看表的相关命令

mysql> show  tables from  db_name:查看指定库中的所有表;

mysql> show tables :查看某个库的所有表;

mysql> desc  tb_name:查看表的表结构信息;

mysql> show engines:查看mysql的所有存储引擎及其默认存储引擎;

mysql> show table status [in db_name]:显示所有表的状态信息;

mysql> show table status where Name ='tb_name'\G:显示指定表的状态信息。这些状态信息包括如下属性:

Name 表名
Engine 存储引擎
Version:版本
Row_format:行格式
       支持的行格式有:{DEFAULT|DYNAMIC|FIXED|COMMPRESSED|REDUNDANT|COMPACT}

Rows:表中的行数
Avg_row_length:平均每行包含的字节数

Data_length:表中数据总体大小,单位为字节
Max_data_length:表能够占用的最大空间,单位为字节,0表示么有上限
Index_length:索引的大小,单位为字节
Data_free:对于MyISAM表,表示已经分配但尚未使用的空间,其中包含此前删除行之后腾出来的空间

Auto_increment:下一个AUTO_INCREMENT的值
Create_time:表的创建时间
Update_time: 表数据的最后一次修改时间
Check_time: 使用CHECK TABLE或myisamchk最近一次检查表的时间
Collation:排序规则
Checksum:如果启动,则为表的checksum
Create_options:创建表时指定使用的其他选项
Comment:表的注释信息

 

更多相关命令的使用,使用help  KEYWORD来获得


创建索引

CREATE INDEX index_name  [index_type]  ON tb_name (col_name [(length)] [ASC | DESC],...);

其中length表示能够索引的长度,[ASC | DESC]表示以升序或降序的方式排列起来。

SHOW INDEX FROM tb_name:显示指定表上的索引

 

键也称作约束,可用作索引,属于特殊索引(有特殊限定):默认索引类型为B+Tree

索引类型有:B树索引、R树索引、全文索引、HASH索引。