一、数据库的基本概念
数据(Data)
i.描述事物的符号记录、包括数字、文字、图形、图像、声音、档案记录等以“记录”形式按统一格式进行存储。
b.表
i.讲不通的记录组织在一起,同来存储具体数据。
c.数据库
i.表的集合,是存储数据的仓库;以一定的组织方式存储的相互有关的数据集合。
d.数据库管理系统(DBMS)
i. 是实现对数据库资源有效组织、管理和存取的系统软件。
ii.数据库的建立和维护功能、数据定义功能、数据操纵功能、数据库的运行管理功能、通信功能。
e.数据库系统
i.是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成。
ii.用户可以通过DBMS或应用程序操作数据库。
二、当今主流数据库介绍
名称 特点
SQL Server(微软公司产品) 面向Windows操作系统简单、易用
Oracle(甲骨文公司产品) 面向所有主流平台安全、完善、操作复杂
DB2(IBM公司产品) 面向所有主流平台大型、安全、完善
MySQL(甲骨文公司收购) 免费、开源、体积小
a.数据库发展史
i.第一代数据库第一代数据库系统问世。
1.自20世纪60年代起,第一代数据库系统问世。
2.是层次模型与网状模型的数据库系统。
ii.第二代数据库
1.20世纪70年代初,第二代数据库——关系数据库开始出现。
2.20世纪80年代初,IBM公司的关系数据库系统DM2问世,开始逐步取代层次与网状模型的数据库,成为行业主流。
3.到目前为止,关系数据库仍占领数据库应用的主要地位。
iii. 第三代数据库
1. 自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现。
2. 面向对象的数据库系统,实用性强、适应面广。
3. 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面。
4. 一些新的元素被添加进主流数据库系统中。
a. 例如,Oracle支持的“关系-对象”数据库模型。
三、数据库类型
a. 关系数据库系统
i. 关系数据库系统是基于关系模型的数据库系统。
ii. 关系模型的数据结构使用简单易懂的二维数据表。
iii. 关系模型可用简单的“实体关系(E-R)图”来表示。
iv. E-R图中包含了实体(数据对象)、关系和属性三个要素。
v. 实体
1. 也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。
2. 如职工、部门等。
vi. 属性
1. 属性为事物的某一方面特征的抽象描述。如学生这个事物,可以通过职工的“姓名”、
“职工号”、“工种”等特征来描述,这些特征称为属性。
联系 | |
|---|---|
1. 实体集之间的对应关系称为联系,也称为关系。 | |
a. 如职工和部门之间存在“经理”的关系。 | |
viii. 所有实体及实体之间联系的集合构成一个关系数据库。 | |
ix. 关系数据库的存储结构是二维表格。 | |
x. 在每行二维表中 | |
1. 每一行称为一条记录,用来描述一个对象的信息。 | |
2. 每一列称为一个字段,用来描述对象的一个属性。 | |
xi. 关系型数据库 | |
1. Oracle、MySQL | |
2. SQL server、Sybase | |
3. lnformix、access | |
4. DM2、FoxPro | |
b. 非关系数据库系统 | |
i. 非关系数据库也称为NoSQL(Not Only SQL) | |
ii. 存储数据不以关系模型为依据,不需要固定的表格式。 | |
iii. 非关系型数据库的优点 | |
1. 数据库支持高可用并发读写。 | |
2. 对海量数据高效率存储与访问。 | |
3. 数据库具有高扩展性与高可用性 | |
iv. 常用的非关系型数据库 | |
1. Redis、mongoDB等。 | |
| 四、MySQL数据库介绍 |
| a. 一款深受欢迎的开源关系型数据库。 | |
|---|---|
b. Oracle旗下的产品。 | |
c. 遵守GPL协议,可以免费使用与修改。 | |
d. | |
e. 特点 | |
i. 性能卓越、服务稳定。 | |
ii. 开源、无版权限制、成本低。 | |
iii. 多线程、多用户。 | |
iv. 基于C/S(客户端/服务器)架构。 | |
v. 安全可靠。 | |
f. MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用。 | |
g. MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使 |
h.
两者区别
i. 商业版组织管理与测试环节更加严格,会比社区版更稳定。
ii. 商业版不遵守GPL,社区版遵从GPL可以免费使用。
iii. 商业版可获得7*24小时的服务,社区版则没有。
i. MySQL产品阵营
i. 第一阵营:5.0-5.1阵营,可说是早期产品的延续。
ii. 第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,
从而提高性能。
iii. 第三阵营:6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求
而开发。
五、MySQL数据库安装
a. 准备工作
`1 rpm -qa | grep mariadb //如果存在rpm版MariaDB,请先卸载 1
2 getenforce 0 //查看安全机制是什么状态 2
3 yum -y install gcc gcc-c++ make ncurses-devel openssl-devel //MySQL必须的开发工具包 3
4 tar zxf cmake-3.16.2.tar.gz -C /usr/local/ 4
5 cd /usr/local/cmake-3.16.2/ 5
6 ./configure && gmake && gmake install //编译安装MySQL需要的cmake工具 6
7 tar zxf boots_1_59_0.tar.gz
8 mv boost_1_59_0 /usr/local/boost //MySQL5.7编译安装需要boots库 8 ` b. 源码编译及安装
`||1||
#MySQL5.7编译安装时间较长,且占用CPU和磁盘资源较多,虚拟机磁盘推荐大于10GB,并且在MySQL-
5.7.28版本及以上版本安装MySQL都要指定boost库
| | :- | :- | :- | :- |groupadd mysql
3 useradd -M -s /sbin/nologin -g mysql mysql 3
4 tar zxf mysql-5.7.28.tar.gz -C /usr/src/ 4
5 cd /usr/src/mysql-5.7.28/ 5
6 make clean 6
| 7 | cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc - DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all DWITH_BOOST=/usr/local/boost && make && make install | ||
|---|---|---|---|
| - |
8 ##注释: 8
9 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql //mysql的安装路径 9
10 -DSYSCONFDIR=/etc //指定主配置文件路径 10
11 -DDEFAULT_CHARSET //指定默认使用的字符集编码 11
| 12 | -DDEFAULT_COLLATION=utf8_general_ci 适用于 UTF-8 字符集的通用规则。 | //指定默认使用的字符集校对规则,utf8_general_ci 是 | ||
|---|---|---|---|---|
| 13 -DWITH_EXTRA_CHARSETS=all //并且支持其他字符集 13 |
14 -DWITH_BOOST=/usr/local/boost //指定boost“库”路径 14`
c. 安装后的其他调整
`1 rm -rf /etc/my.cnf
2 vim /etc/my.cnf //调整MySQL配置文件 2
3 [client] 3
4 socket=/usr/local/mysql/data/mysql.sock 4
5 [mysqld] 5
6 server-id = 1 6
7 log-bin = mysql-bin 7
8 socket=/usr/local/mysql/data/mysql.sock 8
9 bind-address = 0.0.0.0
10 skip-name-resolve 10
11 port = 3306 11
12 basedir=/usr/local/mysql 12
13 datadir=/usr/local/mysql/data 13
14 max_connections=2048 14
15 character-set-server=utf8 15
16 default-storage-engine=INNODB 16
17 lower_case_table_names=1 17
max_allowed_packet=16M 18
19 echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile 19
source /etc/profile //19、20两行是设置系统能识别MySQL命令字,否则无法后续对MySQL进行命令字 20
操作
21 ##注释 21
22 [client] ##针对客户端 22
| 23 | socket=/usr/local/mysql/data/mysql.sock ##客户机和服务器在同一台机器上,客户端使用socket协 议连接数据库:socket会生成一个路径:详细信息www.jianshu.com/p/066d99da7… | |
|---|---|---|
| 24 [mysqld] ##服务器 24 |
25 server-id = 1 ##服务器id 25
26 log-bin = mysql-bin ##启用二进制日志文件,生成二进制文件名字mysql-bin 26
27 log-slave-updates = true ##允许从库从主库上同步二进制日志 27
28 socket=/usr/local/mysql/data/mysql.sock ##socket协议,服务端也要有 28
29 bind-address = 0.0.0.0 ##mysql服务器绑定的地址
skip-name-resolve ##跳过域名解析(用IP地址访问) 30
port = 3306 ##mysql的端口 31
basedir=/usr/local/mysql ##该参数指定了安装 MySQL 的安装路径,填写全路径可以解决 32
相对路径所造成的问题
| 33 | datadir=/usr/local/mysql/data ##该参数指定了 MySQL 的数据库文件放在什么路径下。数据库 文件即我们常说的 MySQL data 文件 | |
|---|---|---|
| 34 |
max_connections=2048 ##最大并发连接数
35 character-set-server=utf8 ##数据库使用的字符集为utf8 35
36 default-storage-engine=INNODB ##指定数据库的存储引擎 36
37 lower_case_table_names=1 ##跳过表名的解析(不区分表名大小写) 37
38 ##传输数据包限制为 16M可以分多包) 38 max_allowed_packet=16M 16M(大于`
`1 cd /usr/src/mysql-5.7.28/ 1 2
3
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql -- datadir=/usr/local/mysql/data 初始化以后一般最后两行,有一行会在主机名后面生成密码,记得保 存,记得保存!!!!。如果没有了可以删除data重新初始化,就会再出现一次密码!!!!
| 4 | ##如果初始化失败进入安装路径下删除/usr/local/mysql/中删除“data”目录在切换回解压路径重新初始 化 | ||
|---|---|---|---|
| 5 |
6 cd /usr/src/mysql-5.7.28/ 6
7 cp support-files/mysql.server /etc/rc.d/init.d/mysqld 7
8 chmod +x /etc/rc.d/init.d/mysqld
9 vim /lib/systemd/system/mysqld.service
10
11 [Unit] 11
12 Description=mysqld 12
13 After=network.target 13
14 [Service] 14
15 Type=forking
16 ExecStart=/etc/rc.d/init.d/mysqld start
17 ExecReload=/etc/rc.d/init.d/mysqld restart 17
18 ExecStop=/etc/rc.d/init.d/mysqld stop 18
19 PrivateTmp=true 19
20 [Install] 20
21 WantedBy=multi-user.target 21
22
23
24 systemctl enable mysqld.service 24
systemctl start mysqld.service
26
systemctl status mysqld.service //开启开机自启,开机、查看MySQL状态命令
1 mysql -u root -p //进入MySQL
2 quit; //第一次默认登陆不让操作,一般都是要退出修改密码。 2
3 mysqladmin -u root -p password 'pwd123' //密码pwd123 3
4 show databases; 4
5 quit //退出 5`
$