MariaDB

摘要:
面试题:5.常见的数据库非关系型数据库:mongodb,redis关系型数据库:oracle,db2,sqlserver,mysql,mariadb6.Mariadb发源MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。

知道自己学的什么版本的数据库

mariadb版本:10.3

1.数据库介绍(默认端口号=3306)

简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据

更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只是存放的东西不通,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有一个初步了解了。

数据库诞生于1950年,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

2.数据库的种类

按照早起的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库,网络式数据库和关系型数据库,而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。

3.关系型数据库(安全)

(1)关系型数据库的由来

虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺,用户在对这两种数据库进行存取时,仍然需要明确数据库的存储结构,支出存取路径,而关系型数据库就可以很好的解决这些问题

(2)关系型数据库介绍

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(既二维格式表)。例如宏福教育某一期的学生关系就是一个二元关系,在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表上,通过对这些关联表格分类,合并,连接或选取等运算来实现数据的管理。

关系型数据库诞生距今已经有40多年了,从理论产生发展到现实产品,例如:大家最常见的mysql和oracle数据库,oracle在数据库领域里上升到了霸主的地位,形成每年高达数百亿美元的庞大产业市场,而mysql也是不容忽视的数据库,以至于被oracle中心收购了。

(3)表之间有关系

数列

数据

4.非关系型数据库(nosql)

非关系型数据库也称之为nosql数据库,请注意,nosql的本意是“not only SQL”,指的是非关系型数据库,而不是“no SQL”的意思,因此nosql的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。

随着互联网的兴起,超大规模和高并发量的微博,微信,SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据库IO瓶颈,性能瓶颈都难以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的的功能特异化的数据库产品,NoSQL类的数据库就是在这样的情景中诞生并得到了非常迅速的发展

NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面,NoSQL数据存储不需要固定的表结构,通常也不存在连接操作,在大数据存取上具备关系型数据库无法比拟的性能优势,该术语(NoSQL)在2009年初得到了广泛的认同

google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL,一些开源的NoSQL体系,如

Redis, mongodb也逐渐的越来越受到各大中小型企业的欢迎和追捧

非关系型数据库的种类

键值(key-value)存储数据

键值数据库就类似传统语言中使用的哈希表,可以通过key来添加,查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性

键值(key-value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据,key/value模型对于IT系统来说的优势在于简单,易部署,高并发。

面试题:

clip_image002

5.常见的数据库

非关系型数据库(nosql):mongodb,redis

关系型数据库:oracle,db2,sqlserver,mysql,mariadb

6.Mariadb发源

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。

MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。

在Oracle控制下的MySQL开发,有两个主要问题:1. MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。2. MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。Widenius有一个ppt,用数据比较了收购之前和之后新版本的发布速度。有很多bugfix和新的feature,都没有及时加入到发布版本之中。

7.RDBMS 数据库管理工具

Relational Database Management System

clip_image003

sql语句主要分为:

DQL:数据查询语言,用于对数据进行查询,如select

DML:数据库操作语言,对数据库进行增删改查,如:insert,update,delete

TPL:事物处理语言,对事物进行处理,包括begin,transaction,commit,rollback

DCL:数据控制语言,如grant(赋予权限),revoke(收回权限)

DDL:数据定义语言:进行数据库,表的管理等,如create(创建库),drop(丢弃库)

CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor

sql是一门特殊的语言,专门用来操作关系型数据库

不区分大小写

8.表(Table) 特定类型数据的结构化列表

表是结构化的文件,用来存储特定类型的数据,表可能存储客户清单,产品目录,或者其他信息列表。

存储在表中的数据是一种类型的数据或一个列表,绝对不应该将顾客的列表信息和订单的列表信息存储到同一个数据库表中,这样做会使随后的数据检索和访问变得困难,代替的解决方案是创建两个表,在每个表中存储其相应的列表信息。数据库中每个表都有一个名字来标识它,并且在一个数据库中表名是唯一的

列( Column): 表中的一个字段,表由一列或多列构成,列中存储表的一部分信息

每一列存储一条特定信息。例如在客户表中,一列存储客户编号,另一列存储客户姓名,

而地址,城 市,州,邮政编码存储在各自的列中。数据库中每一列都有相应的数据类型,

数据类型定义了该列可以存储哪种类型的数据。例如,如果某列要存储数字,就应该使用numeric数据类型。

如果某列存储日期,文本,提示,金额等 就需要用恰当的数据类型来指定。

9.行( Row):表中的一条记录

表中的数据存储在行里,把表当做类似电子表格的网格,在网格中垂直的列就是表的列 ,水平的行就是表的行。

例如,客户表可能在每一行存储一个客户,表中行的数量也就是表中记录的条数。

注: NULL 在SQL中NULL用来指代空值( no value),如果一列被定义为允许为NULL,

当插入或者更新行时,可以忽略该列的数据。

10.mariadb安装(该yum源安装的是10.3版本)

新建一个mariadb的yum源

[mariadb]

name = MariaDB

baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/

gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

gpgcheck=1

yum install MariaDB -y #区分大小写

11.mysql的root密码

[root@localhost ~]# mysql_secure_installation #初始化数据库

clip_image004

clip_image005

接下来的所有都输入y

忘记mysql的root密码:

vim /etc/my.cnf.d/server.cnf

clip_image006

重启

mysql -u root 即可免密登陆

修改密码:

MariaDB [(none)]> use mysql;

MariaDB [mysql]> select host,user,password from user;

clip_image007

MariaDB [mysql]> update user set password=password('456') where user='user';

此时用户user的密码就修改成了456

将mariadb的配置文件中的skip-grant-tables注释掉,重启数据库,密码就生效了。

12.登陆数据库

mysql -uroot -p123456 #-u接数据库用户名 -p接数据库的密码

clip_image008

13.查看数据库

show databases; #查看数据库

clip_image009

mysqladmin --version; #查看数据库版本

clip_image010

show create database mysql; #查看创建数据库状态

use db_name;         #使用db_name数据库

clip_image011

show tables; #查看该数据库的所有表

clip_image012

这里除了可以修改user中的数据,其他的都不可更改!

select * from user; #查看user表中的所有数据

查看当前数据库有哪些用户:select host,user,password from user; #查看user表中的host,user,password字段,中间以,分隔,

clip_image013

localhost:只允许本地登录,也就是说只能从linux端访问数据库,不允许第三方登陆。

show create database 1db; #查看创建数据库状态

clip_image014

14.用户管理

select user();  #查看当前用户

clip_image015

当前用户为root

创建用户

grant all privileges on test03.grade to 'user1'@'%' identified by 'user1'; #创建用户user1且密码为user1,赋予test03数据库的grade表最高权限(在任意主机上%) *.*表示所有数据库的所有表 %代表任意主机 identified by表示设置密码为user1,此命令也可做修改用户名密码使用。

clip_image016

添加用户user1成功

grant all privileges on test03.grade to 'root'@'%';#给root赋予test03数据库的grade表最高权限(在任意主机上%) *.*表示所有数据库的所有表 %代表任意主机

grant select,create,update,delete on test03.grade to 'aaa'@'%'; #给aaa添加查询,创建,更新,删除的权限(在任意主机上)

show grants for 'aaa'; #查看aaa用户的权限(root用户)                        

revoke all on *.* from 'aaa'@'%'; #收回aaa在任意数据库的任意表的最高权限                    

show grants;        #查看权限

15.修改数据库

create database test3 #创建数据库test3

drop database test3 #删除数据库test3

create database 1db character set utf8; #修改1db数据库默认字符集为中文(utf8)

alter database 1db character set utf8;

免责声明:文章转载自《MariaDB》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何用 GPU 训练模型?常用开源库介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案

引言 在项目中,通过使用SQL语句“DROP DATABASE [数据库名]”删除数据时,一直出现“无法删除数据库 "XXXX",因为该数据库当前正在使用”的错误信息,经测试在SqlSever数据库客户端中,直接执行该Sql语句可以正常执行,但是通过OLEDB执行该Sql语句,就出现上述错误,笔者查阅相关文档,找到了解决该问题的方法。 解决方法 将要删除的...

MySQL 三万字精华总结

写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了。 个人建议把面试题看作是费曼学习法中的回顾、简化的环节,准备面试的时候,跟着题目先自己讲给自己听,看看自己会满意吗,不满意就继续学习这个点,如此反复,好的offer离你不远的,奥利给 文章收录在 GitHub...

mysql二进制日志

一、mysql的二进制日志文件 二、查看二进制日志文件信息:      1、查看二进制日志文件是否开启:show variables like 'log_bin';      2、查看所有二进制日志文件的列表:show binary logs;      3、查看当前二进制日志文件的名称(最后一个):show master status;      4、获...

Spring框架之jdbc源码完全解析

Spring框架之jdbc源码完全解析        Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现:        1、指定数据库连接参数        2、打开数据库连接        3、声明SQL语句        4、预编译并执行SQL语句        5、遍历查询结果(如果需要的话)        6、处理每一次遍历操作...

vsCode mongoDB插件 Azure Cosmos DB

这是一款可以在vsCode中使用的 mongoDB可视化插件。 首先,先进行安装,当然我已经安装好了。 安装完成后,要重启下vsCode 会看到 然后 点击绿色的小按钮,选择MongoDB 再输入MongoDB的连接地址。当然要先把本地的mongoDB数据库打开,cmd黑窗口输入mongod --dbpath xxxx 打开本地数据库 输入完成...

Microsoft SQL Server 查询连接数和关闭连接数

1.查询指定数据库有哪些连接(connection) SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT [DBID] FROM [Master].[dbo].[SYSDATABASES] WHERE NAME='test'...