MariaDB简介

1、什么是数据库

  DB 与 DBMS :DB(DataBase)即数据库,存储已经组织好的数据的容器。DBMS(DataBase Manage System)是数据库管理系统用来对数据库及数据库中的数据进行操做。 咱们平时所说的 Oracle、Mysql、MariaDB 指的就都是 DBMS。 在数据库中存放的数据都是以表的形式进行的,在数据库中表(table)是结构化的文件,用来存储特定类型的数据。一个数据库中,表的名字是惟一的。 对于表要关注如下几个部分:(1)框架(Schema):关于数据库和表布局以及属性信息。(2)列(column):表中的一个字段,表由一列或多列构成,列中存储表的一部分信息,每一列存储一条特定信息。 数据库中的每一列都有相应的数据类型,数据类型定义了该列能够存储哪一种类型的数据。(3)行(row):表中的一条记录。(4)主键(primary key):惟一标识表中每一行的列(或者多列的集合),任意两行不具备相同的主键值(主键列中的每行数据不能相同), 主键列不能包含空值(NULL)。mysql

  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)服务器将操做完成后的结果返回给客户端供用户查看。sql

2、MariaDB 的安装及初始化

一、配置好本地 yum 源数据库

二、安装 MarIaDB 的服务器端和客户端 yum install mariadb -y版本较低,可使用新的源安装安全

三、开启 mariadb 服务 systemctl start mariadb开机自启数据库 systemctl enable mariadb服务器

四、初始化 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 框架

 

3、MariaDB简单的基础操做

一、登陆 mysql -u 用户名 -p 此方法密码被隐藏或:mysql -u 用户名 -p 密码 ide

二、查看当前 DBMS 下管理的全部的数据库 show databases;函数

三、建立数据库 create database 数据库名;布局

四、使用数据库 use 数据库名;

五、查看当前数据库内的全部表 show tables;

 

六、创建新表create table 表名(字段1,字段2);

七、查看表的结构 describe 表名;

八、检索表中全部字段(查看表中全部列/查看表的所有内容) select 查询的字段 from 表名;

九、显示当前服务器状态 show status; 注:查询的结果是变量名和变量的具体值

十、显示建立数据库/表所使用的命令

建立数据库的命令:show create database 数据库名;

建立表的命令:show create table 表名;

十一、显示当前登陆帐户的权限 show grants; 

4、数据库简单查询

1、select简单查询 

对于数据库来讲,最重要的操做能够说是数据的查询了,大多数状况咱们须要查询到本身想要东西来获取信息

一、select检索一列或多列(1)检索单独一列 select 列名 from 表名;(2)检索多列数据 select 列 1,列 2... from 表名;(3)查询全部字段 select * from 表名;

二、去除查询结果中的重复值 select distinct 列 1,列 2... from 表名;distinct 关键字对它后面跟的全部列都生效

三、使用 limit 子句控制显示结果条目数(1)select 列 1,列 2... from 表名 limit 须要显示的行数;(2)select 列 1,列 2... from 表名 limit x,y;x 是从第几行开始显示(包括 x) y 是显示的行数MariaDB的行数从第 0 行开始

四、使用 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; 

五、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...)

2、 子查询

多个表间的 select 语句的嵌套查询 例:检索全部订单包含物品 TNT2 的客户信息 一、不使用子查询时 (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); 二、使用子查询 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 级 大多数子查询均可以更改成链接查询

3、链接查询

联合查询
使用 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 也适用于对不一样的表进行联合查询
链接查询
一、内链接 

使用 inner join … on 语句: select 数据库名.表名 from 库名 inner join 数据库名 on 条件
二、外链接 左外链接以左侧数据表为基础,右外链接以右侧数据表为基础。

(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; 

 

5、视图、事务

  视图是一个虚拟表,其内容由查询定义。 视图的优势: (1)视点集中 (2)简化操做 (3)定制数据 (4)分隔合并数据 (5)安全性好

在数据库中语法格式及限定条件(1)语法格式:create view 视图名 as select 语句; (2)限定条件: 1) 像表同样,视图命名必须惟一 2) 建立视图没有数量限制 3) 建立视图必须有安全访问权限(由数据库管理员授予) 4) 视图能够嵌套,便可以创建一个视图,该视图可使用基于其余视图返回 数据的查询 5) 视图不能够创建索引,触发器。

想要删除视图 drop view 视图名; 注:删除视图不会删除视图中数据来源的基本表。
事务
一、相关概念 (1)事务(transaction):一组 SQL 语句 (2)回滚(rollback):撤销指定 SQL 语句的处理过程 (3)提交(Commit):将还未保存的数据库语句写入数据库表 (4)保存点 (Savepoint):事务集中的一个临时占位符,可进行回滚(与撤销整个 事务不一样)

二、事务的特性(ACID) A 原子性:(Atomicity)要么所有执行,要么全不执行 C 一致性: (Consistency)事务的相关操做,须要保持数据的一致 I 隔离性: (Isolation)事务与事务间互相隔离 D 持久性:(Durability)事务一旦提交,数据当即生效

三、使用事务处理  

start transaction;进行相关操做;commit;便可完成一个事务

若是不commit,直接rollback;就会回滚到事务开启以前的状态

6、数据操做

一、建立表 建立表语法结构: create table 表名 ( 列名 1 数据类型 是否能够为空 是否自增加, 列名 2 数据类型 是否能够为空 是否自增加, …… …… primary key(主键列名) )engine=引擎名;
(1)数据类型 字符串数据类型:char、varchar 数值数据类型:int(整数)、boolean、decimal(小数) 时间和日期数据类型:date、datetime 二进制数据类型 (2)是否自增加 auto_increment (3)如何查看当前 DBMS 支持的全部数据库引擎 show engines

二、修改表中的列(字段)

(1)向表中新增一个字段 alter table 表名 add 列名 列的属性;

(2)从表中删除一个字段 alter table 表名 drop column 列名;

(3)更改表中某列的数据类型: alter table 表名 modify 列名 新的列的类型;

         同时更改列名及数据类型: alter table 表名 change 旧列名 新列名 新的列类型; alter table 表名 change column 旧列名 新列名 新的列类型;

三、重命名表 rename table 旧表名 to 新表名;

四、删除表 drop table 表名; 

五、向表内插入数据 (1)直接插入数据 insert into 表名 values ('值 1','值 2',...);(2)指定字段插入 insert into 表名(列名 1,列名 2...) values ('值 1','值 2'...); 
(3)插入多条记录 insert into 表名(列名 1,列名 2...) values ('值 1','值 2'...),( '值 1','值 2'...);

六、更新表中数据 update 表名 set 列名='新值' where 主键列名='值 1';

七、删除表中数据 delete from 表名 where 列名='值'; (1)删除表中的全部记录: delete from 表名; (2)快速清空整个表: truncate 表名; truncate h_info; 注: truncate 比 delete 执行的速度快,占用资源少,truncate 可清空主键记录。
八、为关系表增长外键
sql 语句格式: alter table 表 1 add constraint 约束名 foreign key(表 1 中列) references 表 2(列名);

7、访问控制

一、访问控制 经过建立不一样的用户,并给这些用户赋予适当的权限来实现 MariaDB 的访问控制。
二、用户管理 (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 表进行添加/删除/更新操做来添加/删除 /更新用户。但直接对该表进行操做可能会对该表及该表的架构产生必定的风险, 因此推荐使用命令及相关函数来实现用户的添加/删除/更新。

相关文章
相关标签/搜索