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 表進行添加/刪除/更新操做來添加/刪除 /更新用戶。但直接對該表進行操做可能會對該表及該表的架構產生必定的風險, 因此推薦使用命令及相關函數來實現用戶的添加/刪除/更新。

相關文章
相關標籤/搜索