文章目录
数据库管理系统介绍及基础应用
一、数据库管理系统的介绍
1.介绍
数据库管理系统。能高效的合理的有规划的存储和应用海量数据
DBA:database administrator 数据库管理工程师
互联网相关认证
- 网络相关:华为H3C hcip hcia
- 网络安全:cisp scisp cissp
- DBA:OCP OCM
- 等级保护:等保测评师
2.数据库的分类
-
关系型数据库
特点:数据结构严谨,存储数据严格格式要求,所有数据支持永久存储与备份,适用于海量数据的永久性保存
代表产品:MySQL,Oracle,PostgreSQL,sql server,Access,Sqlit -
非关系型数据库(NoSql)
nosql:not only sql
特点:数据类型灵活,支持数据存储格式非常的多,所有数据的运行和存储都在内存中,更高效,读写性能更好
代表产品:Redis,MongoDB,ElasticSearch,Memcache -
新型数据库
特点:数据库架构(分布式数据库架构)既包含了关系型数据库的功能,也具备非关系型数据库的组件
代表产品:TiDB,OceanBase,达梦,人大金仓,TdSQL
二、MySQL介绍
1.介绍
官网:MySQL.com
2.MySQL版本介绍
5.5 5.6 5.7
8.0
MySQL-ce #社区版
MySQL-ee #企业版
3.下载MySQL
三、二进制安装MySQL
1.安装方式
- yum:自动化简单
- 编译安装:过于繁琐
- 二进制安装:将编译安装好的文件打包
2.二进制安装MySQL
# 清空系统环境
yum autoremove mariadb*
# 准备MySQL安装环境
## 创建运行用户
useradd -M -s /sbin/nologin mysql
## 安装依赖环境
yum install libaio -y
## 解压二进制包
cd /usr/local
tar xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
ln -s /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64 mysql8
## 二进制包介绍
bin #存放mysql命令
mysql #连接数据库客户端工具
mysqladmin #数据库系统管理工具
mysqld #数据库服务端运行启动脚本
mysqld_safe #启动数据库
mysqldump #数据备份工具
run #存放内存运行文件
support-files #程序运行支持工具脚本
mysqld_multi.server #运行MySQL脚本
mysql-log-rotate #数据库日志切割脚本
mysql.server #最终使用的服务启动脚本
## 配置MySQL启动命令
export PATH="$PATH:/usr/local/mysql8/bin"
echo 'export PATH="$PATH:/usr/local/mysql8/bin"' >>/etc/profile
## 准备管理脚本
cp -rp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql-start
## 准备数据目录并授权
mkdir /data/mysql8 -p
chown -R mysql.mysql /data /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64
## 数据库的基础数据初始化
mysqld --initialize-insecure --basedir=/usr/local/mysql8 --datadir=/data/mysql8 --user mysql
--initialize-insecure #初始化数据库,没有密码
--basedir #MySQL的基础目录
--datadir #数据目录
echo $?
### 如果遇到初始化失败,重新初始化,要先清空数据目录
## 准备MySQL配置文件
cat >/etc/my.cnf<<'EOF'
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql8
datadir=/data/mysql8
EOF
##启动数据库
/etc/init.d/mysql-start start
start
stop
restart
status
四、数据库程序结构
C/S的服务架构的程序
服务端
- mysqld_safe:服务端总进程派生父进程
- mysqld:服务端数据库的线程调度器
- 工作线程:处理数据库事务的工作线程
- 预分配的内存结构:加载所需处理的数据页
客户端
- 作用:用于登录,操作服务端
- mysql:官方提供命令行客户端
- 第三方客户端工具:图形化,windows工具
navicat
workbench
sqlyog - api连接工具:
java:ODBC
python:py-mysql
php:php-mysqlnd php-pdo
远程授权
create user root@'%' identified with mysql_native_password by '123';
grant all on *.* to root@'%';
五、SQL语句
1.介绍
结构化查询语言。专门用于数据库操作的交互语句,规范数据库操作语句语法
2.SQL分类
- DCL语句:数据控制语句。
专门针对权限管理。grant revoke - DDL语句:数据定义语句。
专门针对资源创建和修改。create drop alter - DML语句:数据操作语句。
专门针对数据进行增删改。insert update delete - DQL语句:数据查询语句。
专门针对数据进行查询。show select - TCL语句:事务控制语句。
专门针对数据库事务做管理操作。begin rollback
3.数据库用户管理
数据库用户:用户名@‘可用域’
#用户操作语句
## 创建用户
create user 用户名@'可用域' identified by '密码';
create user 用户名@'可用域' identified with mysql_native_password by '密码';
## 创建本地登录用户的dms用户
create user dms@'localhost' identified by '123';
create user dms@'%' identified with mysql_native_password by '123';
## 注意:Mysql8的特点
密码的加密方式不一样:8以后版本 sha256加密算法
8以前版本 使用的mysql_native_password
## 修改加密方式
alter user dms@'%' identified with mysql_native_password by '123';
## 查看用户
select user,host,plugin from mysql.user;
##删除用户
drop user dms@'%';
##可用域范围
create user dms@'10.0.0.%' identified with mysql_native_password by '123';
4.DCL数据控制语句
grant:用于针对用户权限进行授权
#语法格式
grant 权限 on 库.表 to 用户名@'可用域';
## 注意:Mysql8以后不支持用grant修改用户密码
## 查看系统中可以管理的权限
show privileges;
create #创建资源的权限
drop #删除资源的权限
update #更新数据的权限
delete #删除资源的权限
alter #修改资源属性的权限
## 授予dms用户创库的权限
grant create,drop on *.* to dms@'%';
## 创建test的管理员用户
grant all on *.* to test@'%';
管理员用户默认没有授权权限
###创建有授权权限的test管理员用户、
grant all on *.* to test@'%' with grant option;
#grant只能授权不能回收权限
revoke:权限回收
#语法格式
revoke 权限 on 库.表 from 用户名@'可用域';
revoke create on *.* from michael@'%';
六、SQL语句基础概念内容
1.sql_mode
作用:用于限制sql语句的执行逻辑,为了让sql语句的数据处理时更加符合现实生活的常识
select @@sql_mode;
ONLY_FULL_GROUP_BY #限制group_by子句的应用
STRICT_TRANS_TABLES #限制数据库事务语句的执行
NO_ZERO_IN_DATE #日期格式不可以有0
NO_ZERO_DATE #年份不可以有0
ERROR_FOR_DIVISION_BY_ZERO #限制0不可以作为数学表达式中的除数
NO_ENGINE_SUBSTITUTION #每次创建表必须有默认的存储引擎类型的。如果没有则按照系统默认的创建
2.数据库中的存储引擎的分类
- 库:多个数据表构成一个库
- 表:多个数据行构成一个表。每一个表都有一个存储引擎,用于规划表中数据存储逻辑
- 数据行:多列数据构成一个数列行
show engines;
InnoDB
MyISAM
3.字符集
show charset;
以库为单位设定字符集
latin1 仅支持数字和字母。支持单个字符最大1字节。不支持汉字
utf8 支持汉字。支持最大长度3字节。不支持emoji
utf8mb4 支持emoji。支持最大长度4字节
4.排序规则
通过ASCII码对数据文本进行排序 与字符集对应
show collation;
***_general_ci #默认排序规则
***_bin #排序规则严谨性更高。区分大小写排序
5.数据类型
整型(数字类型)
tinyint #最大支持1字节的长度。8位 256。数字范围-128~127
int #最大支持4字节的长度。32位。支持10位数
bigint #最大支持8字节的长度。64位。支持20位数
浮点型(小数)
float 小数类型
decimal 小数类型
字符类型
char #固定长度字符类型.最长支持256个
char(16) #固定每条数据都会占用16个字符的空间。
varchar #可变长度的字符类型.最长支持65534个字符
varchar(16) #每条数据根据十几个数额外占用1个空间。
text #没有长度上限
时间格式类型
date #年月日
daytime #年月日 时分秒
timestamp #时间戳
枚举类型
enum
enum('男','女')
6.列的属性(列约束)
主键(primary key):非空,唯一。每个表中只可以有一个主键列
非空(not null):不能为空
唯一(unique);一列中不能有重复值
自增(auto increment):根据排序规则,自动填充下一个值
默认值(defalut):默认值
注释(comment):解释描述某一列的意思