MySQL操作数据库和表的常用命令新手教程
我是新手
学习如何管理和导航MySQL数据库和表是要掌握的首要任务之一,下面的内容将主要对MySQL的数据库和表的一些常用命令进行总结,一些我们不得不掌握的命令,一些信手拈来的命令。
处理数据库
1.查看数据库
获取服务器上的数据库列表通常很有用。执行showdatabases;命令就可以搞定。
mysql>showdatabases;
2.创建数据库
mysql>createdatabasedb_test; QueryOK,1rowaffected(0.00sec)
3.使用数据库
数据库一旦创建,就可以通过“使用”(use命令)数据库,将其指定为默认的工作数据库。
mysql>usedb_test; Databasechanged
4.删除数据库
删除数据库的方式与创建的方式很相似。可以在mysql客户端中使用drop命令删除数据库,如下:
mysql>dropdatabasedb_test; QueryOK,0rowsaffected(0.00sec)
处理表
这里将对如何创建、列出、查看、删除和修改MySQL数据库表。
1.创建表
表通过createtable语句来创建。创建表的过程中会使用非常多的选项和子句,在这里完全总结一遍也是不现实的,这里只是总结最普遍的,以后遇到别的,再单个总结。创建表的一般用法如下:
mysql>createtabletb_test( ->idintunsignednotnullauto_increment, ->firstnamevarchar(25)notnull, ->lastnamevarchar(25)notnull, ->emailvarchar(45)notnull, ->phonevarchar(10)notnull, ->primarykey(id)); QueryOK,0rowsaffected(0.03sec)
记住,表至少包含一列。另外,创建表之后总是可以再回过头来修改表的结构。无论当前是否在使用目标数据库,都可以创建表,只要在表名前面加上目标数据库即可。例如:
mysql>createtabledb_test.tb_test( ->idintunsignednotnullauto_increment, ->firstnamevarchar(25)notnull, ->lastnamevarchar(25)notnull, ->emailvarchar(45)notnull, ->phonevarchar(10)notnull, ->primarykey(id)); QueryOK,0rowsaffected(0.03sec)
2.有条件的创建表
在默认情况下,如果试图创建一个已经存在的表,MySQL会产生一个错误。为了避免这个错误,createtable语句提供了一个子句,如果你希望在目标表已经存在的情况下简单地退出表创建,就可以使用这个子句。例如:
mysql>createtableifnotexistsdb_test.tb_test( ->idintunsignednotnullauto_increment, ->firstnamevarchar(25)notnull, ->lastnamevarchar(25)notnull, ->emailvarchar(45)notnull, ->phonevarchar(10)notnull, ->primarykey(id)); QueryOK,0rowsaffected,1warning(0.00sec)
无论是否已经创建,都会在返回到命令提示窗口时显示“QueryOK”消息。
3.复制表
基于现有的表创建新表是一项很容易的任务。以下代码将得到tb_test表的一个副本,名为tb_test2:
mysql>createtabletb_test2select*fromdb_test.tb_test; QueryOK,0rowsaffected(0.03sec) Records:0 Duplicates:0 Warnings:0
将向数据库增加一个相同的表tb_test2。而有的时候,可能希望只基于现有表的几个列创建一个表。通过createselect语句中指定列就可以实现:
mysql>describetb_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 | | +-----------+------------------+------+-----+---------+----------------+ 5rowsinset(0.01sec) mysql>createtabletb_test2selectid,firstname,lastname,emailfromtb_test; QueryOK,0rowsaffected(0.03sec) Records:0 Duplicates:0 Warnings:0 mysql>describetb_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 | | +-----------+------------------+------+-----+---------+-------+ 4rowsinset(0.01sec)
4.创建临时表
有的时候,当工作在非常大的表上时,可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录保存到一个临时表可能更快一些,然后对这些临时表进行查询操作。可以通过使用temporary关键字和createtable语句来实现。
mysql>createtemporarytableemp_tempselectfirstname,lastnamefromtb_test; QueryOK,0rowsaffected(0.02sec) Records:0 Duplicates:0 Warnings:0
临时表的创建与其它表一样,只是它们存储在操作系统指定的临时目录中。临时表将在你连接MySQL期间存在,当你断开时,MySQL将自动删除表并释放所有的内存空间;当然了,你也可以手动的使用droptable命令删除临时表。
5.查看数据库中可用的表
可以使用showtables命令完成。例如:
mysql>showtables; +-------------------+ |Tables_in_db_test| +-------------------+ |tb_test | |tb_test2 | +-------------------+ 2rowsinset(0.00sec)
6.查看表结构
可以使用describe语句查看表结构,例如:
mysql>describetb_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 | | +-----------+------------------+------+-----+---------+----------------+ 5rowsinset(0.00sec)
另外,使用show命令也能得到相同的结果,例如:
mysql>showcolumnsintb_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 | | +-----------+------------------+------+-----+---------+----------------+ 5rowsinset(0.00sec)
7.删除表
删除表是使用droptable语句实现的,其语法如下:
drop[temporary]table[ifexists]tbl_name[,tbl_name,...]
8.更改表结构
我们会发现,我们会经常修改和改进表结构,特别是在开发初期;但是,每次进行修改时不必都先删除再重新创建表。相反,可以使用alter语句修改表的结构。利用这个语句,可以再必要时删除、修改和增加列。和createtable一样,altertable提供了很多子句、关键字和选项。这里只是会说一些简单的使用,比如在表tb_demo表中插入一列,表示email,代码如下:
mysql>altertabletb_demoaddcolumnemailvarchar(45); QueryOK,0rowsaffected(0.14sec) Records:0 Duplicates:0 Warnings:0
新的列放在表的最后位置。不过,还可以使用适当的关键字(包括first、after和last)来控制新列的位置。如果想修改表,比如,刚刚加的email,我想加入一个notnull控制,代码可以是这样的:
mysql>altertabletb_demochangeemailemailvarchar(45)notnull; QueryOK,0rowsaffected(0.11sec) Records:0 Duplicates:0 Warnings:0
如果觉的这个email这列没有存在的必要了,可以使用下面的代码删除它,例如:
mysql>altertabletb_demodropemail; QueryOK,0rowsaffected(0.09sec) Records:0 Duplicates:0 Warnings:0
我不是新手
这篇文章大体上总结了与MySQL打交道时常用的一些命令,希望对大家有帮助。看完这篇文章,你应该认为你已经不是新手了,如果上面的命令你都实践过一遍以后,你应该比60%的人都熟悉MySQL数据库。就是这样,越简单的东西,越是有很多人不会。