MariaDB简介:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎
MariaDB的前世今生:
2009年,Michael Widenius迈克尔·维德纽斯,创建新项目mariadb以规避mysql关系型数据库闭源的风险,直到5.5的版本,一直按照MySQL的版本进行发行。使用者基本上不会感受到和MySQL不同的地方。
2012年,MariaDB开始按照自己的节奏和版本发行方式进行发行,初始版本为:10.0.0,此版本以MySQL5.5为基础,同时合并了MySQL5.6的相关功能。
MariaDB官网:https://downloads.mariadb.org/
点击 Download 10.5.2 Beta Now!
注:在CentOS 7.0中,已经使用MariaDB替代了MySQL数据库。
Mariadb安装
[root@network ~]# firewall-cmd --add-port=3306/tcp –permanen
[root@network ~]# firewall-cmd --reload
[root@network ~]# yum install mariadb-server mariadb -y
[root@network ~]# systemctl start mariadb
[root@network ~]# systemctl enable mariadb
Mariadb安全配置
[root@network ~]# mysql_secure_installation
Set root password? [Y/n] y #设置root密码
New password: root #新密码
Re-enter new password: root #重新输入新密码
Password updated successfully! #密码更新成功
Remove anonymous users? [Y/n] y #删除匿名用户?
Disallow root login remotely? [Y/n] y #不允许远程根登录?
Remove test database and access to it? [Y/n] y #删除测试数据库并访问它?
Reload privilege tables now? [Y/n] y #现在重新加载特权表?
Mariadb登录
[root@network ~]# mysql -uroot -p
Enter password:root #输入密码
Mariadb字符集
MariaDB [(none)]> show variables like 'character%';
注:发现上面的数据库的字符编码有些不是utf8,需要修改
[root@network ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8
[root@network ~]# systemctl restart mariadb
[root@network ~]# mysql -uroot -proot
注:都已经变成utf8现在数据库不会出现中文乱码情况了。
Mariadb基本语法
Mariadb创建
创建库
语法:create database 库名;
MariaDB [(none)]> create database 计算机科学与技术;
MariaDB [(none)]> use 计算机科学与技术; #选择数据库
创建表
语法:create table 表名(字段);
MariaDB [计算机科学与技术]> create table student (学号 int(10),姓名 char(10));
插入单条记录
语法:insert into 表名 values (字段值);
MariaDB [计算机科学与技术]> insert into student values (20201101,"小明");
插入多条记录
语法:insert into 表名 values (字段值), (字段值);
MariaDB [计算机科学与技术]> insert into student values (20201102,"庞统"),(20201103,"孔明");
指定插入
语法:insert into 表名 (字段)values(字段值);
MariaDB [计算机科学与技术]> insert into student (学号,姓名)values(20201104,'小白');
Mariadb查询
MariaDB [计算机科学与技术]> select * from student; #查询表内所有内容
语法:select * from student where 字段=字段值
MariaDB [计算机科学与技术]> select * from student where 姓名="小白"; #过滤查询
Mariadb删除
删除表内指定内容:
MariaDB [计算机科学与技术]> delete from student where 姓名="小白";
删除表内所有内容
MariaDB [计算机科学与技术]> delete from student;
查询表
MariaDB [计算机科学与技术]> show tables;
删除表
MariaDB [计算机科学与技术]> drop table student;
查询库
删除库
MariaDB [(none)]> drop database 计算机科学与技术;
创建新的库与表
MariaDB [(none)]> create database 计算机科学与技术;
MariaDB [(none)]> use 计算机科学与技术;
MariaDB [计算机科学与技术]> create table student (编号 int(10),姓名 char(10),学号 int(10));
MariaDB [计算机科学与技术]> insert into student values (1,"孔明",20201101);
MariaDB [计算机科学与技术]> insert into student values (2,"庞统",20201102),(3,"法正",20201103);
MariaDB [计算机科学与技术]> insert into student (编号,姓名,学号)values(4,'姜维',20201104);
Mariadb修改
修改表内容
语法:update 表名 set 字段="新内容" where 字段="字段值"
MariaDB [计算机科学与技术]> select * from student; #查询表内所有内容
MariaDB [计算机科学与技术]> update student set 姓名="诸葛亮" where 编号="4";
修改表结构
语法:alter table 表名 modify 字段 新数据类型;
MariaDB [计算机科学与技术]> alter table student modify 姓名 varchar(10);
添加表结构
语法:alter table 表名 add 字段 数据类型;
MariaDB [计算机科学与技术]> alter table student add 性别 char(10);
删除表结构
语法:alter table 表名 drop 字段;
MariaDB [计算机科学与技术]> alter table student drop 性别;
指定位置插入表结构
插入第一列、
语法:alter table 表名 add 字段 数据类型 first; # first第一
MariaDB [计算机科学与技术]> alter table student add ID int(10) first; #插入某列后面
插入某列后面
语法:alter table 表名 add 字段 数据类型 after字段; # after之后
MariaDB [计算机科学与技术]> alter table student add 性别 varchar(10) after 姓名;
效果图
注:默认添加字段就是在最后面,没有插入指定字段前面,是因为插入字段之后已经够用。
例子:我要在姓名之前插入字段,我就用after在编号之后就能完成效果。,
修改表名
MariaDB [计算机科学与技术]> alter table student rename student1;
注:没有修改数据库名称的命令,如果想换数据库名称就新建数据库然后导入数据。
Mariadb查询
查询库:
MariaDB [(none)]> show databases;
选中库
MariaDB [(none)]> use 计算机科学与技术;
查询表:
MariaDB [计算机科学与技术]> show tables;
效果图
注:dabases数据库,tables表,use使用。
指定查询
语法:select 内容 from 表;
MariaDB [计算机科学与技术]> select 姓名,学号 from student;
查询所有
MariaDB [计算机科学与技术]> select * from student;
单项筛选查询
语法:select * from 表名 where 字段 比较或值;
MariaDB [计算机科学与技术]> select * from student where 编号>1;
多项筛选查询
语法:select * from 表名 where 字段 比较或值 and 字段 比较或值;
效果图
注:使用and语句可以多重过滤可以。
小实验 (多重过滤查询)
多重过滤查询
MariaDB [计算机科学与技术]> update student set 性别="男" where 编号=1;
MariaDB [计算机科学与技术]> update student set 性别="男" where 编号=2;
MariaDB [计算机科学与技术]> update student set 性别="男" where 编号=3;
MariaDB [计算机科学与技术]> update student set 性别="女" where 编号=4;
MariaDB [计算机科学与技术]> select * from student where 编号>1 and 性别="男";
去重查询
语法:select distinct 字段from 表名;
MariaDB [计算机科学与技术]> insert into student values(NULL,5,"诸葛亮","男",20201104);
MariaDB [计算机科学与技术]> select * from student;
MariaDB [计算机科学与技术]> select distinct 姓名,学号 from student;
小实验(表内多项内容去重)
表内多项内容去重
MariaDB [计算机科学与技术]> select distinct 姓名,学号,性别 from student;
表内所有内容去重
MariaDB [计算机科学与技术]> select distinct * from student;
数据库备份
导出语法:
语法:mysqldump -u用户 -p -B 迁移的库名>导出名称.sql #导出
mysqldump -uroot -proot -B 计算机科学与技术> /root/计算机科学与技术.sql
导入语法:
导入语法:mysql -uroot -proot < 导入名称.sql #导入
[root@network ~]# mysql -uroot -proot < /root/计算机科学与技术.sql
检查数据
注:保存快照,学习进阶语法。
MariaDB总结
数据库基本操作:增>删>改>查
数据库结构知识:库>表>表结构>内容
Windows创建文件夹>创建文件>插入数据
扩展
扩展:为什么没有选选中库,就不能修改表中的数据,或添加。就像上面图片一样,你没有进入计算机科学与技术的文件夹,你根本找不到student这个文件。
导入数据库
语法:mysqldump -u用户 -p -B 迁移的库名>导出名称.sql
导出数据库
语法:mysql -uroot -proot < 导入名称.sql