Linux操作MySQL的一些基础

MySQL原理

                使用数据库的必要性

        使用数据库可以高效且条理分明的存储数据,使人们能够更加迅速、方便的管理数据。数据库有如下特点:

1、可以结构化存储大量的数据信息,方便用户进行有效的检索和访问

2、可以有效的保持数据信息的一致性,完整性,降低数据冗余。

3、可以满足应用的共享和安全方面的要求

        数据库技术是计算机科学的核心技术之一,具有完备的理论基础,对数据库基本概念的掌握,将有助于对数据库的理解

       数据库的基本概念

        描述事物的符合记录为数据(Data)数据不仅仅包括数字、文字、图像、图形、声音、档案记录等都是数据。

        在数据库中,数据是以”记录“的形式按统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把”人“和”书“混在一起存储。这样数据的存储就能够井然有序了

        比如图中存储的一行数据,在数据中称为一条”记录“。每一条记录中的每一个输入项称为”列“,图中的id号、名字、年龄都是列名。

                 数据库和数据库表

        不同的记录组织在一起,就形成了数据库(Database,DB)的“表”(Table)。也可以说,表是用来存储具体数据的。简单来说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。它是统一管理的相关数据的集合。

        通常,数据库并不是简单地存储这些数据的,还要表示他们之间的关系,例如,书和人存在联系的,书的作者是某个人,因此需要建立书和人的“关系”。这种关系也需要要用数据库来表示,因此关系的描述也是数据库的一部分。

                数据库管理系统和数据库系统

        数据库管理系统(Database Management System ,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS主要包括以下功能:

1、数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。

2、数据的定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不和语义的错误数据被输入或输出。

3、数据操纵功能:包括数据查询统计和数据更新两个方面

4、数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能

5、通信功能:DBMS其他软件系统之间的通信,如Access能与其他Office组件进行数据交换。

        数据库系统(Database System DBS)是一个人一机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。

        应用程序时利用DBMS,为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间内就学会使用,那么就称为数据库应用软件。

        常用的数据库应用软件有人事管理、财务管理、图书馆管理等信息管理软件及各类信息咨询系统等。

        数据库管理员(Database Administrator ,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行,DBA一般由业务水平较高、资历较深的人员担任。

        数据的经典数据模型

        数据时现实世界中“量”的抽象,而数据模型(Data Model)是数据特征的抽象,在数据库系统中,数据模型是它的核心和基础。数据模型表现为数据的结构、定义在其上的操作及约束条件。它从概念层次上描述了系统的静态特征、动态特征和约束条件,为数据库系统的信息便是与操作提供了一个抽象框架。

        在DBMS的发展过程中,出现了网状模型、层次模型和关系模型三种经典的数据模型。

        数据模型所描述的内容包括三方面:数据结构、数据操作和数据约束。

                网状模型

数据结构

        在网状模型中,数据记录组织成图的形式,使用“数据结构图”进行抽象的分析和表示,图中举例表示了银行客户、银行账户和银行支行三方面的复杂关系

 它可以表示几种基本关系

1、一个银行客户可以拥有多个银行账户(一对多)

2、一个银行账号也可以被多个客户所有(一对多)

3、每个银行账户位于特定的银行支行(一对一)

        网状模型适合表达复杂的数据关系的实现,也可以将数据冗余减小到最小,它的数据结构模型能直观反映现实中数据之间的联系。

数据操作

        网状模型操作是建立在关系基础上的导航式的操作,针对一个特定的网状模型系统的数据结构,有可能找到最优的查询算法。但是,一旦结构发生变化,就需要新的查询办法。网状模型以图论为基础,还无法得到一个通用的、高效的解决方案。所以,随着关系模型的飞速发展和广泛应用,网状模型已经暂时失去其重要性了

数据约束

        网状模型的数据约束时零散孤立的,或者分散在各个节点,或者集中称为一种关系链,这样容易导致不一致性或降低效率。

                层次模型

数据结构

        层次模型是网状模型的一个特例。在层次模型中,数据记录组织成树的形式,使用“树结构图”进行抽象的分析和表示,适合一对多的关系模型。

        相对于网状模型,层次模型禁止了多对多和多对一的关系,使得它的数据结构相对简单

1、企业下辖多个部门(一对多)

2、部门下辖多个科室(一对多)

3、科室下辖多个小组(一对多) 

 数据操作

        在层次模型上的数据操作不可避免地具有网状模型的特点——导航性。但是,由于禁止了多对一和多对多的关系,因此数据操作相对网状模型而言简单了许多。这样的结构有利于提高数据的查询效率,但数据存取上还存在着必须导航的要求,因此,层次模型的数据库在数据操作上依然比较复杂

数据约束

        层次模型的数据约束与网状模型相似,由于结构的简化,去掉了网状模型中的多对多,多对一的关系,数据约束处理的复杂性按级数下降,所以,层次模型的数据约束可以做到适当的系统实现,但很多还是依靠应用程序本身实现。

                关系模型

数据结构

                 关系模型建立在关系代数的理论基础上,数据结构使用简单易懂的二维数据表,可以用简单的“实体-关系”(E-R)图来直接表示

⚫ 实体 :也称实例。对应现实世界中可区别于其他对象的“事件”或“事物”,如银行客户、银行账户等

⚫实体集:具有相同类型及共享相同性质的实体集合。例如,银行所以客户的集合可以定义为“银行客户”实体集

⚫属性:实体所具有的某一特性,一个实体可以有多个属性。例如“银行客户”实体集中的每一个实体均具有姓名、住址、电话等属性

⚫联系:实体集之间的对应关系称为联系,也称为关系。例如,银行客户和银行账户之间存在“储蓄”的关系

数据操作

        对于数据库的用户而言,关系模型使用从关系代数上抽象出来的数据库操作语言(DML)进行操作。结构化查询语言(SQL)就是其中最重要的一种,已经成为关系数据库标准操作语言。它的特色是直接面向结果,简化操作步骤,使得数据库应用的设计变得非常简单易懂

        对于数据库的物理结构而言,关系数据库系统的数据结构简单、功能强、数据独立性高、理论基础坚实。严格的关系数据以二维的数据库表作为基本数据结构,利用简单或复杂的索引技术实现查询算法,实现起来相对比较简单,也方便了预编译技术SQL语言之间转换为有效的数据检索算法。

数据约束

        关系模型的数据约束可以针对实体,也可以针对实体的属性,还可以针对关系,并可以在定义实体、实体属性和关系时全面实现。关系模型使用的数据定义语言(DDL)和关系模型在理论上对关系数据库核心实现的要求,使得数据约束可以容易实现,但是它的效率并不高

        综合来说,关系模型相比网状模型和层次模型有更为坚实和完整的理论基础。相比层次模型和网状模型而言,关系模型与用户更靠近些,而网状模型和层次模型与底层实现的结合更为紧密。这样的特色也更容易让关系模型成为商业数据库的选择。

        数据库管理系统的优点

  • 相互关联的数据的集合

  • 较少的数据冗余

  • 程序与数据相互独立

  • 保证数据的安全、可靠

  • 最大限度地保证数据的正确性

  • 数据可以并发使用并能同时保证一致性

关系数据库的基本概念

        关系数据库系统是基于关系模型的数据库系统,是关系模型应用到数据库领域的实例化。它的基本概念来自于关系模型

        关系数据库的基本结构

        关系数据使用的存储结构是多个二维表格,及反映事物及其联系的数据描述是以平面表格形式体现的

        在每个二维表中,每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性。数据表与数据库之间存在相应的关联,这些关联用来查询相关的数据,上面的张三丰图表就是一个数据表

1、数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中,某一特定的方面或部分的对象及其属性。

2、数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的一个

3、数据表中的列通常叫做字段或者属性,它代表相应数据库中存储对象的共有的属性。

        主键和外键

                主键

        数据库中的每行记录都必须是唯一的。而不允许出现完全相同的记录,通过定义主键(关键字:Primary Key)可以保证记录(实体)的唯一性。

        键,即关键字,它是关系模型中一个非常重要的元素。

        主键唯标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键。

        如果一个属性集能唯一地标识表的一行而又不含有多余的属性,那么这个属性集称为候选建。表中可以有多个候选键,但是只能有一个候选键可以选作表的主键,所有其他候选键称为备用键。id,name,age都可以说是候选键,可以将“id”定义为主键

                外键

        一个关系数据库通常包含多个表,通过外键(Foreign Key)可以使这些表关联起来。外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。 

 

        数据完整性规则

        为了维护数据库中的数据与现实世界的一致性,关系数据库的数据与更新操作必须遵守四类完整性规则

                实体完整性规则

        实体完整性规则要求关系中的元组在主键的属性上,不能为空值,如果出现空值,那么主键值就起不到唯一标识元组的作用。例如id号,定义了主键,以便其他数据库表的关联应用,“id”字段不允许为空

                域完整性规则

        域完整性也称列完整性,指定一个数据集对某一个列是否有效或确定是否允许空值。比如设置一个“性别”字段,只能取值为“男”或“女”,这样该列不会输入其他值。

                引用完整性规则

        如果两个表之间相互关联,那么引用完整性规则要求不允许引用不存在的元组,比如有两张表,一张表上的信息没有了,但在另一张表上,依然有他的信息,这样的情况是不允许存在的。

                用户定义的完整性规则

        用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映了某一具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这些这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作。

MySQL的安装

之前是编译安装的MySQL,这次我们用yum装

客户端程序

  • mysql: 交互式的CLI工具

  • mysqladmin:基于mysql协议管理mysqld

  • mysqlimport:数据导入工具

    MyISAM存储引擎的管理工具:

  • myisamchk:检查MyISAM库

  • myisampack:打包MyISAM表,只读

服务器端程序

  • mysqld_safe

  • mysqld

  • mysqld_multi 多实例 ,示例:mysqld_multi

                yum安装mysql5.7版本

先搭建一个mysqlyum源

[root@localhost /etc/yum.repos.d]# vim mysql.repo 

[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0

安装mysql社区版

[root@localhost /etc/yum.repos.d]#yum -y install mysql-community-server

开启数据库服务

 

[root@localhost yum.repos.d]# systemctl start mysqld

[root@localhost /etc/yum.repos.d]# ss -natp |grep 3306
LISTEN     0      80          :::3306                    :::*                   users:(("mysqld",pid=66404,fd=32))
 

进入数据库,这样会报错

[root@localhost yum.repos.d]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

 我们可以去

[root@localhost /etc/yum.repos.d]# vim /etc/my.cnf

 直接可以进去

 改密码

(root@localhost) [(none)]>set password for username @localhost = password(newpwd);
(root@localhost) [(none)]>flush privileges;刷新
(root@localhost) [(none)]>set password for username @localhost = password(newpwd);

再把 skip-grant-tables 注释掉

 我们就可以使用密码进入了

或者

可以查看日志,系统生成的密码是多少,再改密码也是一样的

[root@localhost /etc/yum.repos.d]# grep password /var/log/mysqld.log

                 优化数据库的操作

        我们假如直接使用系统的界面,常常use 某某表,是跳不过去的,有时候会忘记,是在那个数据库下,或哪张表下面,非常不好,我们只需在mysql主配置文件加上

[root@localhost ~]# vim /etc/my.cnf

[mysql]
prompt=(\\u@\\h) [\\d]>\\_

即可

 

MySQL插件(mycli插件) 

        很多初学者,不知道MySQL命令,也没有提示,非常不友好,但是mycli插件刚好解决了这一问题,是基于python的。

        我们安装它一下看看

安装所需依赖包

[root@localhost opt]#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

下载python软件包及解压

 

编译安装python

 

[root@localhost Python-3.7.7]#cd Python-3.7.7/
[root@localhost Python-3.7.7]#./configure --prefix=/usr/local/Python-3.7.7/

make install make

[root@localhost Python-3.7.7]#make
[root@localhost Python-3.7.7]#make install

做软链接便于管理

[root@localhost Python-3.7.7]# ln -s  /usr/local/Python-3.7.7/bin/python3.7 /usr/bin/python37
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/pip3.7 /usr/bin/pip37

安装阿里云

pip37 install mycli -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

给mycli做软链接

[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/mycli /usr/bin/mycli

因为我之前设置过密码,所以mycli没必要设了,直接进去

 可以看到输入字母,就会有提示了,非常方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柏ぁ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值