1.数据库概述
1.1 什么是数据库
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以通过SQL对数据库中的数据进行增加,修改,删除及查询操作。
1.2 什么是关系型数据库
数据库中的记录是有行有列的数据库就是关系型数据库,与之相反的就是NoSQL数据库了。
1.3 数据库和表
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用 于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据 库管理系统访问数据库中表内的数据。
1.4 常见的数据库管理系统
- MYSQL :开源免费的数据库,小型的数据库 已经被Oracle收购了。
MySQL5.5版本之后都是由 Oracle发布的版本。
-Oracle :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
- DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中。在中国的互联网公司,要求去 IOE(IBM小型机、Oracle数据库、EMC存储设备)
- SQLServer
:
MicroSoft
公司收费的中型的数据库。
C#
、
.net
等语言常使用。
- SyBase
:已经淡出历史舞台。提供了一个非常专业数据建模的工具
PowerDesigner
。
- SQLite :
嵌入式的小型数据库,应用在手机端。
1.5 MySQL是什么
MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL是最好的RDBMS应用软件之一。
1.6 MySQL发展历程
- MySQL
的历史可以追溯到
1979
年,一个名为
Monty Widenius
的程序员在为
TcX
的小公司打工,并且用 BASIC设计了一个报表工具,使其可以在
4MHz
主频和
16KB
内存的计算机上运行。当时,这只是一个很底层的 且仅面向报表的存储引擎,名叫Unireg
。
- 1990
年,
TcX
公司的客户中开始有人要求为他的
API
提供
SQL
支持。
Monty
直接借助于
mSQL
的代码,将 它集成到自己的存储引擎中。令人失望的是,效果并不太令人满意,决心自己重写一个SQL
支持。
- 1996
年,
MySQL 1.0
发布,它只面向一小拨人,相当于内部发布。到了1996
年
10
月,
MySQL 3.11.1
发布
(MySQL
没有
2.x
版本
)
,最开始只提供
Solaris
下的二进制版本。一个月后,Linux
版本出现了。在接下来的两年里,
MySQL
被依次移植到各个平台。
-
【
1999
~
2000
年】,【
MySQL AB
】公司在瑞典成立。
Monty
雇了几个人与
Sleepycat
合作,开发出 了【Berkeley DB
引擎】
,
由于
BDB
支持事务处理,因此
MySQL
从此开始支持事务处理了。
- 2000
,
MySQL
不仅公布自己的源代码,并采用
GPL(GNU General Public License)
许可协议,正 式进入开源世界。同年4
月,
MySQL
对旧的存储引擎
ISAM
进行了整理,将其命名为
MyISAM
。
- 2001
年,集成
Heikki Tuuri
的存储引擎【
InnoDB
】,这个引擎不仅能【支持事务处理,并且支持行级锁】。后来该引擎被证明是最为成功MySQL
事务存储引擎。
MySQL
与
InnoDB
的正式结合版本是
4.0
- 2003
年
12
月,【
MySQL 5.0
】版本发布,提供了视图、存储过程等功能。
-
2008
年
1
月,
MySQL AB
公司被
Sun
公司以
10
亿美金收购,
MySQL
数据库进入
Sun
时代。在
Sun时代,Sun
公司对其进行了大量的推广、优化、
Bug
修复等工作。
- 2008
年
11
月,
MySQL 5.1
发布,它提供了分区、事件管理,以及基于行的复制和基于磁盘的
NDB
集群系 统,同时修复了大量的Bug
。
-
2009
年
4
月,
Oracle
公司以
74
亿美元收购
Sun
公司,自此
MySQL
数据库进入
Oracle
时代,而其第三方的存储引擎InnoDB
早在
2005
年就被
Oracle
公司收购。
- 2010
年
12
月,
MySQL 5.5
发布,其主要新特性包括半同步的复制及对
SIGNAL/RESIGNAL
的异常处理功能的支持,最重要的是InnoDB
存储引擎终于变为当前
MySQL
的默认存储引擎。
MySQL 5.5
不是时 隔两年后的一次简单的版本更新,而是加强MySQL
各个方面在企业级的特性。
Oracle
公司同时也承诺 MySQL 5.5和未来版本仍是采用
GPL
授权的开源产品。
1.7 什么是SQL
【SQL是Structured Query Language的缩写】,它的前身是著名的关系数据库原型系统System R所采 用的SEQUEL语言。作为一种访问关系型数据库的标准语言,SQL自问世以来得到了广泛的应用,不仅是著 名的大型商用数据库产品Oracle、DB2、Sybase、SQL Server支持它,很多开源的数据库产品如 PostgreSQL、MySQL也支持它,甚至一些小型的产品如Access也支持SQL。近些年蓬勃发展的NoSQL系最初是宣称不再需要SQL的,后来也不得不修正为Not Only SQL,来拥抱SQL。 蓝色巨人IBM对关系数据库以及SQL语言的形成和规范化产生了重大的影响,第一个版本的SQL标准SQL86 就是基于System R的手册而来的。Oracle在1979年率先推出了支持SQL的商用产品。随着数据库技术和应 用的发展,为不同RDBMS提供一致的语言成了一种现实需要。 对SQL标准影响最大的机构自然是那些著名的数据库产商,而具体的制订者则是一些非营利机构,例如 【国际标准化组织ISO、美国国家标准委员会ANSI】等。各国通常会按照 ISO标准和ANSI标准(这两个机构 的很多标准是差不多等同的)制定自己的国家标准。中国是ISO标准委员会的成员国,也经常翻译一些国际标准对应的中文版。标准为了避免采用具体产品的术语,往往会抽象出很多名词,从而增加了阅读和理解的难度,翻译成中文之后更容易词不达意。对于数据库系统实现者和用户而言,很多时候还不如直接读英文版本为好。虽然正式的标准不像RFC那样可以从网络上免费获得,标准草案还是比较容易找到的。待批准的标准草案和最终的标准也没有什么实质上的区别,能够满足日常工作的需要。
下面是SQL发展的简要历史:
1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86
1989
年,
ANSI X3.135-1989
,
ISO/IEC 9075:1989
,
SQL-89
1992
年,
ANSI X3.135-1992
,
ISO/IEC 9075:1992
,
SQL-92
(
SQL2
)
1999
年,
ISO/IEC 9075:1999
,
SQL:1999
(
SQL3)
2003
年,
ISO/IEC 9075:2003
,
SQL:2003
2008
年,
ISO/IEC 9075:2008
,
SQL:2008
2011
年,
ISO/IEC 9075:2011
,
SQL:2011
如果要了解标准的内容,比较推荐的方法是【泛读
SQL92
】(因为它涉及了
SQL
最基础和最核心的一些内容),然后增量式的阅读其他标准。
不只是
mysql
还有其他数据库,在
SQL92
或者
SQL99
这些国际
SQL
标准基础之上,它们还扩展了自己的一些SQL语句,比如
MySQL
中的
limit
关键字
1.8 SQL语言分类
-
数据定义语言:简称【
DDL
】
(Data Definition Language)
,用来定义数据库对象:数据库,表,列 等。关键字:create
,
alter
,
drop
等
-
数据操作语言:简称【
DML
】
(Data Manipulation Language)
,用来对数据库中表的记录进行更 新。关键字:insert
,
delete
,
update
等
-
数据控制语言:简称【
DCL
】
(Data Control Language)
,用来定义数据库的访问权限和安全级别, 及创建用户;关键字:grant
等
-
数据查询语言:简称【
DQL
】
(Data Query Language)
,用来查询数据库中表的记录。关键字: select,
from
,
where
等
2 MySQL基础篇
2.1 MySQL单机安装
操作系统:CentOS 7 MySQL:5.6
2.2 查看MySQL软件
rpm -qa|grep mysql
yum repolist all | grep mysql
2.3 卸载MySQL
yum remove -y mysql mysql-libs mysql-common #
卸载
mysql
rm -rf /var/lib/mysql #
删除
mysql
下的数据文件
rm /etc/my
.cnf
#
删除
mysql
配置文件
yum remove -y mysql-community-release-el6-
5
.noarch
#
删除组件
2.4 安装MySQL
#下载rpm文件 wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
#执行rpm源文件 rpm -ivh mysql-community-release-el6-5.noarch.rpm
#
执行安装文件 yum install mysql-community-server
2.5 启动MySQL
systemctl
start
mysqld
2.5.1 设置root用户密码
例如:为
root
账号设置密码为
root
:
/usr/bin/mysqladmin -u root password 'root'
#
没有密码 有原来的密码则加
/usr/bin/mysqladmin -u root -p '123' password 'root'
2.5.2 登录MySQL
mysql
-uroot -proot
命令说明:
-u
:指定数据库用户名
-p
:指定数据库密码,记住
-u
和登录密码之间没有空格
2.5.3 配置MySQL
vim
/etc/my.cnf
修改内容如下:
[mysqld]
# MySQL设置大小写不敏感:默认:区分表名的大小写,不区分列名的大小写
# 0:大小写敏感 1:大小写不敏感
lower_case_table_names=1
# 默认字符集
character-set-server=utf8
2.6 MySQL远程连接授权
授权命令
grant
权限
on
数据库对象
to
用户
示例
授予root用户对所有数据库对象的全部操作权限:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;--刷新权限
命令说明:
ALL PRIVILEGES :表示授予所有的权限,此处可以指定具体的授权权限。
*.*
:
表示所有库中的所有表
'root'@'%'
:
myuser
是数据库的用户名,
%
表示是任意
ip
地址,可以指定具体
ip
地址。
IDENTIFIED BY 'mypassword'
:
mypassword
是数据库的密码。