MySQL介绍

什么是MySQL

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的关系数据库管理系统(RDBMS)应用软件之一。

MySQL数据库是关系型的

    关系数据库将数据存储在单独的表中,而不是将所有数据放在一个大的库房中。数据库结构被组织成针对速度优化的物理文件。逻辑模型具有数据库,表,视图,行和列等对象,可提供灵活的编程环境。可以设置管理不同数据字段之间关系的规则,例如一对一,一对多,唯一,必需或可选,以及不同表之间的”指针”。数据库强制执行这些规则,因此使用设计良好的数据库,应用程序永远不会看到不一致,重复,孤立,过时或丢失的数据。

    ”MYSQL” 的SQL部分代表 “ 结构化查询语言 ”。SQL是用于访问数据库的最常用的标准化语言。根据编程环境,可以直接输入SQL(例如,生成报告),将SQL语句嵌入到用其他语言编写的代码中,或使用隐藏SQL语法的特定于语言的API。

MySQL数据库服务器非常快速,可靠,可扩展且易于使用

    MySQL Server最初是为了比现有解决方案更快地处理大型数据库而开发的,并且已经成功地在高要求的生产环境中使用了好几年。虽然在不断发展的今天,MySQL服务器提供了丰富而有用的功能集。它的连接性,速度和安全性使MySQL Server非常适合访问Internet上的数据库。

MySQL Server适用于客户端/服务器或嵌入式系统。

    MySQL数据库软件是一个C/S系统,由支持不同后端的多线程SQL服务器,几个不同的客户端程序和库,管理工具以及各种应用程序编程接口(API)组成。
MySQL Server作为嵌入式多线程库,可以将其链接到应用程序,以获得更小,更快,更易于管理的独立产品。

MySQL特点

  • 内部和可移植性
  • 用C和C ++编写。
  • 经过多种不同编译器的测试。
  • 适用于许多不同的平台。
  • 为了便于携带,在MySQL 5.5及更高版本中使用CMake。以前的系列使用GNU Automake,Autoconf和Libtool。
  • 使用Purify(商业内存泄漏检测器)以及GPL工具Valgrind(http://developer.kde.org/~sewardj/)进行测试。
  • 使用具有独立模块的多层服务器设计。
  • 设计为使用内核线程完全多线程,以便在可用时轻松使用多个CPU。
  • 提供事务性和非事务性存储引擎。
  • 使用非常快的 B-tree 磁盘表 (MyISAM)实现索引压缩。
  • 旨在使添加其他存储引擎相对容易。如果要为内部数据库提供SQL接口,这非常有用。
  • 使用非常快速的基于线程的内存分配系统。
  • 使用优化的嵌套循环连接执行速度非常快。
  • 实现内存中的哈希表用作临时表。
  • 使用应尽可能快的高度优化的类库实现SQL函数。通常在查询初始化之后根本没有内存分配。
  • 将服务器作为单独的程序提供,用于客户端/服务器网络环境,以及作为可嵌入(链接)到独立应用程序的库。此类应用程序可以单独使用,也可以在没有网络的环境中使用。

数据类型

  • 许多数据类型:有符号/无符号整数,8个字节长的数据,float(浮点型), double(双精度型), char(字符), varchar(变长字符串), binary(二进制),varbinary(可变二进制), text(文本), blob, date, time, datetime, timestamp, year, set, enum,和开放GIS空间类型。
  • 固定长度和可变长度的字符串类型。

函数和语句

    SELECT列表和 WHERE子句查询中的 完整运算符和函数支持 。例如:

1
2
3
mysql> SELECT CONCAT(first_name, ' ', last_name)
-> FROM citizen
-> WHERE income/dependents > 10000 AND age > 30;
  • 完全支持SQL GROUP BY和 ORDER BY子句。支持基函数(COUNT(), AVG(), STD(), SUM(), MAX(), MIN(),和GROUP_CONCAT())。
  • 支持LEFT OUTER JOIN和 RIGHT OUTER JOIN使用标准SQL和ODBC语法。
  • 根据标准SQL的要求支持表和列上的别名。
  • 支持DELETE, INSERT, REPLACE,和 UPDATE以返回更改(受影响)的行数,或返回通过连接到服务器时设置标志,而不是匹配的行的数量。
  • 支持特定于MySQL的SHOW语句,用于检索有关数据库,存储引擎,表和索引的信息。支持 INFORMATION_SCHEMA数据库,根据标准SQL实现。
  • 一个EXPLAIN语句来显示优化器如何解决一个查询。
  • 表名或列名中函数名的独立性。例如,ABS是一个有效的列名。唯一的限制是,对于函数调用,函数名和它后面的“ (”之间不允许有空格 。
  • 可以在同一语句中引用来自不同数据库的表。

安全

  • 特权和密码系统,非常灵活和安全,可以进行基于主机的验证。
  • 连接到服务器时加密所有密码流量的密码安全性。

可扩展性和限制

  • 支持大型数据库。我们将MySQL Server与包含5000万条记录的数据库结合使用。
  • 每个表最多支持64个索引。每个索引可以包含1到16列或部分列。InnoDB表的最大索引宽度为767字节或3072字节。MyISAM表的最大索引宽度为1000个字节。索引可使用的柱的前缀CHAR, VARCHAR, BLOB,或 TEXT列类型。

连接

  • 客户端可以使用多种协议连接到MySQL Server:
    i. 客户端可以在任何平台上使用TCP / IP套接字进行连接。
    ii. 在Windows系统上,如果使用该–enable-named-pipe选项启动服务器,则客户端可以使用命名管道进行连接。如果使用该–shared-memory选项启动,Windows服务器也支持共享内存连接。客户端可以使用该–protocol=memory选项通过共享内存进行连接。
    iii. 在Unix系统上,客户端可以使用Unix域套接字文件进行连接。
  • MySQL客户端程序可以用多种语言编写。用C编写的客户端库可用于用C或C ++编写的客户端,或者用于提供C绑定的任何语言。
  • 提供C,C ++,Eiffel,Java,Perl,PHP,Python,Ruby和Tcl的API,使MySQL客户端能够以多种语言编写。

客户端和工具

  • MySQL包括几个客户端和实用程序。这些包括命令行程序,如 mysqldump和 mysqladmin,以及图形程序,如 MySQL Workbench。
  • MySQL Server内置支持SQL语句来检查,优化和修复表。这些语句可以从命令行通过 mysqlcheck客户端获得。MySQL还包括myisamchk,这是一个非常快速的命令行实用程序,用于在MyISAM 表上执行这些操作。
  • 可以使用–help 或-?选项调用MySQL程序以获取在线帮助。
------ end ------
0%