2.1 MySQL基础与安装

数据库管理系统


数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。

  • 功能

数据库管理系统(DBMS)的基本功能有以下几项:

  1. 数据定义功能:DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中
  2. 数据存取功能:DBMS提供数据操纵语言(DML),实现对数据库数据的基本存取操作:检索,插入,修改和删除
  3. 数据库运行管理功能:DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效
  4. 数据库的建立和维护功能:包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能
  5. 数据库的传输:DBMS提供处理数据的传输,实现用户程序与DBMS之间的通信,通常与操作系统协调完成
  • 概念

关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名

元组:可以理解为二维表中的一行,在数据库中经常被称为记录

属性:可以理解为二维表中的一列,在数据库中经常被称为字段

域:属性的取值范围,也就是数据库中某一列的取值限制

关键字:一组可以唯一标识元组的属性。数据库中常称为主键,由一个或多个列组成

关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,…,属性N)。在数据库中通常称为表结构

  • 完整性

实体(行)完整性

体完整性指表中行的完整性。要求表中的所有行都有唯一的标识符,称为主关键字。主关键字是否可以修改,或整个列是否可以被删除,取决于主关键字与其他表之间要求的完整性

域(列)完整性

 域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值.

参考完整性

参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是 NULL

  • 约束

  1. 主键约束(Primay Key Coustraint) 唯一性,非空性
  2. 唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个
  3. 默认约束 (Default Counstraint) 该数据的默认值
  4. 外键约束 (Foreign Key Counstraint) 需要建立两表间的关系
  5. 非空约束(Not Null Counstraint):设置非空约束,该字段不能为空
  • 关系型数据库优缺点

关系型数据库的优势

  1. 保持数据的一致性(事务处理)
  2. 由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)
  3. 可以进行Join等复杂查询

其中能够保持数据的一致性是关系型数据库的最大优势

关系型数据库的不足

  1. 不擅长的处理
  2. 大量数据的写入处理
  3. 为有数据更新的表做索引或表结构(schema)变更
  4. 字段不固定时应用
  5. 对简单查询需要快速返回结果的处理
  • 范式

第一范式(1NF)

数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性

第二范式(2NF)

满足1NF后要求表中的所有列,都必需依赖于主键,而不能有 任何一列与主键没有关系(一个表只描述一件事情)

第三范式(3NF)

满足2NF后,要求表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)

MariaDB的安装

  • yum源安装

配置 yum 仓库

[root@CentOS75 ~]# cat /etc/yum.repos.d/MariaDB.repo 
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

 检查 yum 仓库,成功后安装 mariadb-server

[root@CentOS74 ~]# yum repolist 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                                                    repo name                                                                                   status
base                                                                                       base                                                                                         9,591
epel                                                                                       epel                                                                                        12,647
mariadb                                                                                    MariaDB          #确认配置成功                                                                   68
repolist: 22,306
[root@CentOS74 ~]# yum install mariadb-server.x86_64 -y
  • 二进制安装

首先确保主机的状态,保证该主机当前没有安装 MySQL 数据库

MariaDB 的官网上下载需要版本的二进制安装包,并根据官方文档说明进行安装

  • 以 mariadb-10.2.17 为例:

安装

创建 mysql 用户

[root@CentOS75 ~]# useradd -d /data/mysql -r -s /sbin/nologin -m mysql

将下载好的 MariaDB 打包文件解压至 /usr/local/ 目录下

[root@CentOS75 ~]# tar xvfp mariadb-10.2.17-linux-glibc_214-x86_64.tar.gz -C /usr/local/

修改解压后文件的属性,并创建软连接

[root@CentOS75 ~]# chown -R root:root /usr/local/mariadb-10.2.17-linux-glibc_214-x86_64/
[root@CentOS75 ~]# ln -s /usr/local/mariadb-10.2.17-linux-glibc_214-x86_64/ /usr/local/mysql

将 /usr/local/mysql/bin 路径保存至 PATH 变量中

echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile.d/env.sh

进入 /usr/local/mysql 目录,执行安装脚本

[root@CentOS75 mysql]# ./scripts/mysql_install_db --datadir=数据存放目录 --user=执行身份

配置

参考 /usr/local/mysql/support-files 目录中的配置文件模板,选择合适的模板并生成配置文件

[root@CentOS75 support-files]# cp my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y

修改 /etc/my.cnf 配置文件,在 [mysqld] 配置段中添加 datadir 选项

datadir         = /data/mysql

参考 /usr/local/mysql/support-files 目录中的启动脚本 mysql.server ,在 /etc/init.d/ 生成启动脚本

[root@CentOS75 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@CentOS75 ~]# chkconfig --add mysqld
[root@CentOS75 ~]#⮀⮀chkconfig --list mysqld 

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

启动 mariadb-server

[root@CentOS75 ~]# systemctl start mysqld
[root@CentOS75 ~]# ss -ntl
State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
LISTEN      0      128                                                                *:22                                                                             *:*                  
LISTEN      0      100                                                        127.0.0.1:25                                                                             *:*                  
LISTEN      0      80                                                                :::3306                                                                          :::*                  
LISTEN      0      128                                                               :::22                                                                            :::*                  
LISTEN      0      100                                                              ::1:25                                                                            :::*                  

执行 mysql_secure_installation 脚本,配置 mariadb 的基础安全内容

mysql客户端


  • 客户端命令

命令快捷命令说明
?\?“help”的同义词
clear\c清除当前输入语句
connect\r重新连接到服务器。可选的参数是 db 和 host
delimiter\dSET 语句定界符
edit\e编辑命令
ego\G向 MySQL 服务器发送命令,垂直显示结果
exit\q退出 mysql。与"quit"相同
go\g发送命令到MySQL服务器
help\h显示此帮助
nopager\n禁用 pager,打印到 STDOUT
notee\t不写入外部文件
pager\P使用 pager
print\p打印当前命令
prompt\R改MySQL提示符
quit\q退出mysql
rehash\#重建 hash
source\.执行SQL脚本文件。将文件名作为参数
status\s从服务器获取状态信息
system\!执行系统 shell 命令
tee\T将所有输出重定向值外部指定文件中
use\u使用另一个数据库。将数据库名称作为参数
charset\C切换到另一字符集
warnings\W每个语句之后显示警告
nowarning\w在每个语句之后不显示警告

选项

-A, --no-auto-rehash  禁止补全
-u, --user=  用户名,默认为root
-h, --host=  服务器主机,默认为localhost
-p, --passowrd=  用户密码,建议使用-p,默认为空密码
-P, --port=  服务器端口
-S, --socket=  指定连接socket文件路径
-D, --database=  指定默认数据库
-C, --compress  启用压缩
-e “SQL“  执行SQL命令
-V, --version  显示版本
-v --verbose  显示详细信息
--print-defaults  获取程序默认使用的配置

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值