初识MySQL
Posted Guarding and trust
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识MySQL相关的知识,希望对你有一定的参考价值。
不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。
文章目录
一、简介
学习一门技术,要知其然,知其所以然。本章的主角:mysql是属于数据库的一种,那么什么是数据库呢。数据库最简单粗暴的说法就是:能够持久化存储数据的仓库。由此可知MySQL也就是具备这种功能的,而数据库是分很多种的(稍后再介绍),那么到这里肯定会有疑惑,要是有很多种,为什么要选择MySQL呢?本作者在这里总结几点:
- 体积小、速度快、成本低。
- 使用C和C++开发的,所以性能更好,同时使用了多种编译器进行充分测试,保证了源码的可移植性。
- 为各种编程语言提供API,如C、C++、Python、Java、PHP等。
- 支持多线程,充分利用CPU资源。
- 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
- 支持多种存储引擎,如:InnoDB、MyISAM等。
- 使用标准的SQL数据语言形式。
- 在线DDL更改功能、复制全局事务标识、复制五崩溃从机、复制多线程。
由此可见MySQL的强大,也正因为各种优点,所以MySQL是目前互联网中经常使用的数据库之一。
二、数据库分类
数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。而现今最常见的数据库模型主要有两种,即关系型数据库和非关系型数据库。到这肯定有疑惑了,刚刚还说通常数据库分三种,为啥现在多出了一个非关系型数据库呢?这里简单的介绍一下,因为MySQL是关系型数据库,不是非关系型数据库。
非关系型数据库英文术语叫NoSQL,随着互联网web2.0网站的兴起,传统的关系型数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心了,暴露了很多难以克服的问题,这是非关系型数据库就应运而生了,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的有效补充。
-
- 关系型数据库:MySQL、Oracle、SQL Server、DB2、SQLite、PostgerSQL等。
-
- 非关系型数据库:Redis、MongoDB、HBase等。
三、MySQL数据类型
每种编程语言都有属于自己的数据类型,而数据库其实也不例外的,MySQL数据库也是有属于自己的数据类型。MySQL支持的数据类型主要有数值类型、日期和时间类型和字符串类型。下面将对这些数据类型进行详细的说明。
1、数值类型。MySQL支持所有标准SQL数值数据类型。
类型 | 大小 | 范围(有符号) | 范围(无符号) | 描述 |
---|---|---|---|---|
TINYINT | 1B | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2B | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3B | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4B | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 整数值 |
BIGINT | 8B | (-9 223 372 036 854 775 808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大正数值 |
FLOAT | 4B | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度浮点数值 |
DOUBLE | 8B | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7E+308) | 双精度浮点数值 |
DECIMAL | 对DECIMAL(M, D),如果M>D,为M+2,否则D+2 | 依赖与M和D的值 | 小数值 |
【提示】:在开发中一般用的比较频繁的类型有 int、bigint、double、decimal
2、日期和时间类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 描述 |
---|---|---|---|---|
DATA | 3B | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3B | ‘-838 : 59 : 59’/‘-838 : 59 : 59’ | HH : MM : SS | 时间值或持续时间 |
YEAR | 1B | 1901/2155 | YYYY | 年份值 |
DATETIME | 8B | 1000-01-01 00 :00 :00/ 9999-12-31 23 :59 :59 | YYYY-MM-DD HH : MM : SS | 混合日期和时间值 |
TIMESTAMP | 4B | 1970-01-01 00 :00 :00/2038 结束时间是第2147483647秒,即北京时间2031-1-19 11 :14 :07,格林尼治时间2038年1月19日 凌晨03 :14 :07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
3、字符串类型
类型 | 大小 | 描述 |
---|---|---|
CHAR | 0~255 | 定长字符串 |
VARCHAR | 0~65 535B | 变长字符串 |
TINYBLOB | 0~255 | 不超过255个字符的二进制字符串 |
TINYTEXT | 0~255 | 短文本字符串 |
BLOB | 0~65 535B | 二进制形式的长文本数据 |
TEXT | 0~65 535B | 长文本数据 |
MEDIUMBLOB | 0~16 777 215B | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0~16 777 215B | 中等长度文本数据 |
LONGBLOB | 0~4 294 967 295B | 二进制形式的极大文本数据 |
LONGTEXT | 0~4 294 967 295B | 极大文本数据 |
【提示】:在开发中一般用的比较频繁的类型有 varchar、text、longblob
四、SQL语言详解
SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。SQL 是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其标准处理语言。之所以广受欢迎,是因为它具有以下用途:
- 允许用户访问关系型数据库系统中的数据;
-
- 允许用户描述数据;
- 允许用户定义数据库中的数据,并处理该数据;
- 允许将 SQL 模块、库或者预处理器嵌入到其它编程语言中;
- 允许用户创建和删除数据库、表、数据项(记录);
- 允许用户在数据库中创建视图、存储过程、函数;
- 允许用户设置对表、存储过程和视图的权限
与关系型数据库有关的 SQL 命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE、DROP 等,根据其特性,可以将它们分为以下几个类别。
- DDL(Data Definition Language):数据定义语言
对数据的结构和形式进行定义,一般用于数据库和表的创建、删除、修改等。
命令 | 说明 |
---|---|
CREATE | 用于在数据库中创建一个新表、一个视图或者其它对象。 |
ALTER | 用于修改现有的数据库,比如表、记录。 |
DROP | 用于删除整个表、视图或者数据库中的其它对象。 |
- DML(Data Manipulation Language):数据处理语言
对数据库中的数据进行处理,一般用于数据项(记录)的插入、删除和修改。
命令 | 说明 |
---|---|
INSERT | 插入一条或多条记录。 |
UPDATE | 修改记录。 |
DELETE | 删除记录。 |
- DQL(Data Query Language):数据查询语言
用于对模式对象中的数据执行查询。
命令 | 说明 |
---|---|
SELECT | 用于从一个或者多个表中检索某些记录。 |
- DCL ( Data Control Language):数据控制语言
控制数据的访问权限,只有被授权的用户才能进行操作。
命令 | 说明 |
---|---|
GRANT | 向用户分配权限。 |
REVOKE | 收回用户权限。 |
五、总结
本章介绍了什么是数据库,数据库的分类以及需要学习的MySQL数据类型和SQL语言,想要学好MySQL,或者学好关系型数据库,SQL语言是重点。最后如果本章内容对你有所帮助,请给作者点了赞。
作者功底有限,文章内容如有出错,请进行相关技术交流。
以上是关于初识MySQL的主要内容,如果未能解决你的问题,请参考以下文章