MySQL/Mariadb:
数据结构模型:层次模型、网状结构、关系模型(二维关系:row(行),column(列))
关系型数据库的一种开源实现;
数据库管理系统:DBMS
补充材料:RDMBS设计范式基础概念
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,越高的范式数据库冗余越小。
1.第一范式(1NF)
指在关系型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项;简而言之,第一范式就是无重复的域。(列是不可分割的,原子性,例姓名和年龄只能分两列,而不能放在一列里)
2.第二范式(2NF)
第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式,简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。(行是有唯一标识的,不能有两行数据是完全一样的)
3.第三范式(3NF)
第三范式就是第二范式的一个子集,即满足第三范式就必须满足第二范式,简而言之,第三范式要求一个关系中不包含已在其他关系已包含的非主键信息。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足第二范式的基础上,任何非主属性不得传递依赖于主属性。(不允许某个字段在多张表中同时出现)多张表中不能存储相同的非主属性字段
关系型数据库管理系统必要组件:
事务: 多个写操作被当作一个整体对待。A:原子性 C:一致性 I:隔离性 D:持久性
SQL:Structure Query Language 结构化查询语言;
数据存储协议:应用层协议,C/S
S:server,监听于套接字,接受并处理客户端应用请求;
C:Client 程序接口(CLI GUI)
应用编程接口:ODBC: Open DataBase Connection
基础概念:
约束:constraint,向数据表提供的数据要遵守的限制;
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,NOT NULL;一个表只能存在一个。
唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,允许为NULL;一个表可以存在多个。
外键: 一个表中的某字段可填入数据取决于另一个表的主键已有的数据;检查性。
索引: 将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储。
关系运算:
选择:挑选出符合条件的行(部分)
投影:挑选出需要的字段
数据抽象:
物理层:决定数据的存储格式,即RDBMS在磁盘上如何组织文件
逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系
视图层:描述DB中的部分数据
MySQL/Mariadb:插件式存储引擎,单进程,多线程。
多线程:连接线程、守护线程(守护数据在内存和磁盘之间的写入等)
配置文件:集中式的配置能够为MySQL的各应用程序提供配置信息。
[mysqld]
[mysqld_safe]
[mysqld_multi] 配置文件支持多种写法,例如:skip-name-resolve或skip_name_resolve
[server]
[mysql]
[mysqldump]
[client]
配置文件查找路径: /etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL-HOME/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
安装方法: 1.rpm 2.展开可用 3.源码
安装后的设定:为所有root用户设定密码
三种改密方式:1.set password
2.update mysql.user set password=password('your_pass') where cluase
3.mysqladmin
客户端程序:mysql交互式的CLI工具;
mysqldump:备份工具,基于mysql协议向mysqld发起查询请求并将查得的数据换成insert等写操作语句保存在文本文件中;
mysqladmin:基于mysql协议管理mysqld;
mysqlimport:数据导入工具
非客户端类管理工具: myisamchk myisampack
如何获取程序默认配置:
1.mysql --print -defaults 2.mysqld --print --defaults
客户端类应用程序的可用选项:
-u, --user=
-h, --host=
-p, --password
-P, --port=
-S, --socket=
-D, --database=
-C, --compress=
mysql -e "SQL语句" (无需进入数据库) 例如: mysql -uroot -pyourpassword -e "show databases";
mysql的使用模式: 交互式模式(SQL语句; h, help)
脚本模式: #mysql -uUSERNAME -p PASSWORD < /path/from/somefile.sql 或 mysql> source /path/from/somefile.sql
获取可用参数列表: mysqld --help --verbose
获取运行中的mysql进程使用各参数及其值:
mysql> show global variables;
mysql> show session variables;
修改服务器变量的值:
mysql> help set;
全局: mysql> set global system_var_name=value
mysql> set @@global system_var_name=value
会话:mysql> set [session] system_var_name=value
mysql> set @@[session] system_var_name=value
状态变量: 用于保存mysqld运行中的统计数据的变量;
mysql> show global status;
mysql> show [session] status;