那些你不常用却非常有用的MySql语句和命令

news/2024/7/1 20:39:24

操作数据库

关于数据库的操作比较少,主要是:看、建、用、删。

查看数据库

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

1
mysql> show databases;

 

创建数据库

 

1
2
mysql>  create  database  db_test;
Query OK, 1 row affected (0.00 sec)

 

使用数据库

 

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

1
2
mysql> use db_test;
Database  changed

 

删除数据库

 

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

1
2
mysql>  drop  database  db_test;
Query OK, 0  rows  affected (0.00 sec)

 

 

操作数据表

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

 

创建表

 

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

1
2
3
4
5
6
7
8
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)

记住,表至少包含一列。另外,创建表之后总是可以再回过头来修改表的结构。无论当前是否在使用目标数据库,都可以创建表,只要在表名前面加上目标数据库即可。例如:

1
2
3
4
5
6
7
8
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语句提供了一个子句,如果你希望在目标表已经存在的情况下简单地退出表创建,就可以使用这个子句。例如:

1
2
3
4
5
6
7
8
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:

1
2
3
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语句中指定列就可以实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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     |                |
+ -----------+------------------+------+-----+---------+----------------+
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     |       |
+ -----------+------------------+------+-----+---------+-------+
rows  in  set  (0.01 sec)

 

创建临时表

 

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

1
2
3
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命令完成。例如:

1
2
3
4
5
6
7
8
mysql> show tables;
+ -------------------+
| Tables_in_db_test |
+ -------------------+
| tb_test           |
| tb_test2          |
+ -------------------+
rows  in  set  (0.00 sec)

 

查看表结构

 

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

1
2
3
4
5
6
7
8
9
10
11
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     |                |
+ -----------+------------------+------+-----+---------+----------------+
rows  in  set  (0.00 sec)

另外,使用show命令也能得到相同的结果,例如:

1
2
3
4
5
6
7
8
9
10
11
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     |                |
+ -----------+------------------+------+-----+---------+----------------+
rows  in  set  (0.00 sec)

 

删除表

 

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

1
drop  [ temporary table  [if exists] tbl_name [, tbl_name, ...]

 

更改表结构

 

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

1
2
3
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控制,代码可以是这样的:

1
2
3
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这列没有存在的必要了,可以使用下面的代码删除它,例如:

1
2
3
mysql>  alter  table  tb_demo  drop  email;
Query OK, 0  rows  affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

 

PS:当然在实际开发当中还是要使用图形化软件的。比较专业和好用的MySQL数据库图形化管理软件:SQLyog和Navicat

转载于:https://www.cnblogs.com/Survivalist/p/7954936.html


http://www.niftyadmin.cn/n/3142482.html

相关文章

我就死磕安卓了,怎么了?

先说说前戏吧 今天突发奇想,为什么要在安卓这行业呆这么久?做了好几年的开发,目前竟然连房子首付都买不起,说起来很惭愧!已经远远的拖大家的后腿了。 目前为止,也主要以Android为主,小程序RN为次…

BJTU1853 gangpener 买零食

BJTU1853 gangpener 买零食 题目: gangpener 非常宠爱他的妹妹。 今天妹妹让 gangpener 去零食大厦买零食,零食大厦高 𝑛 层,除了第一层外,每层各有一种妹妹想吃的零食。零食大厦每层有 𝑚 个摊位&#…

jquery点击按钮或链接,第一次与第二次执行不同的事件

本文和大家分享一个jquery的实例&#xff0c;这个实例实现的是点击网页里的按钮或链接&#xff0c;第一次和第二次会执行不同的事件&#xff0c;也就是两个事件会轮流执行。 <script language"javascript">$(function(){var f false;$("#aijquery1"…

BJTU1844 hwf吃披萨

BJTU1844 hwf吃披萨 题目&#xff1a; hwf 是一个非常喜欢吃披萨的人。某天&#xff0c;天上掉下了一张披萨&#xff0c;被 hwf 和高老师看到了。高老师把披萨分成了 &#x1d45b; 份, 第 &#x1d456; 份的角度为 &#x1d44e;&#x1d456;。为了公平起见&#xff0c;他…

对于最长公共子序列的理解。

解决LCS问题&#xff0c;需要把原问题分解成若干个子问题&#xff0c;所以需要刻画LCS的特征。 设A“a0&#xff0c;a1&#xff0c;…&#xff0c;am”&#xff0c;B“b0&#xff0c;b1&#xff0c;…&#xff0c;bn”&#xff0c;且Z“z0&#xff0c;z1&#xff0c;…&#xf…

函数编程

1. 编码问题 i.请说明python2与python3中的默认编码是什么&#xff1f; python2 ASCII 码 python3 字符串为unicode&#xff0c;文件默认编码为utf-8 ii.为什么会出现中文乱码&#xff1f;你能列举出现乱码的情况有哪几种&#xff1f; 读取使用的编码和存储时使用的编码不一致…

苏州大学新生寒假训练day3 D - Bone Collector

苏州大学新生寒假训练day3 D - Bone Collector Problem: Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave … The bone colle…

用python算圆周率及进度条提示

&#xff08;一&#xff09;圆周率 &#xff1a; &#xff08;1&#xff09;圆周率是指平面上圆的周长与直径之比 &#xff08;ratio of the circumference of a circle to the diameter&#xff09; 。用符号π表示。中国古代有圆率、圆率、周等名称。 &#xff08;2&#xf…