mysql数据库体验
目录
数据库简介
使用数据库
数据库的基本概念
数据
数据库和数据库表
数据库管理系统和数据库系统
数据库系统发展史
经典数据库
网状模型
层次模型
关系模型
当今主流数据库介绍
关系数据库
非关系型库的基本概念
关系数据库的基本结构
主键与外键
主键
外键
数据完整性规则
实体完整性规则
域完整性规则
引用完整性规则
用户定义的完整性规则
mysql服务基础
mysql编译安装(二进制)
基础环境准备
二进制安装
设定配置文件
配置systemctl方式启动
访问mysql数据库
登录到mysql服务器
执行mysql操作语句
数据库简介
使用数据库
使用数据库可以高效且条理分明地存储数据,使人们能够多更加迅速、方便地管理数据。
数据库的基本概念
数据
描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。
在数据库中,数据是以"记录"的形式按照统一的格式我进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把"人"和"书"混在一起存储。这样,数据的存储就能够井然有序。
数据库和数据库表
不同的记录组织在一起,就形成了数据库(Database,DB)的"表"(Tab1e)。也可以说,表是用来存储具体数据的。简单地说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。通常,数据库并不是简单地存储这些数据的,还要表示它们之间的关系。例如,书和人是存在联系的,书的作者可能就是某个人,因此需要建立书与人的"关系"。这种关系也需要用数据库来表示,因此关系的描述也是数据库的一部分。
数据库管理系统和数据库系统
数据库管理系统(Database ManagementSystem,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。
数据库系统(DatabaseSystem,DBS)是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。
数据库管理员(DatabaseAdministrator,DBA)负责数据库的更新科备份数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA-一般由业务水平较高、资历较深的人员担任。
数据库系统发展史
(1)初级阶段--第一代数据库
自20世纪60年代起,第一代数据库系统问世。它们是层次模型与网状模型的数据库系统,为统一管理和共享数据提供了有力的支撑。在这个阶段中,数据库的代表是1969年IBM公司研制的层次模型的数据库管理系统--IMS (Information Management System,信息管理系统)和20世纪 70 年代美国数据系统语言协会(CODASYL)下属数据库任务组(DBTG)提议的网状模型。
(2)中级阶段--第二代数据库
20世纪70年代初,第二代数据库--关系数据库开始出现。自1970年IBM 研究员德加·考特阐述了关系模型的概念后,IBM大力投入关系数据库的研究。关系数据库的底层实现起来比较容易,所以很快被采用,并进入了众多商业数据库的研发计划。Oracle就是当时应关系数据模型的的出现而成立的家专做(关系)数据库的公司。20世纪80年代初,IBM公司的关系数据库系统DB2问世,而Oracle公司也将 Oracle数据库移植到桌面计算机上。
(3)高级阶段--第三代数据库
由于计算机应用的发展,计算机已从传统的科学计算、事务处理等领域,逐步扩展到工程设计、人工智能、多媒体、分布式等领域,这些些新的领域需要有新的数据库支撑,而传统关系数据库系统是以商业应用、事务处理为背景而发展起来的,并不完全适用于新领域的应用,因此,需要新的数据库系统,以满足不同领域的要求。自20世纪80年代开始,各种适应不同领域的的新型数据库系统不断涌现,如工程数据库、多媒体数据库、图形数据库、智能数据库、分布式数据库及面向对象数据库等,特别是面向对象数据库系统,由于其实用性强、适应面广而受到人们的青睐。
经典数据库
数据模型所描述的内容包括三方面:数据结构、数据操作和数据约束。下面简单介绍三种经典数据模型。
网状模型
数据结构
在网状模型中,数据记录组织成图的形式,使用"数据结构图"进行抽象的分析和表示。
数据操作
从数据结构的定义上不难看出,网状模型的数据操作是建立在关系链基础上的导航式的操作。针对一个特定的网状模型系统的数据结构,有可能找到最优的查询算法。
数据约束
网状模型的数据约束是零散孤立的,或者分散在各个节点,或者集中成为一种关系链,这样容易导致不一致性或降低效率。所以,通常网状模型不具体实现数据约束,而由应用程序自身来实现数据约束。这样的情况也使得在网状模型基础上的开发变得困难重重。
层次模型
数据结构
层次模型是网状模型的一个特例。在层次模型中,数据记录组织成树的形式,使用"树结构图"进行抽象的分析和表示,适合一对多的关关系模型。
数据操作
在层次模型上的数据操作不可避免地具有网状模型的特点一一导航性。但是,由于禁止了多对一和多对多的关系,因此数据操作相对网状模型而言简单了许多。这样的结构有利于提高数据的查询效率,但数据存取上还存在着必须导航的要习求。
数据约束
层次模型的数据约束与网状模型相似,由于结构的简化,去掉了网状模型中多对多和多对一的关系,数据约束处理的复杂性按级数下降。所以,层次模型的数据约束可以做到适当的系统实现,但很多还是依靠应用程序本身实现。
关系模型
数据结构
关系模型建立在关系代数的理论基础上,数据结构使用简单易易懂的二维数据表,可以用简单的"实体-关系"(E-R)图来直接表示,E-R 中包含了实体(数据对象)、关系和属性三个要素。
数据操作
对于数据库的用户而言,关系模型使用从关系代数上抽象出来的数据库操作语言(DML)进行操作。结构化查询语言(SQL)就是其中最重要的一种,已经成为关系数据库的标准操作语言。它的特色是直接面向结果,简化操作步骤,使得数据库应用的设计变得非常简单易懂。
当今主流数据库介绍
关系数据库
20世纪80~90年代是关系数据库产品发展和竞争的时代。在市场逐渐淘汰
了第一代数据库管理系统的大局面下,SQLServer、Oracle、IBM DB2、MySQL
等一批很有实力的关系数据库产品走到了主流商用数据库的位置置。
非关系型库的基本概念
非天系数据库
非关系数据库也被称作NoSQL(Not OnlySQL),存储数据不不以关系模型为依据,不需要固定的表格式。非关系型数据库作为关系数据库的一个补充,在日益快速发展的网站时代,发挥着高效率与高性能。
非关系型数据库的优点:
数据库高并发读写的需求
对海量数据高效率存储与访问
数据库的高扩展性与高可用性的需求
关系数据库的基本结构
关系数据库使用的存储结构是多个二维表格,即反映事物及其联系的数据描述是以平面表格形式体现的。
关系数据库是由数据表之间的关联组成的。其中:
数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及其属性。
数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的
数据表中的列通常叫做字段或者属性,它代表相应数据库中存储对象的共有属性。
主键与外键
主键
数据表中的每行记录都必须是唯一的,而不允许出现完全相同的话己录,通过定义主键(主关键字,PrimaryKey)可以保证记录(实体)的唯一性。
键,即关键字,它是关系模型中一个非常重要的元素。
主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键。
外键
一个关系数据库通常包含多个表,通过外键(Forreign Key)可以使这些表关联起来。
外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。
数据完整性规则
实体完整性规则
实体完整性规则要求关系中的元组在主键的属性上不能有空值。如果出现空值,那么主键值就起不到唯一标识元组的作用。
域完整性规则
域完整性也称列完整性,指定一个数据集对某一个列是否有效或确定是否允许空值。
引用完整性规则
如果两个表之间相互关联,那么引用完整性规则要求不允许引用不存在的元组。
用户定义的完整性规则
用户定义的完整性规则是针对某一具体数据的约束条件,由历应用环境决定它反映某一具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作。
mysql服务基础
mysql编译安装(二进制)
基础环境准备
tar xvf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
dnf -y install gcc libaio numactl openssl ncurses-compat-libsuseradd -M -s /sbin/nologin mysql
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
二进制安装
mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/local/mysql
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
cd /usr/local/mysql/bin/
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
设定配置文件
vim /etc/my.cnf
socket=/usr/local/mysql/data/mysql.sock
[mysqld]
socket=/usr/local/mysql/data/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
port = 3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=2048
character-set-server=utf8
default-storage-engine=INNODB
max_allowed_packet=16M
[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
配置systemctl方式启动
ln -s /usr/local/mysql/bin/* /usr/local/mysql/
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
. /etc/profilecp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
vim /lib/systemd/system/mysqld.service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
ExecReload=/etc/init.d/mysqld restart
ExecStop=/etc/init.d/mysqld stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
netstat -anpt | grep mysqld
访问mysql数据库
mysql -uroot -p
alter user 'root'@'localhost' identified with mysql_native_password by 'pwd123';
登录到mysql服务器
mysql -uroot -ppwd123
执行mysql操作语句
show databases;