MYSQL技术连环斩-MYSQL简述

前言:严格的来说,MYSQL是一款产品而不是一项技术。关于技术和产品的论述,请参考我的博文。现在进行小结一下。可以说数据库技术是为了解决数据之间如何聚合,聚合的数据如何管理的问题。为了实际上的真正应用,就必须选择一款相应的产品。所以说产品是技术的一个实例。从面相对象的逻辑来思考这个问题,数据库技术是一个类,而MYSQL是它的一个对象。

一、关于数据库。

1、为什么会产生数据库?

我们所俗称的电脑它的正式名称叫计算机,很明显计算机所要做的工作就是进行计算,而当你把它从数学这个学科的角度去理解,那么很明显计算需要数据,于是数据就产生了。在计算机中我们可以把很多现实中存在的实物和非实物都转化成数据。比如一个字母A,可能就变成了010101这样的数据。好的,数据不可能只有一个,所以这个数据量就会很大,这个时候我们需要考虑的是如何把相互关联的数据整合在一起?这样做的好处是便于查询,也方便管理,所以也就有了数据库的概念。关于学术上严禁的概念我不在这里复制了,任何一本数据库相关的书都会写到,我只想用更加通俗的语言去解释这个名词。数据库这个词我们可以从宏观和微观上来看。从微观上看,数据库就是数据的集合,这里集合的概念与数学中集合的概念相同。从宏观上看,数据库其实就是一个容器。你可以把他想象成一个杯子,一个碗,只不过里面盛放的不是水而是数据。

2、数据库与数据库管理系统。既然数据库是一个容器,实际上我们需要做的就是往容器里面放东西和取东西。那么必须有这么一套系统用来进行这些操作。这就是数据库管理系统。所以说我们常见的MYSQL ,MS SQL SERVER ,ORACLE等都是数据库管理系统。这里与现实不同的是,数据库管理系统创造的数据库之间是不能通用的。比如MYSQL造的容器像是一个试管,ORACLE造的容器像是一个广口瓶。

3、关系型数据库。前面说到了数据库像是一个容器。现在我们有新的问题了,虽然有容器了,但是我们还有一个问题没有解决。就是数据与数据之间依靠什么样的形式聚合在一起,不能像大烩菜一样混乱的放在一起吧。根据数据之间的联系不同,就不了不同类型的数据库,其中目前势力最大的,最火的就是关系型数据库。(近年来,面相对象的数据库开始流行起来了)所谓关系型数据库简单的理解就是一张二维表。数据之间都是靠这种二维表产生联系的。就像是你再用EXCEL画的一张表一样。关系型数据库就是由一张或多张这种表组成的。如果你总是被关系这个词搞的很迷糊,那么你就暂且关系型数据库=表数据库这么认为吧。

4、关系数据库的几个概念。

既然关系数据库是由表生成的,那么久需要理解几个概念了。

记录:我们把表中的每一行叫做一个“记录”,每一个记录包含这行中的所有信息。

字段;我们把每一列叫做一个“字段”。每个字段包含某一专题的信息。

值:在数据库中存放在表行列交叉处的数据叫做“值”,

这三个名词在所有关系数据库中都成立。

二、关于MYSQL数据库

这是一篇技术文章,所以关于MYSQL数据库的历史就不说了,有兴趣的朋友请自行BAIDU一下。目前MYSQL数据库的所有权归ORACLE公司所有。

1、为什么要用MYSQL

A、流行度高。MYSQL数据库在数据库技术领域中可能不能排名第一,但是个人认为排名一定在前十或前五。学习技术特别是一个产品一定学热门的东西。这样你从A公司使用熟悉后,又到了B公司可以继续使用。否则可能随着时间的流逝,你也会忘光的。特别是基于WEB站点,很多WEB都采用了LAMP架构,其中的M就是MYSQL数据库。即使像一些门户网站也是用该数据库。

B、体积小巧、安装简单。就和很多鼓吹ORACLE数据库是多么万能和强大的时候,其实它自身的问题也是缺点。MYSQL本身只有几十MB,即使加上一些ODBC,也不过100-200MB,这个体积要比ORACLE可要小的多。使用一张U盘就可以携带。这个看似没有优势,但是假设这样一种场景,你就会觉得优势出来了。我们假设在A主机安装了MYSQL数据库,因为一些原因,需要迁移到B主机上。B主机上还没有装数据库,而且是台远程主机,那么想一想体积小巧是不是迁移起来很方便呢?

C、开源软件。相比MS SQL和ORACLE,MYSQL这么受欢迎就是因为开源。我知道很多技术人本身从来也不关注产品成本或者说是二次开发、使用成本。开源虽然不等于免费,但是开源的软件总是带来以上的低成本。你不考虑是因为你没有上升到需要考虑这个问题的时候,如果你是一个CIO或者是运营总监之类,我相信你是会考虑的.

D. 跨平台。比如MS(微软的)SQL SERVER。MYSQL可以在很多操作系统下安装运行。除了流行的WINDOWS和LINUX,甚至还可以在一些FREE BSD等其它操作系统下安装运行。

E.支持多种编程语言。C++ 、JAVA、PHP等多种编程语言都有数据库驱动接口,可以开发MYSQL数据库。

2、MYSQL基于C/S通信模式。像MS SQL,ORACLE和MYSQL都是基于C/S的模式。这种模式和其它的C/S模式一样便于通过网络来访问数据库。需要值得新手注意的是一般情况下mysql说的是基于mysql自带的客户端管理工具,而大写的MYSQL才是服务器端数据库程序。在LINUX下一般叫做mysqld。服务器端没有人机界面,需要通过客户端连接到服务器端去管理、操作数据库。

3.关于MYSQL与MS SQL的比较

面是 MySQL 开发小组自己写的比较文章:MySQL 与 mSQL (MS SQL)的比较
因为没有线程创建开销、一个较小的语法分析器、较少功能和简单的安全性,mSQL应该在下列方面更快些:

  1. 执行重复的连接和断开的测试,在每个连接期间运行一个非常简单的查询。
  2. 有很少的列和键的插入很简单的表的INSERT操作。
  3. CREATE TABLE和DROP TABLE。
  4. 在不是一个索引的一些东西上SELECT。(一个表扫描是很容易的。)


因为这些操作是如此简单,当你有更高的启动开销时,很难在这些方面变得更好。在连接被建立以后,MySQL应该性能好一些。在另一方面,MySQL比mSQL(以及大多数其他的SQL实现)在下列方面更好些
 

  1. 复杂的SELECT操作。
  2. 检索较大的结果(MySQL有一个更好、更快并且更安全的协议)。
  3. 有变长字符串的表,因为MySQL有更有效的并可在VARCHAR列上索引。
  4. 有很多列的表的处理。
  5. 由长记录的表的处理。
  6. 有很多许多表达式的SELECT。
  7. 在大表上的SELECT。
  8. 同时处理很多连接。MySQL充分是完全多线程化的,每个连接有它自己的线程,这意味着没有线程必须等待另一个线程(除非一个线程正在修改一张表,另外的线程想要存取)在mSQL中,一旦一个连接被建立了,所有其它线程必须等到第一个线程完成,不管连接正在运行的查询是短的或是长的。当第一个连接终止时,下一个才能工作,而此时所有其它线程再次等待,等等。
  9. 联结。如果你改变一个SELECT中的表的顺序,mSQL可能变得异常地慢。在基准套件中,比MySQL要慢超过15000倍的时间。这是由于mSQL缺乏一个联结优化器以便以最佳的顺序排定表。然而,如果你把表按完全正确的顺序放在mSQL2中并且WHERE是很简单的并使用索引列,联结将相对快些!见10.8 使用你自己的基准。
  10. ORDER BY和GROUP BY。
  11. DISTINCT。
  12. 使用TEXT或BLOB列


 

三、为什么要学MYSQL

我个人认为这是我骗文章着重要强调的,也是一般的文章不会提到的。学习是通过需求来决定的,盲目的学习其实收获不大。尽管MYSQL是一款数据库关系系统产品,但是做为能动性的人,你的工作性质决定了你要学习的内容。我给它分了三个层次,与其说是层次不如准确点说是三个方向。

1、程序开发人员。程序开发人员需要通过对MYSQL的学习要达到利用MYSQL去创造出一款基于MYSQL的数据库。所以程序人员的重点是如何创建一个自己需要的MYSQL数据库。除了自己编程的知识,数据结构的知识,SQL语句的熟练至精通的掌握程度,他们只需要创造出适合他们的MYSQL数据库就够了。所以它们并不是特别关注MYSQL的搭建,MYSQL的管理,甚至是基于MYSQL的优化(它们一般更多的关注的是优化数据库本身,而不是MYSQL数据库系统)

2、数据库管理员。与程序开发人员不同的是,数据库管理员需要熟练掌握MYSQL的搭建(特别是在不同OS下,数据库的日常管理。数据库的权限管理,包括更深入的数据库系统的优化工作。资深的数据库管理人员可以与系统架构人员一同探讨如何搭建一个让自己满意而相对完美的数据库系统环境。

3、系统管理员、系统架构师。在没有专职的数据库管理员得企业,系统管理员要承担数据库管理员的大部分角色。即使有了数据库管理员,系统架构师得级别可能要针对整个系统的优化,比如基于LAMP,那么除了要熟练甚至精通MYSQL,还必须熟悉LINUX,APACHE,和PHP等产品。找出它们之间的瓶颈,从而改良架构。

本系列的文章内容主要倾向于后2个方向。

四、推荐学习MYSQL书籍

关于MYSQL的图书很多。不过学习者一定要根据自己的需求来购买。按照我上面分类的三个方向进行选书。基本上图书有一部分是针对开发人员的,有一部分是针对数据库管理员的。但是从我读过的有限的几本来看,没有一本是完美针对某个方向的,只是在章节和内容上更倾向哪个方向。

关于数据库管理员,我建议阅读《MYSQL权威指南》这本书写的不错,主要针对数据库管理人员,也是一本入门书。另外到一定水平后,可以阅读《高性能MYSQL》这本书,主要讲的是如何优化MYSQL。这本书有一定难度,不适合新书阅读。如果是开发人员,新手可以读一读《MySQL入门很简单》这本书。再次提醒大家,一定要买针对方向的书,否则那真是买来无用了。

另外对于新手,一定要买一本教程系统的学习一下,不要从网上到处乱抓,那么学习到的知识点是散的,无法串联起来使用,会让你一头雾水。

在下一章中,讲着重叙述MYSQL的安装和常用的MYSQL管理工具。

本文可能会不断优化,希望阅读者能提出宝贵意见,我好及时修改。

                                                                                                  2011-5-2 第二次修改稿

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火柴人_火柴人 x THANKSGIVING

滴水之恩当涌泉相报,THANKSGIVING是我们给予对方的温暖。很多时候我们却发现,帮助我们的人其实并不求回报。也许,当我们想要感恩得到的帮助时,更应该做的,是铭记他人的善意,并努力把这份温暖传递下去。2020…

AI催生新的工作机遇:5个未来会很吃香的岗位

导读:人工智能与人类工作是当下许多人津津乐道的一个话题,而讨论的重点大多是围绕在“未来人工智能会不会抢走我们的工作”这个方面。“人工智能”一词经常会让人感觉心生恐惧和忧虑,人们畏惧人工智能所带来的未知可能性,害怕发生…

在 CAP 中使用 AOP ( Castle.DynamicProxy )

简介本篇文章主要介绍如何在 CAP 中集成使用 Castle.DynamicProxy,Castle DynamicProxy 是一个用于在运行时动态生成轻量级.NET代理的库。代理对象允许在不修改类代码的情况下截取对对象成员的调用。可以代理类和接口,但是只能拦截虚拟成员。为什么需要使…

共享服务器硬件要求,共享服务器的配置与管理.doc

编号:Q/NJXX-QR-RJ-2-2012南京信息职业技术学院教 案授课班级41421P、41422P授课时数2序号1时间地点[ ] 年[ ]月[ ] 日 [ ]节 [ ]课程单元共享服务器的配置与管理教学内容能够在Linux中访问Windows的共享资源掌握Linux中安装NFS服务的方法掌握Linux中安装Samba服务的…

Vim as Python IDE on windows

下载安装Python。 从Vim的网站下载vim,建议下Self-installing executable的版本。 编辑vim的配置文件_vimrc 拷贝vimrc_example里面的东东到_vimrc 去掉_vimrc里面的source $VIMRUNTIME/vimrc_example.vim 设置中文支持 "设置编码自动识别, 中文引号显示 "set fileen…

python中matplotlib库实例_Python Matplotlib库入门指南

Matplotlib简介Matplotlib是一个Python工具箱,用于科学计算的数据可视化。借助它,Python可以绘制如Matlab和Octave多种多样的数据图形。最初是模仿了Matlab图形命令, 但是与Matlab是相互独立的.通过Matplotlib中简单的接口可以快速的绘制2D图表初试Matpl…

分布式之数据库和缓存双写一致性方案解析!

一、为什么要写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作:但是在更新缓存方面,对于更新完数据库…

四年级上册数学计算机笔记,四年级数学下册笔记整理

第一单元四则运算(1)在没有括号的算式里,如果只有加、减法或者只有乘、除法,都要从左往右按顺序计算。 (2)在没有括号的算式里,有乘、除法和加、减法,要先算乘、除法后算加、减法。 (3)在有括号的算式里,要先算括号里面…

CAP 发布 5.0 版本正式发布

前言今天,我们很高兴宣布 CAP 发布 5.0 版本正式版。同时我们也很高兴的告诉你 CAP 已经有越来越多的用户并且变得越来越流行。在 5.0 版本中,我们主要致力于更好的支持 .NET 5 以及支持新的 Transport,同时在该版本也进行了一些 Bug 修复的工…

电脑上的ofd格式文件如何打开呢_OFD格式的文件怎么打开预览?,来充电吧

我们不管是在工作、学习、下载资源的时候都可能收到别人的文件,但是如果是word或者pfd格式还好,直接在电脑上就可以打开,但是如果是ofd格式的就很难打开了。工具/材料搜狗浏览器、DCS文档在线预览操作方法01打开我们的搜狗浏览器,…

SUSE Linux系统安全配置十条

SUSE由于其出色的性能和对安全较好的控制,吸引了很多企业级用户,目前在国内开始有大量的关键应用。但这并不代表SUSE在使用中就是安全的,SUSE里还有很多安全细节要注意。 目录 1. 补丁、SSH及其它……………………………………3 2. 最小化xi…

用Python画中国地图(二)

在上一篇文章《用Python画一个中国地图》中,我们简单描述了一下如何用Python快速画出一个中国地图的轮廓,似乎没有什么实用价值,这一次我们用实际数据填充它,使它看上去更有意义。上色延续上一次的代码,我们这次还是只…

攻城时服务器维护,8月31日服务器维护更新公告

亲爱的《千年3》玩家:2017年8月31日10:00-14:00将对全区进行服务器例行维护,预计所需时间约为4个小时,如在维护期间无法完成维护内容,开机时间将顺延。本次更新内容包含:1、商城礼包更新2、版本…

php7 匿名继承类_PHP7中的匿名类使用方法_后端开发

PHP 微服务集群搭建 - Hyperf_后端开发Hyperf 是基于 Swoole 4.4 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展…

MySql里的My是指谁?

Monty 是一个编程天才。19岁的时候就从赫尔辛基理工大学退学并找了份全职工作,因为在学校里已经不能再教他什么了。33岁的时候他发布了 MySQL,世界上最有名的开源数据库,除了一个库之外,他编写了数据库的全部东西。55岁的时候他抛…

要嫁就嫁程序猿——钱多话少死的早

1程序猿问科比:“你为什么这么成功? ”科比:“你知道洛杉矶凌晨四点是什么样子吗? ”程序猿:“知道,一般那个时候我还在写代码,怎么了?”科比:“额…….”2女神&#xff…

成员函数指针与高性能的C++委托

成员函数指针与高性能的C委托 http://www.cnblogs.com/jans2002/archive/2006/10/13/528160.html Member Function Pointers and the Fastest Possible C Delegates 撰文:Don Clugston 翻译:周翔 引子 标准C中没有真正的面向对象的函数指针。这一点对C来…

k8s滚动升级_k8s deployment 滚动更新

正常来说 k8s 的 deployment 在更新时默认就会进行滚动的升级但是实际操作中会发现,滚动更新过程中应用还是会“挂掉”一会儿,大概会有几秒钟网页访问 502。究其原因应该是容器启动后,到应用真正工作起来,中间会有一段时间&#x…

ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...

本篇文章给大家带来的内容是关于Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。问题Ajax上传文件/照片时报错TypeError :Illegal in…

再见!微软宣布终止对旧版 Microsoft Edge 浏览器的支持

微软宣布自 2021 年 3 月 9 日起终止对旧版 Microsoft Edge(Microsoft Edge Legacy)浏览器的支持。旧版 Microsoft Edge 是基于 EdgeHTML 的浏览器,自 2015 年 7 月 29 日随新一代 Windows 10 操作系统推出。在结束对旧版 Microsoft Edge 浏览…