首页 > 技术文章 > MariaDB数据库的安装及对其管理

spidermansam 2017-12-04 17:12 原文

MySQL的体系结构
 
数据库安装完毕后,应该先对数据库进行配置,在对其进行数据的操作
innodb 行级锁,互不影响别的数据操作,解决数据并发更改数据的冲突
 
使用yum进行安装,但是yum源地址所依赖的库文件需要在挂载的光盘repo中
yum源地址配置官网:https://downloads.mariadb.org/mariadb/repositories/#mirror=neusoft&distro=CentOS&distro_release=centos6-amd64--centos6&version=10.2
 
MairaDB的特性:
单进程,多线程
多种存储引擎可选
 
高版本不同的名字
MyISAM==>Aria
InnoDB==>XtraDB
#~~~~~~~~~~~~~~~~~~~~~~~~~
centos7启动mariadb服务命令:
systemctl enable mariadb
 
进入mariadb命令: mysql
显示数据库中的表:show databases
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
maria数据库装完毕后只允许本机访问
 
匿名账号不需要设置,随便输入,权限不大,访问数据不全
 
用户设置账户密码命令:mysql_secure_installation
mysql加帐号密码后的访问代码为: mysql -u??? -p????(明文显示,可以敲击回车不显示的输入密码)
 
maria数据库的用户名为 user+host组成一个用户名
 
linux下数据库默认的存储路径为:datadir=/var/lib/mysql(可以更改)
 
在数据中创建一个新的库命令为:create database ***;
 
构建数据表时,应考虑其属性之间的关系,按照第三范式的要求来进行创建
 
mysql的数据类型分为可变和固定两种类型:固定的字节若达不到则会在末尾补零(建议使用固定,因为整体规整,方便查看和索引)
 
使用可变字节:数据可长可短,但不规整,节省磁盘空间
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
常见数据单位:
char(n):固定长度,最多255个字符
varchar(n):可变长度,最多65535个字符
tinytext :可变长度,最多255个字符
text:可变长度,最多65535个字符
BINARY(M)固定长度,可存二进制或字符,允许长度为0-M字节
 
内建类型:enum枚举,set集合
使用enum后,限定了数据可选的类型
#~~~~~~~~~~~~~~~~~~~~
数据库常用命令:
 
show databases;     查看数据库
 
use ***;     使用某个数据库,或者切换到某个数据库
 
show tables;显示当前所在的数据库中的表信息
 
desc ****;观看tables中某个表的结构
 
在mysql数据库中插入属性:
(1)insert 表名 (表中的属性,例如sid,name,sex) value(顺序对应个数的属性的值);     插入一条记录,并指定其属性对应的值(value)
(2)insert 指定表 value(02,'yang','f');     若属性本身就是按照顺序来的,可以省略前面的属性值
(3)insert 指定表(sid,name) value(02,'yang') 若某些属性不赋值,则可以根据其定义是否可以为NULL,来进行操作,若允许,则可以为空,否则必须要有
 
update 表名 set 表内属性1='value',表内属性2='value'  where name='指定对谁操作'
 
delete from 指定表名  where 属性名='value'     删除某个指定表中,指定的某一列
 
truncate table 指定表名     无法还原,清空指定表名的所有数据
 
select *(这个*代表所有数据) from students;     查看students中的所有数据
 
show table status like '指定表名'\G     查看指定表名的状态
 
create table 表名 (参数1,可变或不可变长度,参数2,可变或不可变长度,参数3,可变或不可变长度) 在当前库中新建一个表,并指定其应有的属性和对应的参数条件
 
select 属性1,属性2 from 表名 where 属性 = '指定属性';      显示表内指定属性为*的信息,(一个表中通常有很多信息,但是我们根据需求之查询某一些属性,但是他们得符合某些属
性要求,所以就是这种写法)
 
根据分组来进行数据统计:
GROUP:根据指定的条件把查询结果进行‘分组’以用于做”聚合“运算
select 指定属性,avg(要求平均值的属性) from 表名 group by 指定属性;     查看来自指定表名的指定属性的avg(平均值)
 
select * from 指定表 order by 指定属性;     将指定表的指定属性排序后显示(默认升序)     (若属性指定为空,则默认排在升序最前)
select * from 指定表 order by 指定属性 desc;     将指定表的指定属性倒序排序后显示          (若属性为空,倒序排序后在最末尾)
 
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL语句规范:
不区分大小写(建议大写);
字符串常量区分大小写;
SQL语句可单行或多行书写,以";"结尾
关键词不能跨多行或简写;
用空格和缩进来提高语句的可读性
子句通常位于独立行,便于编辑,提高可读性
注释:
/*注释内容*/ 多行注释
-- 注释内容     单行注释,之一空格
MYSQL注释:
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在数据库中输入help,可以查询可用的非sql语句的命令
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~
数据库对象的命名规则:
同一database下,不能同名
首字母必须英文
可选三个特殊字符(#_$)
不要使用MYSQL的保留字
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
索引的设置:
create index 索引名 on 指定表 (指定索引作用的属性)
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~
笛卡尔乘积:
交叉连接:
用一张表中的某一个属性,去和另一张表中的属性进行匹配,匹配后生成一个新的表,表中记录着匹配项与被匹配的属性,m(可以为多):n(可以为多),但是m有几个,n匹配的就有几个
笛卡尔乘积的代码为: select * from 匹配项 cross join 被匹配项;
 
内连接:取交集
代码 1: select 属性1,属性2 from 指定表名x , 指定表名y where 指定表名x.指定属性m=指定表名y.指定属性n;     显示出自己想要的属性,但是他的某一个属性必须和其他表中的某一个属性一致    
代码 2:select 属性1 ,属性2 from 指定表名x inner join 指定表名y on 指定表名x.指定属性m = 指定表名y.指定属性n ;        教新的写法,也是mysql推荐的写法
 
求左外连接:
select 属性1 ,属性2 from 指定表名x left outer join 指定表名y on 指定表名x.指定属性m = 指定表名y.指定属性n;    
 
求右外连接:
select 属性1 ,属性2 from 指定表名x right outer join 指定表名y on 指定表名x.指定属性m = 指定表名y.指定属性n;
 
多表联合:
select 属性1 ,属性2 from 指定表名x  union select 属性1 ,属性2 from 指定表名y;
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
设置同一网段的主机访问某个指定数据库:
 
grant 权限 on 指定表 to 目标帐号@'目标ip地址,可用%代替网段'  identified by '密码' ;
权限为: select ,delete ,update , all(所有权限)
 
目标主机访问代码为:
mysql -u服务器端分配的帐号 -p服务器端设置的密码 -h指定连接的mysql数据库ip地址
 
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Maria日志:
慢查询日志:slow query log
 记录 某些进程访问数据库的时间,若超过了设置的值,则记录
 
二进制日志:利用二进制日志对数据进行还原,将其重定向到需要还原的mysql数据库中即可
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mysql复制:
实现读写分离:
读取数据 访问一个数据库
写入数据 访问另一个数据库
程序的主从分离需要设置:
设置流程为:
主库写,更新,删除 -->生成binary log(二进制日志) -->利用I/O thread 将此二进制日志写入一个relay log中,再由relay log启用SQL thread导出到从库中
根据日志来写入从库,主库的数据发生变化,从库的数据也跟着发生变化
 
start slave
启动I/O thread,SQL thread线程;

 

推荐阅读