目录
一.数据库基本内容
1.数据
(1)描述事物的符号记录
(2)包括数字,文字、图形、图像、声音、档案记录等
(3)以“记录”形式按统一的格式进行存储
2.表
(1)将不同的记录组织在一起
(2)用来存储具体数据
3.数据库
(1)表的集合,是存储数据的仓库
(2)以一定的组织方式存储的相互有关的数据集合
二.数据库关系系统基本内容
1.数据库管理系统(DBMS)
(1)数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
(2)数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出。
(3)数据操纵功能:包括数据查询统计和数据更新两个方面。
(4)数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。
(5)通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行 数据交换。
2.数据库管理系统DBMS和文件管理系统
(1)文件管理系统缺点
(2)数据库管理系统DBMS的优点
3.数据库管理系统的工作原理
(1)接受应用程序的数据请求和处理请求
(2)将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
(3)实现对数据库的操作
(4)从数据库的操作中接受查询结果
(5)对查询结果进行处理(格式转换)
(6)将处理结果返回给用户
5.数据库管理系统的基本功能
(1)数据定义
(2)数据处理
(3)数据安全
(4)数据备份
6.数据库系统的架构
(1)单机架构
(2)大型主机/终端架构
(3)主从式架构(C/S)
(4)分布式架构
三.关系型数据库基本内容
1.相关概念
2.常用的关系数据库
3.三要素
(1)实体:也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”
如银行客户、银行账户等
(2)属性:实体所具有的某一特性,一个实体可以有多个属性
如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性
(3)联系:实体集之间的对应关系称为联系,也称为关系
如银行客户和银行账户之间存在“储蓄”的关系
4.关系型数据库与非关系型数据库
(1)关系型数据库
(2)非关系型数据库
(3)关系型数据库和非关系型数据库对比
四.MySQL数据库介绍
1.定义
2.三大分支
(1)mysql
(2)mariadb
(3)percona Server
3.MySQL的组成
五.编译安装MySQL数据库
一.数据库基本内容
1.数据
(1)描述事物的符号记录
(2)包括数字,文字、图形、图像、声音、档案记录等
(3)以“记录”形式按统一的格式进行存储
2.表
(1)将不同的记录组织在一起
(2)用来存储具体数据
3.数据库
(1)表的集合,是存储数据的仓库
(2)以一定的组织方式存储的相互有关的数据集合
二.数据库关系系统基本内容
1.数据库管理系统(DBMS)
数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织、 管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS 主 要包括以下功能。
(1)数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
(2)数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出。
(3)数据操纵功能:包括数据查询统计和数据更新两个方面。
(4)数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。
(5)通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行 数据交换。
2.数据库管理系统DBMS和文件管理系统
(1)文件管理系统缺点
- 编写应用程序不方便
- 数据冗余不可避免
- 应用程序依赖性
- 不支持对文件的并发访问
- 数据间联系弱
- 难以按用户视图表示数据
- 无安全控制功能
(2)数据库管理系统DBMS的优点
- 相互关联的数据的集合
- 较少的数据冗余
- 程序与数据相互独立
- 保证数据的安全、可靠
- 最大限度地保证数据的正确性
- 数据可以并发使用并能同时保证一致性
3.数据库管理系统的工作原理
(1)接受应用程序的数据请求和处理请求
(2)将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
(3)实现对数据库的操作
(4)从数据库的操作中接受查询结果
(5)对查询结果进行处理(格式转换)
(6)将处理结果返回给用户
5.数据库管理系统的基本功能
(1)数据定义
(2)数据处理
(3)数据安全
(4)数据备份
6.数据库系统的架构
(1)单机架构
(2)大型主机/终端架构
(3)主从式架构(C/S)
(4)分布式架构
三.关系型数据库基本内容
1.相关概念
关系Relational :关系就是二维表,其中:表中的行、列次序并不重要
行row:表中的每一行,又称为一条记录record
列column:表中的每一列,称为属性,字段,域field
主键Primary key:PK , 用于惟一确定一个记录的字段,一张表只有一个主键
域domain:属性的取值范围,如,性别只能是'男'和'女'两个值,人类的年龄只能0-150
2.常用的关系数据库
MySQL(甲骨文公司收购)
- 免费、开源、体积小
SQL Server(微软公司产品)
- 面向Windows操作系统
- 简单、易用
Oracle(甲骨文公司产品)
- 面向所有主流平台
- 安全、完善,操作复杂
DB2(IBM公司产品)
- 面向所有主流平台
- 大型、安全、完善
PostgreSQL(加州大学计算机系开发的POSTGRES)
- 简称为pgsql,EnterpriseDB
3.三要素
(1)实体:也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”
如银行客户、银行账户等
(2)属性:实体所具有的某一特性,一个实体可以有多个属性
如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性
(3)联系:实体集之间的对应关系称为联系,也称为关系
如银行客户和银行账户之间存在“储蓄”的关系
4.关系型数据库与非关系型数据库
(1)关系型数据库
- 关系数据库系统是基于关系模型的数据库系统
- 关系模型的数据结构使用简单易懂的二维数据表
- 关系模型可用简单的“实体-关系”(E-R)图来表示
- E-R图中包含了实体(数据对象)、关系和属性三个要素
关系型数据库的存储结构是二维表格
在每个二维表中
每一行称为一条记录,用来描述一个对象的信息
每一列称为一个字段,用来描述对象的一个属性
(2)非关系型数据库
存储数据不以关系模型为依据,不需要固定的表格式
非关系型数据库的优点
- 数据库可高并发读写
- 对海量数据高效率存储与访问
- 数据库具有高扩展性与高可用性
常用的非关系数据库:Redis、mongoDB等
(3)关系型数据库和非关系型数据库对比
关系数据库: 关系数据库结构是二维数据库表,二维表当中每个字段(列)用来描述对象的一个属性, 每个记录(行)用来描述一个对象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中 读写系统就会受到的IO限制或者瓶颈
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库:严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、 图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性与高可用性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高; 2、无事务处理; 3、数据结构相对复杂,复杂查询方面稍欠。
四.MySQL数据库介绍
1.定义
一款深受欢迎的开源关系型数据库,Oracle旗下的产品,遵守GPL协议,可以免费使用与修改。
官网:MySQL
特点:
- 性能卓越、服务稳定
- 开源、无版权限制、成本低
- 多线程、多用户
- 基于C/S(客户端/服务器)架构
- 安全可靠
2.三大分支
(1)mysql
(2)mariadb
(3)percona Server
3.MySQL的组成
客户端程序
-
mysql: 交互式的CLI工具
-
mysqladmin:基于mysql协议管理mysqld
-
mysqlimport:数据导入工具
MyISAM存储引擎的管理工具:
-
myisamchk:检查MyISAM库
-
myisampack:打包MyISAM表,只读
服务器端程序
-
mysqld_safe
-
mysqld
-
mysqld_multi 多实例 ,示例:mysqld_multi
五.编译安装MySQL数据库
Mysql编译安装yum -y install \
gcc \
gcc-c++ \
ncurses \ #字符终端下图形互动功能的动态库
ncurses-devel \ #ncurses开发包
bison \ #语法分析器
cmake #mysql需要用cmake编译安装yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake#创建程序用户管理
useradd -s /sbin/nologin mysqltar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boostcd /opt/mysql-5.7.17/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \ #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8 \ #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \ #指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \ #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \ #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1 #生成便于systemctl管理的文件存储引擎选项:
MYISAM,MERGE,MEMORY和cSv引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH engine STORAGE ENGINE= 1
可用的存储引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBD,IMNOBASB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema)
--------------------------------------------------------------------------------------------------------------------------------------------
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1make && make install注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧make -j 4 && make install#创建普通用户管理mysql
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
#更改管理主/组
chown mysql:mysql /etc/my.cnf#修改配置文件
vim /etc/my.cnf #删除原配置项,再重新添加下面内容
[client] #客户端设置
port = 3306
socket=/usr/local/mysql/mysql.sock [mysqld] #服务全局设置
user = mysql #设置管理用户
basedir=/usr/local/mysql #指定数据库的安装目录
datadir=/usr/local/mysql/data #指定数据库文件的存储路径
port = 3306 #指定端口
character-set-server=utf8 #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid #指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock #指定数据库连接文件
bind-address = 0.0.0.0 #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve #禁用DNS解析
max_connections=2048 #设置mysql的最大连接数
default-storage-engine=INNODB #指定默认存储引擎
max_allowed_packet=16M #设置数据库接收的数据包大小的最大值
server-id = 1 #指定服务ID号[client]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock [mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
---------------------------------------------------------------------------------------------------------------------------------------------------------sql_mode常用值如下:
NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制NO_AUTO_CREATE_USER
禁正GRANT创建密码为空的用户NO_AUTO_VALUE_ON_ZERO
mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错NO_ZERO_IN_DATE
不允许日期和月份为零NO_ZERO_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULLPIPES_As_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似ANSI_QUOTES
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
--------------------------------------------------------------------------------------------------------------------------------------#设置环境变量,申明/宣告mysql命令便于系统识别
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile#初始化数据库
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \ #生成初始化密码为空
--user=mysql \ #指定管理用户
--basedir=/usr/local/mysql \ #指定数据库的安装目录
--datadir=/usr/local/mysql/data #指定数据库文件的存储路径cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/datacp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload #刷新识别
systemctl start mysqld.service #开启服务
systemctl enable mysqld #开机自启动
netstat -anpt | grep 3306 #查看端口#给root账号设置密码
mysqladmin -u root -p password "123456"
————》直接回车
登录 mysql -u root -p123456