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爱好者指正,小弟定当虚心受教!

相关推荐
尘浮生7 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
咖喱鱼蛋7 分钟前
Ubuntu安装Electron环境
linux·ubuntu·electron
ac.char11 分钟前
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
linux·ubuntu·npm
肖永威16 分钟前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
tian2kong19 分钟前
Centos 7 修改YUM镜像源地址为阿里云镜像地址
linux·阿里云·centos
六月闻君20 分钟前
MySQL 报错:1137 - Can‘t reopen table
数据库·mysql
mengao123421 分钟前
centos 服务器 docker 使用代理
服务器·docker·centos
布鲁格若门23 分钟前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda
Eternal-Student28 分钟前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
SelectDB技术团队29 分钟前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris