数据库简介
使用数据库的必要性
使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。
数据库具有以下特点。
- 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
- 可以有效地保持数据信息的一致性、完整性,降低数据冗余。
- 可以满足应用的共享和安全方面的要求。
数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解。
数据库的基本概念
1.数据
描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。
在数据库中,数据是以"记录"的形式按照统一的格式进行存储的,而不是杂乱无章的。
相同格式和类型的数据统一存放在一起,而不会把"人"和"书"混在一起存储。这样,数据的存储就能够井然有序。
如图1.1中存储的一行数据,在数据库中称为一条"记录"(Record)。每条记录中的每一个输入项称为"列"。图1.1中编号、姓名、性别、年龄、民族、专业都是列名。
2.数据库和数据库表
不同的记录组织在一起,就形成了数据库(Database,DB)的"表"(Table)。也可以说,表是用来存储具体数据的,如图1.1所示。那么数据库和表存在什么关系呢?简单地说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。
通常,数据库并不是简单地存储这些数据的,还要表示它们之间的关系。例如,书和人是存在联系的,书的作者可能就是某个人,因此需要建立书与人的"关系"。这种关系也需要用数据库来表示,因此关系的描述也是数据库的一部分。
3.数据库管理系统和数据库系统
数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS主要包括以下功能。
- 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。
- 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
- 数据操纵功能:包括数据查询统计和数据更新两个方面。
- 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。
- 通信功能:DBMS与其他软件系统之间的通信,如Access能与其他Office组件进行数据交换。
数据库系统(Database System,DBS)是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。
应用程序是利用DBMS为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应用软件。
常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨询系统等。
数据库管理员(Database Administrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA一般由业务水平较高、资历较深的人员担任。
需要注意的是数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨论中通常不严格区别。遇到此情况时,可以根据具体情况,判断出实际所指的是什么。
mysql的编译安装
1:准备工作
(1)如果系统中安装有mariadb,先卸载,如果没有,此步骤省略
[root@www ~]# rpm -q mariadb
mariadb-5.5.52-1.el7.x86_64
[root@www ~]# yum remove mariadb
注意:
centos 系统默认安装了 mariadb-libs 包,这个包在 /etc 下生成了 mariadb 的配置文件 my.cnf ,所以系统中默认有一个 my.cnf 的配置文件。
( 2 )安装 mysql 的依赖包
[root@www ~]# yum -y install gcc gcc-c++ ncurses-devel openssl openssl-devel
注释:
ncurses是字符终端下屏幕控制的基本库,你在TTY下登录到主机上mysql需要的
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。
(3)安装cmake编译工具
[root@www ~]# tar zxf cmake-3.16.2.tar.gz
[root@www ~]# cd cmake-3.16.2
[root@www cmake-3.16.2]# ./configure
[root@www cmake-3.16.2]# gmake && gmake install
(4)安装boost库
[root@www ~]# tar zxvf boost_1_59_0.tar.gz
[root@www ~]# mv boost_1_59_0/ /usr/local/boost
备注:
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。
Mysql使用c语言和c++语言写的
源码编译及安装mysql
(1)创建运行用户
[root@www ~]# useradd -M -s /sbin/nologin mysql
(2)解包
[root@www ~]# tar zxvf mysql-5.7.28.tar.gz
[root@www ~]# cd mysql-5.7.28
(3)配置
[root@www mysql-5.7.28]# 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
备注:
- -DSYSCONFDIR : 指定初始化配置文件目录。
- -DDEFAULT_CHARSET : 指定默认使用的字符集编码,如 utf8。
- -DDEFAULT_COLLATION : 指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。
- -DWITH_EXTRA_CHARSETS : 指定额外支持的其他字符集编码。
- -DWITH_BOOST :指定 boost 库的位置,MySQL5.7 版本编译安装时必须添加这个参数。
备注:
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。
Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。
编译并安装
[root@www mysql-5.7.28]# make
[root@www mysql-5.7.28]# make install
安装后的调整
(1)建立配置文件
[root@www ~]# vim /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock
[mysqld]
socket=/usr/local/mysql/data/mysql.sock
#绑定监听地址 0.0.0.0
bind-address = 0.0.0.0
skip-name-resolve
#设置 3306 端口
port = 3306
设置 mysql 的安装目录
basedir=/usr/local/mysql
设置 mysql 数据库的数据的存放目录
datadir=/usr/local/mysql/data
允许最大连接数
max_connections=2048
服务端使用的字符集默认为 utf8
character-set-server=utf8
创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#表名大小写不敏感
lower_case_table_names=1
#mysql服务允许接受的数据包最大值
max_allowed_packet=16M
[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
#pid-file=/var/run/mariadb/mariadb.pid
备注:
[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
[mysqld_safe]下面的log-error只在用mysqld_safe启动时才会生成。
如果希望在初始化mysql后马上生成这个日志文件,可以将log-error写入到[mysqld] 中,
(2)初始化数据库
[root@www mysql-5.7.28]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意:
记下初始密码
要想重新初始化需要删除数据目录
(3)设置环境变量
[root@www mysql-5.7.28]#echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile
[root@www mysql-5.7.28]# . /etc/profile
添加系统服务
[root@www mysql-5.7.28]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@www mysql-5.7.28]# chmod +x /etc/rc.d/init.d/mysqld
将 MySQL 添加为 systemd 标准服务,之后方便使用"systemctl"命令进管理
[root@www ~]# vim /lib/systemd/system/mysqld.service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/mysqld start
ExecReload=/etc/rc.d/init.d/mysqld restart
ExecStop=/etc/rc.d/init.d/mysqld stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@www ~]# systemctl daemon-reload
[root@www ~]# systemctl enable mysqld
[root@www ~]# systemctl start mysqld
[root@www ~]# systemctl status mysqld
[root@www ~]# netstat -anpt | grep mysqld
源码包编译安装完成
访问 MySQL 数据库
[root@www ~]# mysql -u root -p
mysql>set password =password('pwd123');