侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

MySQL常用命令 MySQL处理数据库和表的命令

数据库  /  管理员 发布于 8年前   175

学习如何管理和导航MySQL数据库和表是要掌握的首要任务之一,下面的内容将主要对MySQL的数据库和表的一些常用命令进行总结,一些我们不得不掌握的命令,一些信手拈来的命令。
一、处理数据库

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

2、创建数据库
mysql> create database db_test;
Query OK, 1 row affected (0.00 sec)

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

4、删除数据库
删除数据库的方式与创建的方式很相似。可以在mysql客户端中使用drop命令删除数据库,如下:
mysql> drop database db_test;
Query OK, 0 rows affected (0.00 sec)

二、处理表

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

1、创建表
表通过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)

2、有条件的创建表
在默认情况下,如果试图创建一个已经存在的表,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”消息。

3、复制表
基于现有的表创建新表是一项很容易的任务。以下代码将得到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: 0mysql> 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)

4、创建临时表
有的时候,当工作在非常大的表上时,可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让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命令删除临时表。

5、查看数据库中可用的表
可以使用show tables命令完成。例如:

mysql> show tables;+-------------------+| Tables_in_db_test |+-------------------+| tb_test      || tb_test2     |+-------------------+2 rows in set (0.00 sec)

6、查看表结构
可以使用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)

7、删除表
删除表是使用drop table语句实现的,其语法如下:
复制代码 代码如下:drop [temporary] table [if exists] tbl_name [, tbl_name, ...]

8、更改表结构
我们会发现,我们会经常修改和改进表结构,特别是在开发初期;但是,每次进行修改时不必都先删除再重新创建表。相反,可以使用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

这篇文章大体上总结了与MySQL常用的一些命令,主要是学习Mysql处理数据库和表的常用命令,希望对大家有帮助。


  • 上一条:
    my.ini优化mysql数据库性能的十个参数(推荐)
    下一条:
    Mysql 数据库死锁过程分析(select for update)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客