MySQL数据库笔记

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;

 

 

posted @ 2019-02-26 17:35  New_Journey  阅读(191)  评论(0编辑  收藏  举报