MySQL入门(一)
最近一直都在搞新员工的培训材料,MySQL的培训PPT我居然写了100多页,我都佩服我自己的毅力了。不如现在把这些总结一下,慢慢写到博客里,供入门者参考。
一 关系型数据库
关系型数据库的理论提出于上世纪七十年代,由IBM的研究员E.F.Codd的论文提出。
关系型数据库的理论基础可以参考王珊和萨师煊编著的经典教材《数据库系统概论》。我就不在这里写了,这些理论性太强,作为快速入门的教程也不应该说这些,但是这些理论就像是武功里的易筋经一样,练了以后什么功夫都学得快。
二 数据库的基本概念
以前玩儿Oracle的时候加了一个群,发现很多人写了好久的PL/SQL,但是还是搞不明白什么叫数据库,什么叫做实例。我觉得,虽然不知道这些还是可以写PL/SQL,但是如果想成为一个DBA,基本概念还是一定要清楚的,就像是练功还是要先扎马步一样,下盘不稳总是容易倒下嘛。
数据库(database):指的是文件系统上的一组文件,在innoDB中表现为后缀为idb的文件。
实例(instance):指的是操作系统上的一组进程/线程和内存的集合。如果在MySQL服务器上执行ps -ef | grep mysql,就能看见MySQL的进程了。
简单地说,数据库指的是文件,实例指的是进程/线程和内存。
平时我们说的数据库,很多的时候指的是关系型数据库管理系统(RDBMS),这些概念在严谨的文档中是要严格区分的,但是在平时的交流中,基本上大家约定俗成的说法是没有问题的。
至于数据库的其他一些概念:表,行,列,视图和索引等等,这些以后慢慢讲吧。
三 MySQL数据库概述
MySQL最开始是创始人Monty觉得别人的数据库不好使,自己写出来服务自己的(Linux是当年Linus觉得Minix只能用在教学,为了更好地学操作系统写出来的),不得不说这些人牛。
后来,他成立了MySQL AB公司,开发用于商用的MySQL。之后公司被大名鼎鼎的Sun收购,在Sun时期,MySQL推出了5.1版本,这个版本我用了好久,堪称难用,尤其是和后来的5.5比起来,简直是太难用了。
2009年,MySQL随着Sun一起被Oracle收购,随后Oracle推出了5.5版本,我个人觉得这个版本真的是里程碑版本了,当年我们从5.1升级到5.5的时候,性能好的真的是让我都快流泪了,尤其是比5.1完善的多的分区表,简直是当年我做数据仓库的福音。
后来,我们迎来了5.6和5.7版本, 这些版本大幅提高了并发能力和复制的性能,尤其是5.7的并行复制功能,理论上解决了一直存在的复制延迟问题。我确实感觉到,Oracle公司在数据库领域的领先确实不是其他公司可以比拟的。
当然,开源软件,尤其是好的开源软件总是有分支的。MySQL最大的分支就是Percona Server和MariaDB了。Percona Server专注于性能的提升,其推出的XtraDB引擎就是innoDB的加强版;MariaDB则会引进更多的新特性,尤其是MariaDB率先推出的并行复制功能,着实让官方MySQL用户眼红。
四 Linux还是Windows?
我现在就是用Windows来写这篇博文的,但是我还是觉得Linux在服务器领域远远好于Windows。
其实我最近和很多网友交流过,发现很多人学习MySQL的时候还是首先会选择Windows,在我推荐使用Linux时很多人都会抱怨Linux的GUI太差了,安装软件也非常复杂,实在是不想用。实际上从入门学习的角度上说,用Windows也是可以的,不过很多DBA每天不止是写写SQL,还要搞很多操作系统和网络上的事情,所以还是直接用Linux比较好。我最开始学习Linux的时候也天天骂为什么不能把操作系统做的好用一点,不过后来熟悉了觉得挺好用的,有时候写个Shell还是挺高效的。
学习Linux可以从Ubuntu入手,这个版本的GUI做的很不错,现在很多公司的系统采用了RHEL或者CentOS,学习的时候也可以看看,和Ubuntu大同小异。推荐一本书:《鸟哥的Linux私房菜》,只看第一卷就可以了,基本上学会了就可以把Linux作为日常工作系统了。
我以前看到过一些资料,说是MySQL在Linux上的性能更好,Windows的版本也是后来某个版本才开始优化了,不知道这个说法是否成立,我姑且信之。不过有个点可以作为参考,就是Percona公司的Percona Server就根本没有Windows版本。
所以最好还是从开始学习就用Linux吧,毕竟一个DBA得杂学操作系统和网络。
--------------------------------------------------------------------------------
今天写了一些基本概念和MySQL的历史,这些我们也是需要理解和知道的,对一个DBA来说这些知识只有好处没有坏处。今天躺着写的,没有鼠标不是很方便,所以写的比较简略。
MySQL入门(一)的更多相关文章
- 21分钟 MySQL 入门教程(转载!!!)
21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...
- MySQL入门02-MySQL二进制版本快速部署
在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...
- MYSQL入门全套(第三部)
MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...
- MySQL入门(三)
写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...
- MySQL入门笔记
MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: · rpm包形式 · 通用二进制 ...
- MySQL入门转载
21分钟 MySQL 入门教程 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html 目录 一.MySQL的相关概念介绍 二.Wi ...
- mysql 入门 基本命令
MYSQL入门学习之一:基本操作 1.登录数据库 www.2cto.com 命令:mysql -u username –p (mysql -h主机地址 -u用户名 -p用户密码) ...
- MySQL入门笔记(一)
一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_nam ...
- MySQL入门(上)
1 课程回顾 自定义标签&编码实战 1)自定义标签步骤: 1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法 1.2 在WEB-INF目录下建立tld文件,在 ...
- 第二章 MySQL入门篇
第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...
随机推荐
- Scalaz(48)- scalaz-stream: 深入了解-Transducer: Process1-tee-wye
在上一篇讨论里我们介绍了Source,它的类型款式是这样的:Process[F[_],O].Source是通过await函数来产生数据流.await函数款式如下: def await[F[_], A, ...
- go的markdown解析库和session库
最近学习go,就决定做一个博客来练练手,一下是用到的一些不错的库 markdown解析库 使用markdown来写博客文章,我用的是"github.com/russross/blackfri ...
- Java集合源码分析(二)ArrayList
ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线 ...
- strtr和str_replace字符替换函数
(一)strtr是字符替换函数 (1)单个字符替换: <?php echo strtr("abba", "ab", "10"),&qu ...
- PHP两个数组相加
在PHP中,当两个数组相加时,会把第二个数组的取值添加到第一个数组上,同时覆盖掉下标相同的值: <?php $a = array("a" => "apple& ...
- Linux命令详解之—less命令
Linux下还有一个与more命令非常类似的命令--less命令,相比于more命令,less命令更加灵活强大一些,今天就给大家介绍下Linux下的less命令. 更多Linux命令详情请看:Linu ...
- Java经典实例:比较浮点数
/** * Created by Frank * 比较浮点数 */ public class FloatCmp { // 公差 private final static Double EPSILON ...
- Java自定义一个字典类(Dictionary)
标准Java库只包含Dictionary的一个变种,名为:Hashtable.(散列表) Java的散列表具有与AssocArray相同的接口(因为两者都是从Dictionary继承来的).但有一个方 ...
- 【NodeJS 学习笔记01】不学就老了
前言 再不学nodeJs,我们就老了......在HTML5大浪袭来的时候,很多先辈就开始了NodeJs之旅,而那时我还在做服务器端的程序后来转成前端,和梯队的距离已经很大了,因为我会服务器端语言,还 ...
- pdo mysql错误:Cannot execute queries while other unbuffered queries are active
运行环境:PHP 5.5.30-x64,MYSQL 5.6.27 错误代码:Cannot execute queries while other unbuffered queries are act ...