运行环境: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表相同的属性classidselect * 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中也有属性列classidselect * 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;