一、数据库的创建、删除、修改和查看
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索引。