数据库管理系统介绍及基础应用

数据库管理系统介绍及基础应用

一、数据库管理系统的介绍

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

043989f2a3a3a41112bdf73b9aeeaf6e

三、二进制安装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):解释描述某一列的意思
  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值