一、数据库的学习阶段
1、基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图、触发器、函数、存储过程等)
2、优化阶段:如何提高数据库效率,如索引、分表等
3、部署阶段:如何搭建真实的环境系统,如服务器集群、负载均衡等
二、数据库基础
1、什么是数据库
数据库:database,存储数据的仓库
数据库:高效的存储和处理数据的介质(介质主要有两种:磁盘和内存)
注:
(1)磁盘:硬盘、磁盘、存储空间
(2)内存:RAM
2、数据库的分类
数据库基于存储介质的不同,分为两类:
(1)关系型数据库(SQL):存储在磁盘中
(2)非关系型数据库(NoSQL:Not Only SQL):存储在内存中
注:不是关系型的数据库都叫做非关系型数据库
3、不同的数据库阵营中的产品有哪些
(1)关系型数据库
a). 大型:Oracle、DB2
b). 中型:SQL Server、MySQL等
c). 小型:access等
(2)非关系型数据库
memcached、MongoDB、redis(同步到磁盘)
注:redis:一旦内存不运行,会把数据写到磁盘。下次开机时,又把数据从磁盘中读进来(解决非关系型数据库不安全的问题)
4、两种数据库阵营的区别
基于存储数据的方式
(1)关系型数据库:安全(保存在磁盘基本不可能丢失,还有备份)、容易理解(符合人类的思维模式)、比较浪费空间(二维表)
(2)非关系型数据库:效率高(运行在内存),不安全(断电丢失)
注:关系型数据库和非关系型数据库都运行在内存
三、关系型数据库
1、什么是关系型数据库
(1)关系型数据库:是一种建立在关系模型(数学模型)上的数据库
(2)关系模型:一种所谓建立在关系上的模型。关系模型包含三个方面:
a). 数据结构:数据存储的问题(数据以什么方式来存储)。以二维表的形式存储(有行和列),比较浪费空间
b). 操作指令集合:所有sql语句(不仅仅只有增删改查语句)
c). 完整性约束:表内数据的约束(字段与字段),表与表之间的约束(外键)
2、关系型数据库的设计
(1)关系型数据库:从需要存储的数据需求中分析,如果是一类数据(实体),应该设计成一张二维表。该表由表头(字段名:用来规定数据的名字)和数据部分组成(实际存储的数据单元)
(2)关系型数据库:维护实体内部、实体与实体之间的联系(实体与实体之间有关系就自然会有约束)
(3)关系型数据库的特点之一:如果表中对应的某个字段没有值(数据),但是系统依然要分配空间(分配的空间和真实的数据长度的空间是一样的) -- 关系型数据库比较浪费空间
四、关键字说明
1、数据库(DB):Database
2、数据库系统(DBS):Database System,是一种虚拟系统,将多种内容关联起来的称呼(DBS = DBMS + DB)
3、数据库管理系统(DBMS):Database Management System,专门管理数据库
4、数据库管理员(DBA):Database Administrator
5、行/记录:row/record,本质是一个东西,都是指表中的一行数据/一条记录。行是从结构角度出发,记录是从数据角度出发
注:行/记录是关系型数据库特有的,因为是二维表
6、列/字段:column/field,本质是一个东西
五、SQL
1、SQL:Structured Query Language,结构化查询语言(数据以查询为主,99%是在进行查询操作)
注:SQL是专门为关系型数据库而设计的
2、SQL分为三个部分
(1)DDL:Data Definition Language,数据定义语言,用来维护存储数据的结构,专门用于结构管理(数据库、表)。代表指令:create、drop、alter等
(2)DML:Data Manipulation Language,数据操作语言,用来对数据进行操作,专门用于写数据(数据表中的内容)。代表指令:insert、delete、update等。其中,DML内部又单独进行了一个分类:DQL(Data Query Language:数据查询语言,专门用于查询数据。如:select、show(where、group by、having、order by))
(3)DCL:Data Control Language:数据控制语言,主要是负责权限管理,专门用于权限管理(用户)。代表指令:grant(权限分配)、revoke(权限回收)等
补充:
(4)TPL:事务处理语言,专门用于事务安全处理。它的语句能保证被DML语句影响的表的所有行及时得以更新。代表指令:begin、transaction、commit、rollback
注:不是所有的关系型数据库都提供事务安全处理,但MySQL支持
3、SQL是关系型数据库的操作指令,SQL是一种约束,但不强制(类似W3C)。不同的数据库产品(如:Oracle、MySQL)可能内部会有一些细微的区别
六、MySQL数据库
1、MySQL数据库是一种C/S结构的软件:客户端/服务端。服务端对应的软件:mysqld.exe,客户端对应的软件:mysql.exe,都在mysql的安装目录所在的bin目录下。若想访问服务器必须通过客户端(服务器一直在运行,客户端在需要使用的时候运行)
2、启动和停止MySQL服务(两种方式)
(1)命令行方式:在Windows下打开cmd控制器,然后使用命令进行管理(需要以管理员身份运行)
a). 开启服务:net start mysql
-- 开启MySQL服务
net start mysql
b). 关闭服务:net stop mysql
-- 关闭MySQL服务
net stop mysql
c). 重启服务:net restart mysql
-- 重启MySQL服务
net restart mysql;
(2)系统服务方式:
a). 方式一:"服务和应用程序" --> "服务",在图形化界面开启或关闭
b). 方式二:通过命令行:services.msc进入服务,之后在图形化界面开启或关闭
注:双击服务,可以看到该服务的安装路径
3、登录和退出MySQL系统
(1)登录(cmd下):mysql.exe/mysql -h主机地址 -P端口 -u用户名 -p密码
-- 链接认证基本语法:
mysql -hlocalhost -P3306 -uroot -proot
注:
a). 输入对应的服务器地址:-h:host -h[IP地址/域名] -- 服务器地址如果是本地localhost,可以省略
b). 输入服务器中MySQL监听的端口:-P:port -P3306(P是大写的) -- MySQL监听的端口通常都是3306,所以端口可以省略
c). 输入用户名:-u:username -uroot
d). 输入密码:-p:password -proot(p是小写的) -- 密码的输入,可以先输入-p,直接换行,然后再以密文的方式输入密码
mysql -uroot -p
-- 回车换行,然后以密文的方式输入密码
(2)退出:建议使用SQL提供的指令,而不是直接关闭窗口
a). exit;
b). quit;
c). \q;
4、交互方式
(1)客户端连接认证:连接服务器,认证身份(默认用户名,输入密码)
注:连接是找到主机和软件,认证是认证身份
(2)客户端发送sql指令
(3)服务器接收sql指令,处理sql指令,返回操作结果
(4)客户端接收结果,显示结果
(5)断开连接,释放资源(服务器并发限制):exit | quit | \q
5、MySQL的服务器和客户端
(1)MySQL服务器:安装MySQL(mysql-5.5.28-winx64.msi),电脑上产生一个文件目录"C:\ProgramData\MySQL\MySQL Server 5.5",就是MySQL服务器。可以通过 "管理工具-->服务" 开启或关闭MySQL服务器
(2)MySQL客户端:Navicat for MySQL 和 Navicat_Premium等数据库编辑器,实质上就是MySQL客户端。可以通过这些软件对数据库进行访问和数据操作,但是这些软件本身是不能存储数据的
注:
(1)通常,服务端与客户端不在同一台电脑上
(2)运营网络项目,最好找一个服务器,买个域名配一下DNS,用服务器来跑MySQL服务器版本。不要将PC用作上线项目的MySQL服务器,否则,电脑会出各种问题
七、MySQL服务端架构
1、MySQL服务端架构由以下几层构成
(1)数据库管理系统(DBMS):最外层,专门管理服务器端的所有内容(管第二层,真实的数据库)
(2)数据库(DB):第二层,专门用于存储数据的仓库(可以有很多个)
(3)二维数据表(Table):第三层,专门用于存储具体实体的数据
(4)字段(field):第四层,具体存储某种类型的数据(实际存储单元)
注:表是由多个字段构成,数据存到表中,其实就是存到表的每一个字段中