MariaDB数据库服务器

目录

一、什么是数据库?

二、什么是关系型数据库?

三、数据库字符集和排序规则是什么?

四、常用数据类型

五、Mariadb数据库相关配置案例


一、什么是数据库?

数据库(DB)是以一定方式长期存储在计算机硬盘内,能与多个用户共享,具有尽可能小的冗余度、与应用程序彼此独立的数据的集合。简单来说可以将其看做是用来存储信息文件的文件柜,用户可以将自己的信息文件存储到柜子中,并可以对柜中的信息文件进行增、删、改、查等操作。

二、什么是关系型数据库?

所谓关系型数据库,指的是用户的数据信息是以二维表格的形式来表现的。在二维表格中每一行代表一条记录,用来描述对象的信息;每一列称为一个字段,用来描述对象的某个属性。主流的关系型数据库管理系统软件有Oracle、SQL Server、MySql、Access等。

三、数据库字符集和排序规则是什么?

MariaDB(mysql)数据库在存储用户数据信息时,默认使用的字符集为Iatinl。当用户存储的数据信息是中文字符时,有可能因为此字符集不支持中文字符没有相对应的编码号,导致用户存的中文字符以错误数值存放到数据库中。当用户通过网站查找数据库中的用户数据时,此时由于其使用的字符集没有中文字符对应的编码号,就会以错误的字符形式展现出来,导致用户查询到的数据是一堆乱码。为解决乱码问题可以修改数据库服务器使用的默认字符集为UTF-8。每个字符集都对应的有不同字符之前大小的比较的排序规则。utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,不区分大小写。utf8mb4_general_ci 没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致,不区分大小写。

字符集的设定不仅影响着存储,还会影响客户端和数据库服务器的通信,关于数据编码,mqsql中涉及到下面几个问题:

1、客户端发过来的数据使用什么字符集编码的?

答:character_set_client ,这是用户告诉服务器,客户端发过来的SQL语句是用的什么字符集,要和客户端发出去的字节流采用的编码集一致,如果是shell,那么就是和shell的编码集一致,中文windows的cmd就是gbk。但是对于使用_utf8'xxx'标记的字符,则用标记的字符集解码。

2、接收到数据之后,应该用什么编码格式编码之后再将数据插入到mysql server中?

答:character_set_connection ,MySQL server 接收到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集,一般就是所操作的表对应的编码集。

3、执行查询之后,查询出来的结果应该用什么编码集编码之后再返回?

答:character_set_results , MySQL将存储的数据转换成character_set_results中设定的字符集发送给用户,客户端获取到的结果就是以这种形式编码的。

4、数据库的各种表的数据,应该用什么字符集编码,以及它们用什么排序?

答:character_set_server决定了服务器的默认编码,character_set_database决定了新建数据库的默认字符集,而数据库的字符集又决定了新建表的默认字符集,而表的字符集又决定了字段的默认字符集,如果没有通过DEFAULT CHARACTER SET=xxx来改变表的字符集,则新表就使用character_set_database指定的字符集。

5.查询语句的字符串比较时,应该在哪一个标准里面来比较,比如:'Mueller' = 'Müller'是为真还是假?

答:collation_connection变量制定了比较的规则。collation_connection的值得形式如下:字符集_语言_ci(大小不写敏感) 或字符集_语言_cs(大小写敏感),像中文这样的,没有大小写,所以只能是ci,比如set collatioin_connection=gbk_chinese_ci。就是设置成中文字典的排序规则。除了按具体语言排序,还可以按照二进制的位置排序,比如utf8_bin。

character_set_connection和collatioin_connection是一体的,设置了character_set_connection之后,collation_connection会跟着变成对应的默认排序规则,反之亦然。如果要显示的设置排序规则,可以用 SET NAMES 'charset_name' COLLATE 'collation_name' 。

6.数据库的各种元数据,包括表名、数据库名、密码、用户名、以及comment等,用什么字符集表示?

答:character_set_system表示元数据的字符集,默认就是utf8,而且不要去更改它,否则,因为类似于用户名密码这种东西,可能用各种奇葩的字符去表示,只有utf8能够容纳它们。如果变成了别的字符集,那么用户名和密码就不能用你想要的字符去表示了。

四、常用数据类型

*char和varchar的区别:

1.定义一个char[10]和varchar[10],如果存进去的是'abcd',那么char所占的长度依然为10,除了字符'abcd'外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。

2.char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

3.char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

五、Mariadb 数据库相关配置案例

Server端:

1、安装Mariadb相关软件包

2、开启mariadb数据库服务,并设置开机自启

3、Mariadb服务安装后默认采用无密码登录数据库,为了安全性可以执行mysql_secure_installation 命令来进行安全设置。

4、登到mariadb,查看mariadb服务器默认设置的字符集与其排列规则。

5、修改Mariadb使用的默认字符集和排列规则,改为utf8字符集(此字符集支持中文),避免用户在查询数据时遇到中文出现乱码。

5、为Mariadb数据库管理系统创建一个专用的数据库管理账户,并分配合理的权限。以满足工作者的需求。

创建用户:

*此处只需创建个shanyue用户账户就行了,其它的操作只是为了学习。

授权:

6、防火墙Mariadb服务端口放行流量,允许远程客户登录到数据库。

7、切换到客户端用root用户使用"root"密码远程登录Mariadb服务器,看是否成功。

8、新建test数据库并创建表单mybook,然后进行表单的初始化即定义表单存储数据内容的结构字段。

增:

9、给mybook表单添加三个数据记录。

删:

10、删除test数据库下mybook表单中带有Linux字段的记录。

改:

11、将mybook表单中所有书籍的页数都改为180页,并将HCIP书籍的价格降到110元。

查:

12、查询mybook表单中价格小于200的所有书籍和大于200的书籍。

13、备份test数据库将其下的所有内容导出为一个文件保存到root家目录下。

14、登录到数据库管理系统将test数据库给删除,然后通过test数据库的备份文件恢复数据库内容。

15、登录到Mariadb数据库管理系统,查看test数据库的内容是否恢复成功。

@声明:"山月润无声"博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

相关推荐
汐汐咯几秒前
linux上安装minconda
linux·运维·服务器
老坛程序员4 分钟前
Mosquitto:MQTT Broker入门与分布式部署最佳实践
分布式·物联网·网络协议·iot
小波小波轩然大波24 分钟前
Linux服务器配置(mariadb服务器)
linux·服务器·mariadb
tingting011927 分钟前
mysql 8.4.2 备份脚本
android·数据库·mysql
忧郁的橙子.27 分钟前
k8s 主节点重启后 从节点 get 异常
linux·运维·服务器
Raymond运维36 分钟前
Apache介绍和安装
linux·运维·apache
铜峰叠翠1 小时前
Redis安装配置
数据库·redis·缓存
Lbwnb丶1 小时前
JUnit 4 + Spring Boot 测试依赖
数据库·spring boot·junit
大筒木老辈子1 小时前
MySQL笔记---表的约束
数据库·笔记·mysql
半梦半醒*1 小时前
nginx的访问控制、用户认证、https
linux·运维·服务器·nginx·https·centos