查看數據庫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