搜索
查看: 1242|: 0

【MySql】MySql处理数据库和表

[复制链接]

205

主题

5

回帖

755

积分

高级会员

积分
755
发表于 2014-10-29 17:13:43 | 显示全部楼层 |阅读模式
本帖最后由 MEI 于 2014-11-3 15:41 编辑

查看数据库

获取服务器上的数据库列表通常很有用。执行show databases;命令就可以搞定。


  1. <a href="http://www.2cto.com/database/MySQL/" target="_blank" class="keylink" style="color: rgb(51, 51, 51); text-decoration: none;">mysql</a>> show databases;
复制代码



创建数据库


  1. mysql> create database db_test;
  2. Query OK, 1 row affected (0.00 sec)
复制代码



使用数据库

数据库一旦创建,就可以通过“使用”(use命令)数据库,将其指定为默认的工作数据库。

  1. <blockquote style="color: rgb(51, 51, 51); font-family: 宋体; line-height: 28px;"><p style="border-width: 0px; margin-bottom: 8px; list-style: none; text-indent: 2em;">mysql> use db_test;
  2. Database changed</p>
复制代码


删除数据库

删除数据库的方式与创建的方式很相似。可以在mysql客户端中使用drop命令删除数据库,如下:


  1. mysql> drop database db_test;
  2. Query OK, 0 rows affected (0.00 sec)
复制代码



处理表

这里将对如何创建、列出、查看、删除和修改MySQL数据库表。


创建表

表通过create table语句来创建。创建表的过程中会使用非常多的选项和子句,在这里完全总结一遍也是不现实的,这里只是总结最普遍的,以后遇到别的,再单个总结。创建表的一般用法如下:

  1. <font color="rgb(51, 51, 51)"><font face="宋体">mysql> create table tb_test(
  2.     -> id int unsigned not null auto_increment,
  3.     -> firstname varchar(25) not null,
  4.     -> lastname varchar(25) not null,
  5.     -> email varchar(45) not null,
  6.     -> phone varchar(10) not null,
  7.     -> primary key(id));
  8. Query OK, 0 rows affected (0.03 sec)</font></font>
复制代码
记住,表至少包含一列。另外,创建表之后总是可以再回过头来修改表的结构。无论当前是否在使用目标数据库,都可以创建表,只要在表名前面加上目标数据库即可。例如:
  1. mysql> create table db_test.tb_test(
  2.     -> id int unsigned not null auto_increment,
  3.     -> firstname varchar(25) not null,
  4.     -> lastname varchar(25) not null,
  5.     -> email varchar(45) not null,
  6.     -> phone varchar(10) not null,
  7.     -> primary key(id));
  8. Query OK, 0 rows affected (0.03 sec)
复制代码

有条件的创建表


在默认情况下,如果试图创建一个已经存在的表,MySQL会产生一个错误。为了避免这个错误,create table语句提供了一个子句,如果你希望在目标表已经存在的情况下简单地退出表创建,就可以使用这个子句。例如:

  1. <font color="rgb(51, 51, 51)"><font face="宋体">mysql> create table if not exists db_test.tb_test(
  2.     -> id int unsigned not null auto_increment,
  3.     -> firstname varchar(25) not null,
  4.     -> lastname varchar(25) not null,
  5.     -> email varchar(45) not null,
  6.     -> phone varchar(10) not null,
  7.     -> primary key(id));
  8. Query OK, 0 rows affected, 1 warning (0.00 sec)</font></font>
复制代码

无论是否已经创建,都会在返回到命令提示窗口时显示“Query OK”消息。


复制表


基于现有的表创建新表是一项很容易的任务。以下代码将得到tb_test表的一个副本,名为tb_test2:

  1. <font color="rgb(51, 51, 51)"><font face="宋体">mysql> create table tb_test2 select * from db_test.tb_test;
  2. Query OK, 0 rows affected (0.03 sec)
  3. Records: 0  Duplicates: 0  Warnings: 0</font></font>
复制代码
将向数据库增加一个相同的表tb_test2。而有的时候,可能希望只基于现有表的几个列创建一个表。通过create select语句中指定列就可以实现:
  1. mysql> describe tb_test;
  2. +-----------+------------------+------+-----+---------+----------------+
  3. | Field     | Type             | Null | Key | Default | Extra          |
  4. +-----------+------------------+------+-----+---------+----------------+
  5. | id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
  6. | firstname | varchar(25)      | NO   |     | NULL    |                |
  7. | lastname  | varchar(25)      | NO   |     | NULL    |                |
  8. | email     | varchar(45)      | NO   |     | NULL    |                |
  9. | phone     | varchar(10)      | NO   |     | NULL    |                |
  10. +-----------+------------------+------+-----+---------+----------------+
  11. 5 rows in set (0.01 sec)
  12. mysql> create table tb_test2 select id, firstname, lastname, email from tb_test;
  13. Query OK, 0 rows affected (0.03 sec)
  14. Records: 0  Duplicates: 0  Warnings: 0
  15. mysql> describe tb_test2;
  16. +-----------+------------------+------+-----+---------+-------+
  17. | Field     | Type             | Null | Key | Default | Extra |
  18. +-----------+------------------+------+-----+---------+-------+
  19. | id        | int(10) unsigned | NO   |     | 0       |       |
  20. | firstname | varchar(25)      | NO   |     | NULL    |       |
  21. | lastname  | varchar(25)      | NO   |     | NULL    |       |
  22. | email     | varchar(45)      | NO   |     | NULL    |       |
  23. +-----------+------------------+------+-----+---------+-------+
  24. 4 rows in set (0.01 sec)
复制代码

创建临时表


有的时候,当工作在非常大的表上时,可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录保存到一个临时表可能更快一些,然后对这些临时表进行查询操作。可以通过使用temporary关键字和create table语句来实现。

  1. <font color="rgb(51, 51, 51)"><font face="宋体">mysql> create temporary table emp_temp select firstname, lastname from tb_test;
  2. Query OK, 0 rows affected (0.02 sec)
  3. Records: 0  Duplicates: 0  Warnings: 0</font></font>
复制代码

临时表的创建与其它表一样,只是它们存储在操作系统指定的临时目录中。临时表将在你连接MySQL期间存在,当你断开时,MySQL将自动删除表并释放所有的内存空间;当然了,你也可以手动的使用drop table命令删除临时表。


查看数据库中可用的表


可以使用show tables命令完成。例如:

  1. <font color="rgb(51, 51, 51)"><font face="宋体">mysql> show tables;
  2. +-------------------+
  3. | Tables_in_db_test |
  4. +-------------------+
  5. | tb_test           |
  6. | tb_test2          |
  7. +-------------------+
  8. 2 rows in set (0.00 sec)</font></font>
复制代码

查看表结构


可以使用describe语句查看表结构,例如:

  1. <font color="rgb(51, 51, 51)"><font face="宋体">mysql> describe tb_test;
  2. +-----------+------------------+------+-----+---------+----------------+
  3. | Field     | Type             | Null | Key | Default | Extra          |
  4. +-----------+------------------+------+-----+---------+----------------+
  5. | id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
  6. | firstname | varchar(25)      | NO   |     | NULL    |                |
  7. | lastname  | varchar(25)      | NO   |     | NULL    |                |
  8. | email     | varchar(45)      | NO   |     | NULL    |                |
  9. | phone     | varchar(10)      | NO   |     | NULL    |                |
  10. +-----------+------------------+------+-----+---------+----------------+
  11. 5 rows in set (0.00 sec)</font></font>
复制代码
另外,使用show命令也能得到相同的结果,例如:
  1. mysql> show columns in tb_test;
  2. +-----------+------------------+------+-----+---------+----------------+
  3. | Field     | Type             | Null | Key | Default | Extra          |
  4. +-----------+------------------+------+-----+---------+----------------+
  5. | id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
  6. | firstname | varchar(25)      | NO   |     | NULL    |                |
  7. | lastname  | varchar(25)      | NO   |     | NULL    |                |
  8. | email     | varchar(45)      | NO   |     | NULL    |                |
  9. | phone     | varchar(10)      | NO   |     | NULL    |                |
  10. +-----------+------------------+------+-----+---------+----------------+
  11. 5 rows in set (0.00 sec)
复制代码

删除表


删除表是使用drop table语句实现的,其语法如下:

  1. <font color="rgb(51, 51, 51)"><font face="宋体">drop [temporary] table [if exists] tbl_name [, tbl_name, ...]</font></font>
复制代码

更改表结构


我们会发现,我们会经常修改和改进表结构,特别是在开发初期;但是,每次进行修改时不必都先删除再重新创建表。相反,可以使用alter语句修改表的结构。利用这个语句,可以再必要时删除、修改和增加列。和create table一样,alter table提供了很多子句、关键字和选项。这里只是会说一些简单的使用,比如在表tb_demo表中插入一列,表示email,代码如下:

  1. <font color="rgb(51, 51, 51)"><font face="宋体">mysql> alter table tb_demo add column email varchar(45);
  2. Query OK, 0 rows affected (0.14 sec)
  3. Records: 0  Duplicates: 0  Warnings: 0</font></font>
复制代码
新的列放在表的最后位置。不过,还可以使用适当的关键字(包括first、after和last)来控制新列的位置。如果想修改表,比如,刚刚加的email,我想加入一个not null控制,代码可以是这样的:
  1. mysql> alter table tb_demo change email email varchar(45) not null;
  2. Query OK, 0 rows affected (0.11 sec)
  3. Records: 0  Duplicates: 0  Warnings: 0
复制代码
如果觉的这个email这列没有存在的必要了,可以使用下面的代码删除它,例如:
  1. mysql> alter table tb_demo drop email;
  2. Query OK, 0 rows affected (0.09 sec)
  3. Records: 0  Duplicates: 0  Warnings: 0
复制代码



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2024-11-15 21:05 , Processed in 0.065085 second(s), 25 queries .

快速回复 返回顶部 返回列表