MariaDB简介
一、什么是数据库
DB 与 DBMS :DB(DataBase)即数据库,存储已经组织好的数据的容器。DBMS(DataBase Manage System)是数据库管理系统用来对数据库及数据库中的数据进行操作。 我们平时所说的 Oracle、Mysql、MariaDB 指的就都是 DBMS。 在数据库中存放的数据都是以表的形式进行的,在数据库中表(table)是结构化的文件,用来存储特定类型的数据。一个数据库中,表的名字是唯一的。 对于表要关注以下几个部分:(1)框架(Schema):关于数据库和表布局以及属性信息。(2)列(column):表中的一个字段,表由一列或多列构成,列中存储表的一部分信息,每一列存储一条特定信息。 数据库中的每一列都有相应的数据类型,数据类型定义了该列可以存储哪种类型的数据。(3)行(row):表中的一条记录。(4)主键(primary key):唯一标识表中每一行的列(或者多列的集合),任意两行不具有相同的主键值(主键列中的每行数据不能相同), 主键列不能包含空值(NULL)。
SQL 语句 定义:结构化语言(Structured Query Language)用来管理关系型数据库,可以大致做如下分类(1)数据查询语言(DQL:Data Query Language):功能:从数据库中查询相关信息或记录,主要的关键字:SELECT,WHERE,ORDER BY,GROUP BY 和 HAVING(2)数据操作语言(DML:Data Manipulation Language):功能:对数据库中的表的内容进行相关操作,主要的关键字:INSERT,UPDATE 和 DELETE(3)数据控制语言(DCL):功能:对权限进行相关操作,主要的关键字:GRANT或REVOKE (4)数据定义语言(DDL):功能:对数据库、表等进行相关操作,主要的关键字:CREATE和DROP (5)事务处理语言(TPL):功能:对事务进行相关操作,主要的关键字:START TRANSACTION,COMMIT和ROLLBACK(6)指针控制语言(CCL):功能:对指针进行相关操作,主要的关键字:DECLARE CURSOR(指针),FETCH INTO和 UPDATE WHERE CURRENT。MariaDB 是一个基于 Mysql 的DBMS,完成了存储,获取,管理以及操作数据库的工作。DBMS一类是基于共享文件系统,另一类是基于客户端/服务器。对于文件系统的适用于桌面应用,一般不用来进行较高端或者更苛刻的应用。而基于客户端/服务器的 DMBS 中,客户端与服务器的关系如下:(1)用户使用客户端,向服务器发送数据库操作的指令。(2)服务器接受到来自客户端的指令,根据指令对数据库或数据库中的数据进行 相关操作。(3)服务器将操作完成后的结果返回给客户端供用户查看。
二、MariaDB 的安装及初始化
1、配置好本地 yum 源
2、安装 MarIaDB 的服务器端和客户端 yum install mariadb -y版本较低,可以使用新的源安装
3、开启 mariadb 服务 systemctl start mariadb开机自启数据库 systemctl enable mariadb
4、初始化 MariaDB mysql_secure_installation
MariaDB 软件的相关信息 (1)MariaDB 配置文件:/etc/my.cnf 配置文件目录:/etc/my.cnf.d (2)MariaDB 配置文件模板:/usr/share/mysql (3)MariaDB 日志:/var/log/mariadb (4)MariaDB 数据库:/var/lib/mysql
三、MariaDB简单的基础操作
1、登录 mysql -u 用户名 -p 此方法密码被隐藏或:mysql -u 用户名 -p 密码
2、查看当前 DBMS 下管理的所有的数据库 show databases;
3、创建数据库 create database 数据库名;
4、使用数据库 use 数据库名;
5、查看当前数据库内的所有表 show tables;
6、建立新表create table 表名(字段1,字段2);
7、查看表的结构 describe 表名;
8、检索表中所有字段(查看表中所有列/查看表的全部内容) select 查询的字段 from 表名;
9、显示当前服务器状态 show status; 注:查询的结果是变量名和变量的具体值
10、显示创建数据库/表所使用的命令
创建数据库的命令:show create database 数据库名;
创建表的命令:show create table 表名;
11、显示当前登录账户的权限 show grants;
四、数据库简单查询
一、select简单查询
对于数据库来说,最重要的操作可以说是数据的查询了,大多数情况我们需要查询到自己想要东西来获取信息
1、select检索一列或多列(1)检索单独一列 select 列名 from 表名;(2)检索多列数据 select 列 1,列 2... from 表名;(3)查询所有字段 select * from 表名;
2、去除查询结果中的重复值 select distinct 列 1,列 2... from 表名;distinct 关键字对它后面跟的所有列都生效
3、使用 limit 子句控制显示结果条目数(1)select 列 1,列 2... from 表名 limit 需要显示的行数;(2)select 列 1,列 2... from 表名 limit x,y;x 是从第几行开始显示(包括 x) y 是显示的行数MariaDB的行数从第 0 行开始
4、使用 order by 子句排序
order by 子句对查询结果排序,默认正序排列。
1)、针对单独列进行排序(1)select 列名 from 表名 order by 列名;(2)select 列名 1 from 表名 order by 列名 2;
2)、针对多列进行排序(1)select 列 1,列 2 from 表名 order by 列 1,列 2;(2)降序排序(desc) select 列 1,列 2 from 表名 order by 列 1 desc,列 2; desc 仅对其前面的列有效,其他后面没有 desc 的列仍然以正序排序
3)、使用 order by 子句和 limit 子句显示最大/最小值(1)显示最小值 select 列 1 from 表名 order by 列 1 limit 1;(2)显示最大值 select 列 1 from 表名 order by 列 1 desc limit 1;
5、where 子句
1)、使用=操作符查询 select 列 1,列 2... from 表名 where 列 1='值'
2)、使用<操作符查询 select 列 1,列 2... from 表名 where 列 1<'值'
3)、使用 between 操作符查询 select 列 1,列 2... from 表名 where 列 between 值 1 and 值 2;注:between 和 and 为闭区间(即包含两边的值)
4)、使用 in 操作符查询 select 列 1,列 2 from 表名 where 列 in (值 1,值 2,值 3...)
二、 子查询
多个表间的 select 语句的嵌套查询 例:检索所有订单包含物品 TNT2 的客户信息 1、不使用子查询时 (1)先查询所有包含物品 TNT2 的订单的订单号 select order_num,prod_id from orderitems where prod_id='TNT2'; (2)再查询上述订单号的订单是哪个客户下的 select cust_id,order_num from orders where order_num in(20005,20007); (3)最后查询上述客户的详细信息 select cust_id,cust_name,cust_contact from customers where cust_id in (10001,10004); 2、使用子查询 select cust_id,cust_name,cust_contact from customers where cust_id in (select cust_id from orders where order_num in(select order_num from orderitems where prod_id='TNT2')); 注:子查询最多不超过 15 级,一般使用时不超过 2 级 大多数子查询都可以更改为连接查询
三、连接查询
联合查询
使用 union 连接两个 select 语句进行联合查询: select 列 1,列 2... from 表名 where 条件 union select 列 1,列 2... from 表名 where 条件;
使用 union 查询的特点(1)一个 union 必须包含两个或两个以上 select 语句(2)在 union 中的每个查询都必须包含相同的列、表达式或者聚合函数(3)列数据类型必须是兼容的,他们不必是完全相同的类型,但必须是 MariaDB 能够转换的(4)union 从查询结果集中自动移除任何重复行,如果要返回所有匹配结果,用 union all 代替 union(5)当使用 union 联合查询时只可以使用一个 order by 子句,并且必须出现在 最后一个 select 语句后面(6)union 也适用于对不同的表进行联合查询
连接查询
1、内连接
使用 inner join … on 语句: select 数据库名.表名 from 库名 inner join 数据库名 on 条件
2、外连接 左外连接以左侧数据表为基础,右外连接以右侧数据表为基础。
(1)左外连接 查询所有客户的订单信息:select c.cust_id,o.order_num from customers as c left outer join orders as o on c.cust_id=o.cust_id;
(2)右外连接 查询所有订单是哪些客户下的:select c.cust_id,o.order_num from customers as c right outer join orders as o on c.cust_id=o.cust_id;
五、视图、事务
视图是一个虚拟表,其内容由查询定义。 视图的优点: (1)视点集中 (2)简化操作 (3)定制数据 (4)分隔合并数据 (5)安全性好
在数据库中语法格式及限定条件(1)语法格式:create view 视图名 as select 语句; (2)限定条件: 1) 像表一样,视图命名必须唯一 2) 创建视图没有数量限制 3) 创建视图必须有安全访问权限(由数据库管理员授予) 4) 视图可以嵌套,即可以建立一个视图,该视图可以使用基于其他视图返回 数据的查询 5) 视图不可以建立索引,触发器。
想要删除视图 drop view 视图名; 注:删除视图不会删除视图中数据来源的基本表。
事务
1、相关概念 (1)事务(transaction):一组 SQL 语句 (2)回滚(rollback):撤销指定 SQL 语句的处理过程 (3)提交(Commit):将还未保存的数据库语句写入数据库表 (4)保存点 (Savepoint):事务集中的一个临时占位符,可进行回滚(与撤销整个 事务不同)
2、事务的特性(ACID) A 原子性:(Atomicity)要么全部执行,要么全不执行 C 一致性: (Consistency)事务的相关操作,需要保持数据的一致 I 隔离性: (Isolation)事务与事务间互相隔离 D 持久性:(Durability)事务一旦提交,数据立即生效
3、使用事务处理
start transaction;进行相关操作;commit;即可完成一个事务
如果不commit,直接rollback;就会回滚到事务开启之前的状态
六、数据操作
1、创建表 创建表语法结构: create table 表名 ( 列名 1 数据类型 是否可以为空 是否自增长, 列名 2 数据类型 是否可以为空 是否自增长, …… …… primary key(主键列名) )engine=引擎名;
(1)数据类型 字符串数据类型:char、varchar 数值数据类型:int(整数)、boolean、decimal(小数) 时间和日期数据类型:date、datetime 二进制数据类型 (2)是否自增长 auto_increment (3)如何查看当前 DBMS 支持的所有数据库引擎 show engines
2、修改表中的列(字段)
(1)向表中新增一个字段 alter table 表名 add 列名 列的属性;
(2)从表中删除一个字段 alter table 表名 drop column 列名;
(3)更改表中某列的数据类型: alter table 表名 modify 列名 新的列的类型;
同时更改列名及数据类型: alter table 表名 change 旧列名 新列名 新的列类型; alter table 表名 change column 旧列名 新列名 新的列类型;
3、重命名表 rename table 旧表名 to 新表名;
4、删除表 drop table 表名;
5、向表内插入数据 (1)直接插入数据 insert into 表名 values ('值 1','值 2',...);(2)指定字段插入 insert into 表名(列名 1,列名 2...) values ('值 1','值 2'...);
(3)插入多条记录 insert into 表名(列名 1,列名 2...) values ('值 1','值 2'...),( '值 1','值 2'...);
6、更新表中数据 update 表名 set 列名='新值' where 主键列名='值 1';
7、删除表中数据 delete from 表名 where 列名='值'; (1)删除表中的所有记录: delete from 表名; (2)快速清空整个表: truncate 表名; truncate h_info; 注: truncate 比 delete 执行的速度快,占用资源少,truncate 可清空主键记录。
8、为关系表增加外键
sql 语句格式: alter table 表 1 add constraint 约束名 foreign key(表 1 中列) references 表 2(列名);
七、访问控制
1、访问控制 通过创建不同的用户,并给这些用户赋予适当的权限来实现 MariaDB 的访问控制。
2、用户管理 (1)查看当前系统用户 当前 DBMS 的账户信息存储在 mysql 数据库下的 user 表内 use mysql; select user from user;
(2)创建用户 create user 用户名 identified by '密码';
(3)修改用户 重命名用户: rename user 旧名 to 新名;修改用户密码: set password for 用户名=password('密码'); 修改当前登录用户密码 set password=password('密码');
(4)修改用户权限 (a)新建用户的默认权限:没有权限 (b)查看用户权限 show grants for 用户名; (c)为用户赋权 grant 权限 on 数据库.表 to 用户名;
(d)撤销用户权限 revoke 权限 on 数据库.表 from 用户名; revoke select on test.* from jack; 注:在撤销权限时,撤销的权限必须存在。
(5)删除用户 drop user 用户名;注:可以直接对 mysql 数据库下的 user 表进行添加/删除/更新操作来添加/删除 /更新用户。但直接对该表进行操作可能会对该表及该表的架构产生一定的风险, 所以推荐使用命令及相关函数来实现用户的添加/删除/更新。
MariaDB简介的更多相关文章
- 1. MariaDB简介
作者: 铁锚 日期: 2013年9月21日 官方博客地址:https://mariadb.org/ 官网地址: https://mariadb.com/ 百度百科地址: http://baike.ba ...
- MariaDB——简介
一.MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同.是MySQL的代替品. MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能.存储引擎以及一些新 ...
- Centos下MariaDB操作
MariaDB简介 MariaDB是mysql数据库的一个分支,操作几乎和mysql一样 MariaDB安装.启动.停止 # 安装 yum -y install mariadb mariadb-ser ...
- MariaDB数据库主从复制实现步骤
一.MariaDB简介 MariaDB数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MariaDB数据库支持单向 ...
- MariaDB主从复制虚拟机实战
MariaDB简介: MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQ ...
- MariaDB(MySQL)创建、删除、选择及数据类型使用详解
一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行 ...
- mysql之一
MySQL or MariaDB 简介 DBMS:数据库管理系统 RDBMS:关系型数据库管理系统 总之:他们都是一个数据管理程序:大多都是CS架构,都有专门的通信协议进行数据交换 关系模型: ...
- Maria数据库
项目上要进行数据库选型,业务上来讲,数据是非常结构化的数据,使用传统关系数据库更适合:另外项目采用微服务框架,每个服务的数据库应该尽可能轻量级, 最后考虑Maria数据库. MariaDB简介: Ma ...
- 探讨EFCore如何优雅的实现读写分离
前言 我们都知道当单库系统遇到性能瓶颈时,读写分离是首要优化手段之一.因为绝大多数系统读的比例远高于写的比例,并且大量耗时的读操作容易引起锁表导致无发写入数据,这时读写分离就更加重要了. ...
- 解读先电2.4版 iaas-install-mysql.sh 脚本
#!/bin/bash #声明解释器路径 source /etc/xiandian/openrc.sh #生效环境变量 ping $HOST_IP -c 4 >> /dev/null 2& ...
随机推荐
- 【STM32】串口收发驱动Drv_Uart|学习笔记
一.什么事串口? 大家常说串口,其实串口有很多种UART,SPI,IIC都是串口,一般大家口中的串口就是UART(Universal Asynchronous Receiver/Transmitter ...
- linux 修改PATH 环境变量
[root@localhost ~]# echo $PATH [root@localhost ~]# vim /etc/profile 最后一行加上 export PATH=****/bin:$PAT ...
- HDLbits——Shift18
// Build a 64-bit arithmetic shift register, // with synchronous load. The shifter can shift both le ...
- vmware 二次虚拟化
在创建的虚拟机的目录内找到扩展名为vmx的文件,在文件的最后添加 hypervisor.cpuid.v0 = "FALSE" 保存 重新打开虚拟机在 在虚拟机配置开启虚拟化
- keil 常用调试方法
1.内存调试方法, 参考链接: https://blog.51cto.com/u_4029519/5423341 2.汇编调试方法 常用到bootlader和应用程序的调试 1.生成bin文件.汇编文 ...
- Mac怎么创建加密文件夹
对于一些使用Mac工作生活有特殊要求以及职业要求有限制的用户来说,加密自己的工作内容以及隐私是非常重要的一件事情.往往用户需要加密的内容项目很多,这个时候我们就需要一个加密文件夹来包含这些内容.那么M ...
- mobx基础
React 和 MobX 是一对强力组合.React 通过提供机制把应用状态转换为可渲染组件树并对其进行渲染.而MobX提供机制来存储和更新应用状态供 React 使用. 对于应用开发中的常见问题,R ...
- ESP8266-01S 烧录AT固件
首先就是下载官网的下载软件和AT固件 这是下载好了的 然后就是硬件电路了 我是想把ESP8266用于Ardiuno板子的,然后网上有说买的USBTOTTL的3v3供电不够,所以我就用的Ardiuno板 ...
- Codeforces Round #728 (Div. 2) C. Great Graphs
Great Graphs 题意 给你一个数组\(d\),\(d[i]\)表示从节点\(1\)到其他各个节点的最短路的长度,然后你可以对这个图进行加边(可以是负边),但不允许存在一个权值和为负数的回路. ...
- 从redis中取出数据并转成java对象
1.//数据存入redis中 redisTemplate.opsForValue().set(loginame, JSON.toJSONString(users),1000,TimeUnit.SECO ...