運行環境:Vmware centos7
一、MariaDB簡介
MariaDB數據庫管理系統是MySQL的一個分支,MariaDB默認的存儲引擎是Maria,不是MyLSAM,Maria可以支持事務,但是默認情況下沒有打開對事務的支持,因爲事務支持會對性能有一定的映像,可以通過下列語句來轉換爲支持事務的Maria引擎
ALTER TABLE 'tablename' ENGINE=MARIA TRANSACTIONAL=1;
MariaDB與Mysql相比較,MariaDB更強的地方在於:
Maria 存儲引擎
PBXT 存儲引擎
XtraDB 存儲引擎
FederatedX 存儲引擎
更快的複製查詢處理
更少的警告和bug
運行速度更快
更好的功能測試
數據表消除
支持對Unicode的排序
二、安裝MariaDB
注:當前使用的爲root用戶
1、檢查系統是否有關於mysql數據庫的文件,有的話可以執行該命令
rpm -e mysql-server rpm -e mysql
2、使用yum安裝MariaDB,在centos7中光盤已經自帶了MariaDB的安裝包
yum -y install mariadb mariadb-server
3、啓動MariaDB,並設置開機自啓動
systemctl start mariadb ss -ntl (MariaDB的監聽端口號爲3306)
systemctl enable Mariadb(設置開機自啓動)
三、配置Mariadb
1、爲mariadb設置密碼登陸
mysql_secure_installation
2、配置完成後,測試登陸
mysql -uroot -pcentos
3、配置MariaDB的字符集
vim /etc/my.cnf
vim /etc/my.cnf.d/mysql-clients.cnf
vim /etc/my.cnf.d/client.cnf
可以通過mysql -uroot -pcentos進入MariaDB,查看字符集可以通過以下命令:
show variables like "%character%"; show variables like "%collation%";
4、簡單使用MariaDB
(1)建立用戶並給與所有操作權限
CREATE USER 'chen'@'localhost' IDENTIFIED BY 'centos1';
測試:(成功登陸)
(2)給用戶賦予權限
GRANT SELECT ON test.lesson TO 'chen'@'localhost'
權限修改完之後需要執行命令FLUSH PRIVILEGES 命令刷新配置權限使其生效
(3)在數據庫中創建所需要的表
create table youxi (id tinyint unsigned, youximing char(20) not null, shizhi int unsigned, redu char(10 )default 'up');
desc youxi(表名)查看對錶的詳細描述
(4)往youxi表中添加內容,刪除內容
insert into youxi values (1,'wangzherongyao','6666666666',default);
一次性添加多行
insert into youxi (id,youximing,shizhi,redu) values (2,'yingxionglianmeng',88888888,default),
(3,'dixiachengyuyongshi',33333333,default),(4,'longzhigu',22222222,default);
delete from youxi where id=4;(如果不加條件語句,結果就是該表內容全部刪除)
(5)給表添加記錄修改記錄
alter table youxi add fuzeren char(20)after shizhi
update youxi set fuzeren='shyboy';
(6)表與表的連接
1、顯示學生的名字與班級名
首先查看students表中的內容,其中只有班級的ID,並沒有課程名
select * from students;
然後我們查看關於關於班級的表classes,我們發現表classes中有和students表相同的屬性classid
select * from classes;
我們可以做一個內連接(innner join)
select s.name student_name,c.class class from students s inner join classes c on s.classid=c.classid;
2、三表連接,顯示學生名和所學的課程名
從上面我們可以得知students表中有一行classid,查看一下coc中也有屬性列classid
select * from coc;
繼續查看有關課程的表courses;與此同時發現coc表中有與courses表中相同的屬性列courseid;
所以我們可以進行三表連接來表示出所需要的信息
select s.name as student_name, co.course as course from students s join coc c on s.classid=c.classid join courses co on c.courseid=co.courseid;
3、更多表的連接
在2介紹了三張表的連接,我們在其上的基礎上在連接一張表
顯示每位同學的姓名、課程及成績
首先查看關於成績的表scores,我們發現scores表中stuid與students表相同,courseid與courses表中的相同;
select * from scores;
select s.name student_name,co.course course,sc.score score from students s join coc c on s.classid=c.classid join courses co on c.courseid=co.courseid join scores sc on s.stuid=sc.stuid and co.courseid=sc.courseid;