查看数据库mysql
获取服务器上的数据库列表一般颇有用。执行show databases;命令就能够搞定。sql
mysql> show databases;数据库
建立数据库bash
mysql> create database db_test;
Query OK, 1 row affected (0.00 sec)服务器
使用数据库spa
数据库一旦建立,就能够经过“使用”(use命令)数据库,将其指定为默认的工做数据库。操作系统
mysql> use db_test;
Database changedcode
删除数据库内存
删除数据库的方式与建立的方式很类似。能够在mysql客户端中使用drop命令删除数据库,以下:开发
mysql> drop database db_test;
Query OK, 0 rows affected (0.00 sec)
这里将对如何建立、列出、查看、删除和修改MySQL数据库表。
建立表
表经过create table语句来建立。建立表的过程当中会使用很是多的选项和子句,在这里彻底总结一遍也是不现实的,这里只是总结最广泛的,之后遇到别的,再单个总结。建立表的通常用法以下:
mysql> create table tb_test( -> id int unsigned not null auto_increment, -> firstname varchar(25) not null, -> lastname varchar(25) not null, -> email varchar(45) not null, -> phone varchar(10) not null, -> primary key(id)); Query OK, 0 rows affected (0.03 sec)
记住,表至少包含一列。另外,建立表以后老是能够再回过头来修改表的结构。不管当前是否在使用目标数据库,均可以建立表,只要在表名前面加上目标数据库便可。例如:
mysql> create table db_test.tb_test( -> id int unsigned not null auto_increment, -> firstname varchar(25) not null, -> lastname varchar(25) not null, -> email varchar(45) not null, -> phone varchar(10) not null, -> primary key(id)); Query OK, 0 rows affected (0.03 sec)
有条件的建立表
在默认状况下,若是试图建立一个已经存在的表,MySQL会产生一个错误。为了不这个错误,create table语句提供了一个子句,若是你但愿在目标表已经存在的状况下简单地退出表建立,就可使用这个子句。例如:
mysql> create table if not exists db_test.tb_test( -> id int unsigned not null auto_increment, -> firstname varchar(25) not null, -> lastname varchar(25) not null, -> email varchar(45) not null, -> phone varchar(10) not null, -> primary key(id)); Query OK, 0 rows affected, 1 warning (0.00 sec)
不管是否已经建立,都会在返回到命令提示窗口时显示“Query OK”消息。
复制表
基于现有的表建立新表是一项很容易的任务。如下代码将获得tb_test表的一个副本,名为tb_test2:
mysql> create table tb_test2 select * from db_test.tb_test; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0
将向数据库增长一个相同的表tb_test2。而有的时候,可能但愿只基于现有表的几个列建立一个表。经过create select语句中指定列就能够实现:
mysql> describe tb_test; +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | firstname | varchar(25) | NO | | NULL | | | lastname | varchar(25) | NO | | NULL | | | email | varchar(45) | NO | | NULL | | | phone | varchar(10) | NO | | NULL | | +-----------+------------------+------+-----+---------+----------------+ 5 rows in set (0.01 sec) mysql> create table tb_test2 select id, firstname, lastname, email from tb_test; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe tb_test2; +-----------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+-------+ | id | int(10) unsigned | NO | | 0 | | | firstname | varchar(25) | NO | | NULL | | | lastname | varchar(25) | NO | | NULL | | | email | varchar(45) | NO | | NULL | | +-----------+------------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)
建立临时表
有的时候,当工做在很是大的表上时,可能偶尔须要运行不少查询得到一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所 需的少数记录,将记录保存到一个临时表可能更快一些,而后对这些临时表进行查询操做。能够经过使用temporary关键字和create table语句来实现。
mysql> create temporary table emp_temp select firstname, lastname from tb_test; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0
临时表的建立与其它表同样,只是它们存储在操做系统指定的临时目录中。临时表将在你链接MySQL期间存在,当你断开时,MySQL将自动删除表并释放全部的内存空间;固然了,你也能够手动的使用drop table命令删除临时表。
查看数据库中可用的表
可使用show tables命令完成。例如:
mysql> show tables; +-------------------+ | Tables_in_db_test | +-------------------+ | tb_test | | tb_test2 | +-------------------+ 2 rows in set (0.00 sec)
查看表结构
可使用describe语句查看表结构,例如:
mysql> describe tb_test; +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | firstname | varchar(25) | NO | | NULL | | | lastname | varchar(25) | NO | | NULL | | | email | varchar(45) | NO | | NULL | | | phone | varchar(10) | NO | | NULL | | +-----------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
另外,使用show命令也能获得相同的结果,例如:
mysql> show columns in tb_test; +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | firstname | varchar(25) | NO | | NULL | | | lastname | varchar(25) | NO | | NULL | | | email | varchar(45) | NO | | NULL | | | phone | varchar(10) | NO | | NULL | | +-----------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
删除表
删除表是使用drop table语句实现的,其语法以下:
drop [temporary] table [if exists] tbl_name [, tbl_name, ...]
更改表结构
咱们会发现,咱们会常常修改和改进表结构,特别是在开发初期;可是,每次进行修改时没必要都先删除再从新建立表。相反,可使用alter语句修改表 的结构。利用这个语句,能够再必要时删除、修改和增长列。和create table同样,alter table提供了不少子句、关键字和选项。这里只是会说一些简单的使用,好比在表tb_demo表中插入一列,表示email,代码以下:
mysql> alter table tb_demo add column email varchar(45); Query OK, 0 rows affected (0.14 sec) Records: 0 Duplicates: 0 Warnings: 0
新的列放在表的最后位置。不过,还可使用适当的关键字(包括first、after和last)来控制新列的位置。若是想修改表,好比,刚刚加的email,我想加入一个not null控制,代码能够是这样的:
mysql> alter table tb_demo change email email varchar(45) not null; Query OK, 0 rows affected (0.11 sec) Records: 0 Duplicates: 0 Warnings: 0
若是觉的这个email这列没有存在的必要了,可使用下面的代码删除它,例如:
mysql> alter table tb_demo drop email; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0