那些你不常用却非常有用的MySql语句和命令
操作数据库
关于数据库的操作比较少,主要是:看、建、用、删。
查看数据库
获取服务器上的数据库列表通常很有用。执行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 | |+-----------+------------------+------+-----+---------+----------------+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) |
创建临时表
有的时候,当工作在非常大的表上时,可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让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 |+-------------------+2 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 | |+-----------+------------------+------+-----+---------+----------------+5 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 | |+-----------+------------------+------+-----+---------+----------------+5 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
那些你不常用却非常有用的MySql语句和命令的更多相关文章
- 有用的MySQL语句
摘自onefish资料库 1. 计算年数你想通过生日来计算这个人有几岁了. SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofb ...
- 不常用的容易忘记常见mysql操作数据表命令
删除外键关联的约束 alter table tablename drop foreign key keyname;
- 一些常用的mysql语句实例-以后照写2
specification: 规范, 规格, 产品规范, 产品规格, 技术规范, 产品说明书. 如: create_specification, 等等 创建数据库时, 显式地指明, 字符集: crea ...
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
<Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
<Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...
- 工作常用的linux/mysql/php/工具命令
工作常用的linux/mysql/php/工具命令: 1. tar备份目录 tar zcvf ****.tar.gz ****/ tar 备份跳过目录 tar --exclude=test1 3. s ...
- 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码
一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...
- 50个常用的笔试、面试sql语句
50个常用的笔试.面试sql语句 2009-12-17 15:05 Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,s ...
- skip-grant-tables:非常有用的mysql启动参数
skip-grant-tables:非常有用的mysql启动参数 介绍一个非常有用的mysql启动参数—— --skip-grant-tables.顾名思义,就是在启动mysql时不启动grant ...
随机推荐
- Python如何判断变量的类型
Python判断变量的类型有两种方法:type() 和 isinstance() 如何使用 对于基本的数据类型两个的效果都一样 type() ip_port = ['219.135.164.245', ...
- Centos下安装并设置nginx开机自启动
一.在centos环境下安装下载并安装nginx,由于nginx需要依赖一些环境才能安装,主要依赖g++.gcc.openssl-devel.pcre-devel和zlib-devel这些环境,首先得 ...
- Eclipse将Java项目打成jar工具包
jar包:就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法. jar包可分为可执行jar包和jar工具包,在这里, ...
- 使用经验风险最小化ERM方法来估计模型误差 开坑
虽然已经学习了许多机器学习的方法,可只有我们必须知道何时何处使用哪种方法,才能将他们正确运用起来. 那不妨使用经验最小化ERM方法来估计 . 首先: 其中, δ代表训练出错的概率 k代表假设类的个数 ...
- BVT与冒烟测试
[BVT的释义] BVT的全称是Build Verification Test.可以说这个全称就是BVT的定义了. BVT只验证build构建的成功与失败,不深入测试构建好的build的功能.性能等等 ...
- C++ STL 全排列
摘自爱国师哥博客https://www.cnblogs.com/aiguona/p/7304945.html 一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元 ...
- Full Binary Tree(二叉树找规律)
Description In computer science, a binary tree is a tree data structure in which each node has at mo ...
- 王者荣耀交流协会第二次Scrum立会
会议时间:2017年10月21号 17:00-17:22,时长22分钟. 会议地点:首尔名家里面的大桌子(PS:感谢组长大大请我们吃饭~)立会内容:每位同学汇报了今日工作(高远博与王超同学在今日有 ...
- Linux系统LVS搭建笔记
因为客户是国有企业,且一次性购买了14台服务器(16核),14台中暂且先用8台,其中LVS使用5台,NFS一台主要为了共享WEB系统(多台电脑的1.5T的硬盘容量浪费了).MySQL两台,Memcac ...
- Python 变量和常量及数据类型
一.变量的命名 变量由字母.数字和下划线组成.变量的第1个字符必须是字母或下划线. 二.变量的赋值 例: x = 1 三.局部变量 局部变量只能在函数或者代码段内使用. 四.全局变量 在函数之外定义的 ...