Mysql 命令大全
![Mysql命令大全](https://static001.geekbang.org/infoq/bc/bc9cec558c079c527e733c510c0a0480.jpeg)
@TOC
前言
![](https://static001.geekbang.org/infoq/8b/8bd2553d42310822378934d7894890c2.gif)
一、MySql 数据库
![](https://static001.geekbang.org/infoq/dd/ddd33464459e827a22a8306260ae6cfb.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
上学期间每次只要上数据库的课程,困得不行,到后来才发现数据库的重要性。
对于现在的我,让我学习数据库,热情和兴趣逐渐强烈,于是就有了这篇文章。
1.介绍
<table><tr><td bgcolor=pink > MySQL 是一个真正的多用户、多线程 SQL 数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言,它使得存储、更新和存取信息更加容易。MySQL 是一个客户机/服务器结构的实现,它由一个服务器守护程序 mysqld 和许多不同的客户程序以及库组成的。MySQL 的主要目标是快速、健壮和易用。最初是因为 MySQL 的创始人需要这样的一个 SQL 服务器,它能处理与任何不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL 因此就开发出来了。它提供 C,C++,Java(JDBC),Perl,Python,PHP and TCL 的 API 接口;多平台支持,包括 Solaris,SunOS,BSDI,SGI IRIX,AIX,DECUNIX,Linux,FreeBSD,SCO OpenServer,NetBSD,OpenBSD,HPUX,Win9x andNT;多样的数据类型,包括有/无符号 1,2,3,4,8 字节 integers,FLOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,DATETIME,YEAR,SET,ENUM;非常灵活和安全的权限系统,密码加密;为 Windows 提供 ODBC 接口,可通过 Access 与之相联,另有第三方开发商提供多样的 ODBC 驱动程序;在 MySQL 3.23 中使用新 MyISAM 最大的表大小可达 8 百万 TB(2^63 个字节);多种语言支持,但不支持中文。然而,为了实现快速、健壮和易用的目的,MySQL 必须牺牲一部分灵活而强大的功能,如子查询、存储过程与触发器、外键、事物处理等。因而,MySQL 在某些应用中缺乏灵活性,但这也使它对数据的处理速度较其它数据库服务器至少快 2~3 倍。
MySQL 自身不支持 Windows 的图形界面,因此,所有的数据库操作及管理功能都只能在 MS-DOS 方式下完成。首先,必须登陆 MySQL 服务器,即在提示符/MySQL/BIN>下输入 MYSQL–H host –U user –Ppassword,提示符改为 mysql>时表示登陆成功。然后,选择所操作的数据库,即 mysql> USEdatabasename。接着就可以用 SQL 语句进行查询了。如果需要退出数据库服务器,可执行 QUIT 命令,这样就成功退出服务器了。当然,由于 MySQL 的知名度日益增加,许多第三方软件公司推出了 MySQL 在 Windows 环境中的具有图形界面的支持软件,如 EMS 公司的 EMSMYSQL MANAGER 就提供了 Windows 形式的 MySQL 数据库操作功能。转帖于 Xue163.com_MySQL </td></tr></table>
2.优点
MySQL 的优点:1. 它使用的核心线程是完全多线程,支持多处理器。 2.有多种列类型:1、2、3、4、和 8 字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和 ENUM 类型。 3. 它通过一个高度优化的类库实现 SQL 函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。4. 全面支持 SQL 的 GROUP BY 和 ORDER BY 子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和 MIN())。你可以在同一查询中混来自不同数据库的表。 5. 支持 ANSI SQL 的 LEFT 0UTER JOIN 和 ODBC。 6. 所有列都有缺省值。你可以用 INSERT 插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。 7. MySQL 可以工作在不同的平台上。支持 C、C++、Java、Perl、PHP、Python 和 TCL API。</td></tr></table>
3.缺点
MySQL 的缺点:1、 MySQL 最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用 mysqladmin 来重读用户权限时才发生改变。2、 MySQL 的另一个主要的缺陷之一是缺乏标准的 RI(Referential Integrity-RI)机制;Rl 限制的缺乏(在给定字段域上的一种固定的范围限制)可以通过大量的数据类型来补偿。3、 MySQL 没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制。4、 MySQL 不支持热备份。5、 MySQL 的价格随平台和安装方式变化。Linux 的 MySQL 如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix 或 Linux 自行安装 免费 、Unix 或 Linux 第三方安装需要付费。</td></tr></table>
4.数据库对比
常见数据库有<关系数据库系统>: ORACLE(甲骨文)、DB2、SQLServer、Sybase、Informix、MySQL、VF、Access 等。
(1)、性能
SQL Server 老版本多用户时性能不佳,新版本的性能有了明显的改善,各项处理能力都有了明显的提高。保持了多项 TPC-C 纪录。具体参见http://www.tpc.org/
Oracle 性能最高,保持 Windows NT 下的 TPC-D 和 TPC-C 的世界记录。
SYBASE 性能较高,支持 Sun、IBM、HP、Compaq 和 Veritas 的集群设备的特性,实现高可用性。性能接近于 SQL Server,但在 UNIX 平台下的并发性要优与 SQL Server。适应于安全性要求极高的系统。
DB2 适用于数据仓库和在线事物处理,性能较高。客户端支持及应用模式。
INFORMIX 性能较高,支持集群,实现高可用性。适应于安全性要求极高的系统,尤其是银行, 证券系统的应用。
(2)、可伸缩性,并行性
SQL Server 以前版本 SQL Server 并行实施和共存模型并不成熟。很难处理大量的用户数和数据卷。伸缩性有限。新版本性能有了较大的改善,在 Microsoft Advanced Servers 上有突出的表现,超过了他的主要竞争对手。
Oracle 并行服务器通过使一组结点共享同一簇中的工作来扩展 Window NT 的能力,提供高可用性和高伸缩性的簇的解决方案。如果 Windows NT 不能满足需要, 用户可以把数据库移到 UNIX 中,具有很好的伸缩性。Oracle 的并行服务器对各种 UNIX 平台的集群机制都有着相当高的集成度。
SYBASE 新版本具有较好的并行性,速度快,对巨量数据无明显影响,但是技术实现复杂,需要程序支持,伸缩性有限。虽然有 DB SWITCH 来支持其并行服务器,但 DB SWITCH 在技术层面还未成熟,且只支持版本 12.5 以上的 ASE SERVER。DB SWITCH 技术需要一台服务器充当 SWITCH,从而在硬件上带来一些麻烦。
DB2DB2 具有很好的并行性。DB2 把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点或数据库节点,伸缩性有限。
INFORMIX 采用单进程多线程的技术,具有较好的并行性。但是仅运行于 UNIX 平台,伸缩性有限。
(3)、安全性
SQL serverMicrosoft Advanced Server 获得最高安全认证,服务器平台的稳定性是数据库的稳定性的基础,新版本的 SQL 的安全性有了极大的提高。
Oracle Server 获得最高认证级别的 ISO 标准认证。
SYBASE 通过 Sun 公司 J2EE 认证测试,获得最高认证级别的 ISO 标准认证。
DB2 获得最高认证级别的 ISO 标准认证。
INFORMIX 获得最高认证级别的 ISO 标准认证。
(4)、操作
SQL Server 操作简单,采用图形界面。管理也很方便,而且编程接口特别友好(它的 SQL-DMO 让编程变得非常方便!) ,从易维护性和价格上 SQL Server 明显占有优势。
Oracle 较复杂, 同时提供 GUI 和命令行,在 Windows NT 和 Unix, Linux 下操作相同。对数据库管理人员要求较高。
SYBASE 复杂,使用命令行操作,对数据库管理人员要求较高。同时提供 GUI 和命令行。但 GUI 较差,常常无法及时状态,建议使用命令行。
DB2 操作简单,同时提供 GUI 和命令行,在 Windows NT 和 Unix 下操作相同。
INFORMIX 使用和管理复杂,命令行操作。对数据库管理人员要求较高。
(5)、使用风险
SQL Server 完全重写的代码,性能和兼容性有了较大的提高,与 Oracle,DB2 的性能差距明显减小。该产品的出台经历了长期的测试,为产品的安全和稳定进行了全面的检测,安全稳定性有了明显的提高。经历了长期的测试,不断延迟,许多功能需要时间来证明,并不十分兼容。
Oracle 长时间的开发经验,完全向下兼容,得到广泛的应用,完全没有风险。可以安全的进行数据库的升级,在企业、政府中得到广泛的应用。并且如果在 WINNT 上无法满足数据的要求,可以安全的把数据转移到 UNIX 上来。
SYBASE 向下兼容, 但是 ct-library 程序不益移植。开发时间较长,升级较复杂,稳定性较好,数据安全有保障。风险小。在安全要求极高的银行, 证券行业中得到了广泛的应用。
DB2 在巨型企业得到广泛的应用,向下兼容性好。风险小。
INFORMIX 开发时间较长,升级较复杂,稳定性较好,数据安全有保障。风险小。在安全要求极高的银行,证券行业中得到了广泛的应用。
(6)、开放性
SQL Server 只能在 Windows 上运行,C/S 结构,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。只支持 Windows 客户,可以用 ADO,DAO,OLEDB,ODBC 连接。Windows9X 系列产品是偏重于桌面应用,NT server 适合各种大中小型型企业。操作系统的系统的稳定对数据库是十分重要的。Windows 平台的可靠性,安全性经过了最高级别的 C2 认证的。在处理大数据量的关键业务时提供了较好的性能。而且 windows 平台的可靠性,安全性和伸缩性是非常有限的。它不象 unix 那样久经考验,尤其是在处理大数据库。
Oracle 能在所有主流平台上运行(包括 Windows)。完全支持所有的工业标准。采用完全开放策略。多层次网络计算,支持多种工业标准,可以用 ODBC,JDBC,OCI 等网络客户连接。可以使客户选择最适合的解决方案。对开发商全力支持。
SYBASE 能在所有主流平台上运行,C/S 结构,可以用 ODBC、Jconnect、Ct-library 等网络客户连接。在银行业中得到了广泛的应用。但由于早期 Sybase 与 OS 集成度不高,因此 VERSION11.9.2 以下版本需要较多 OS 和 DB 级补丁。在多平台的混合环境中,会有一定问题。
DB2 能在所有主流平台上运行(包括 windows)。有较好的开放性,最适于海量数据。跨平台,多层结构,支持 ODBC,JDBC 等客户。在大型的国际企业中得到最为广泛的应用,在全球的 500 家最大的企业中,几乎 85%以上采用 DB2 数据库服务器,而国内到 97 年约占 5%。
IINFORMIX 仅运行在 UNIX 平台,包括 SUNOS、HPUX、 ALFAOSF/1。在银行中得到广泛的应用。
(7)、易维护性和价格
SQL Server 从易维护性和价格上 SQL Server 明显占有优势。基于 Microsoft 的一贯风格,SQL Server 的图形管理界面带来了明显的易用性,微软的数据库管理员培训进行的比较充分,可以轻松的找到很好的数据库管理员,数据库管理费用比较低,SQL Server 的价格也是很低的,但是在 License 的购买上会抬高价格。总体来说 SQL Server 的价格在商用数据库中是最低的。
Oracle 从易维护性和价格体来说 Oracle 的价格是比较高的,管理比较复杂,由于 Oracle 的应用很广泛,经验丰富的 Oracle 数据库管理员可以比较容易的找到,从而实现 Oracle 的良好管理。因此 Oracle 的性能价格比在商用数据库中是最好的。
SYBASESYBASE 的价格是比较低的,但是 SYBASE 的在企业和政府中的应用较少,很难找到经验丰富的管理员,运行管理费用较高。
DB2 价格高, 管理员少,在中国的应用较少,运行管理费用都很高,适用于大型企业的数据仓库应用。
INFORMIX 价格在这些系统中居于中间,与 SYBASE 一样,在企业和政府中应用较少,仅在银行中得到了广泛的应用。经验丰富的管理人员较少,运行管理费用高。
二、命令
1.命令大全
(1).常用操作数据库命令
(2).修改表的命令
(3).对数据的操作
<1>增加数据
<2>删除数据
<3>更新数据
<4>查询数据
<5>对数据进行排序
<6>数据进行分组
(4).多表联合查询
联合这里就需要讲到 and or 的用法,字面意思 and 就是和 or 就是或
(5).权限语句
2.常用的函数
三、演示
1.基础
这里我使用的是 nivacat 工具用的是 mysql 数据库,下面的演示都在这个环境中进行演示
(1)建立数据库
<1>打开 nivacat
![](https://static001.geekbang.org/infoq/ca/ca2b1857d040a996ab07c80701a019a7.png)
<2>连接数据库
注意一点,使用这个软件之前需要配置 Mysql 数据库和任意中间件,我这用的是小皮面板搭建的环境
![](https://static001.geekbang.org/infoq/5f/5fc4159a0e85540e6ae3ff68e0131782.png)
<3>建库
建立一个 MySQL 数据库
![](https://static001.geekbang.org/infoq/dc/dc33e09aee6931833c37ce80ce923f4e.png)
配置需要的东西,这里密码一般都是 root 或者 123456,不知道的可以查看配置文件
![](https://static001.geekbang.org/infoq/db/dbec955e900634bac8b61ff13b6f03a2.png)
建立好之后,点击这几变成绿色说明就成功搭建好数据库。
![](https://static001.geekbang.org/infoq/47/474924591277edcf16484cddbed86a38.png)
(2)查询信息
<1>查询所有库名
![](https://static001.geekbang.org/infoq/fb/fbbe978d27fd41c02929181b6a2f6874.png)
<2>查询表
![](https://static001.geekbang.org/infoq/94/94c07a5567907c0e9f8c6baae801bd3a.png)
<3>查询字段
![](https://static001.geekbang.org/infoq/7b/7b8296e5318aa62f2c8f1182bed64242.png)
(3)增加数据
![](https://static001.geekbang.org/infoq/40/408e97f7a7eac9383c790c198f7d3c37.png)
<1>添加表
![](https://static001.geekbang.org/infoq/06/06f3b239c2d7ed0fa374a77576c8165f.png)
<2>添加表
![](https://static001.geekbang.org/infoq/8e/8e63e02ca8ea1d75fe344916d2685fa1.png)
(4)删除数据
<1>删除库
先看下原来的表里面是存在一个 test 数据库的
![](https://static001.geekbang.org/infoq/d0/d05328b9ddf0784469e04e7c4f3cd287.png)
执行删除命令
我们可以看到 test 被删掉了
![](https://static001.geekbang.org/infoq/14/14a23ebdee415b3ef11c214c08c0e9cd.png)
<2>删除表
![](https://static001.geekbang.org/infoq/78/784d207e4e3654e39094e0804196f64f.png)
<3>删除字段
![](https://static001.geekbang.org/infoq/77/77faccc430722d86f863e88a5602cecd.png)
![](https://static001.geekbang.org/infoq/64/64325d1adf7cdd5cf448658753cea13b.png)
(5)更改数据
<1>更改表
原先表为 massage
![](https://static001.geekbang.org/infoq/71/7170ca1dbb0bdfa2800536d190146e6d.png)
输入
alter table message rename mg;
//修改表名
![](https://static001.geekbang.org/infoq/43/431a26b2e511e5a9d932d076c9aa0529.png)
<2>更改字段
原本 name=’叮当‘ 修改后 name='张三'
![](https://static001.geekbang.org/infoq/f0/f0da3c2a0596a64bf3d66cd8fa248a04.png)
🚀 四、小结
这里抱怨一下下:终于总结完了,1w2q 字,小企鹅太难了。
![](https://static001.geekbang.org/infoq/16/163e148c4d69e01c2a4e1b9e85f3d4dd.png)
个人感觉自从慢慢结束了数据库,对网站数据传输也开始慢慢的了解了,学习不仅要有深度还需要有广度,各位技术友们,咱们一起加油啊。
各位小伙伴们咱们高处见
![](https://static001.geekbang.org/infoq/54/54c4117f451ef37b2b1554a858ff1a57.png)
评论