文章目录

  • 前言
  • 一、数据库系统发展史
  • 二、数据库基本概念
  • 三、主流数据库介绍
  • 四、数据库类型
    • 1. 关系型数据库
    • 2. 非关系型数据库
    • 3. 时序数据库 TSD
  • 五、Mysql 数据库
    • 1. MySQL 简介
    • 2. 商业版与社区版
    • 3. 产品阵营
    • 4. Mysql 特点
    • 5. 源码编译安装
    • 6. Mysql 初步使用
      • (1) MySQL 常用数据类型
      • (2) 查看当前服务器中的数据库
      • (3) 查看数据库中包含的表
      • (4) 查看表的结构
      • (4) 创建新的数据库
      • (5) 创建新的表
      • (6) 删除指定的数据表
      • (7) 删除指定的数据库

前言

一、数据库系统发展史

第一代数据库

  • 自 20 世纪 60 年代起,第一代数据库系统问世
  • 是层次模型与网状模型的数据库系统
  • 为统—管理和共享数据提供了有力的支撑

第二代数据库

  • 20 世纪 70 年代初,第二代数据库——关系型数据库开始出现
  • 20 世纪 80 年代初,IBM 公司的关系型数据库系统 DB2 问世,开始逐步取代层次与网状模型的数据库,成为行业主流
  • 到目前为止,关系型数据库系统仍占领数据库应用的主要地位

第三代数据库

  • 自 20 世纪 80 年代开始,适应不同领域的新型数据库系统不断涌现
  • 面向对象的数据库系统,实用性强、适应面广
  • 20 世纪 90 年代后期,形成了多种数据库系统共同支撑应用的局面
  • —些新的元素被添加进主流数据库系统中
    例如:Oracle 支持的 < 关系 - 对象 > 数据库模型

二、数据库基本概念

数据(data)

  • 描述事物的符号记录
  • 包括数字,文字、图形、图像、声音、档案记录等
  • 如下表所示:每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性
姓名 年龄 存款
小红 19 2000
小刘 20 5000

表(table)

  • 将不同的记录组织在一起用来存储具体数据

数据库(database)

  • 表的集合,是存储数据的仓库
  • 以一定的组织方式存储的相互有关的数据集合

数据库管理系统(DBMS)

  数据库管理系统(DatabaseManagementSystem,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。

DBMS 的工作模式如下

接受应用程序的数据请求和处理请求
将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
实现对数据库的操作
从数据库的操作中接受查询结果
对查询结果进行处理(格式转换)
将处理结果返回给用户

DBMS主要包括以下功能

数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
数据操纵功能:包括数据查询统计和数据更新两个方面。
数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。
通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行数据交换。

数据库系统(DBS)

  • 是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
  • 用户可以通过 DBMS 或应用程序操作数据库

三、主流数据库介绍

SQL Server(微软公司产品)

  • 面向 Windows 操作系统
  • 简单、易用

Oracle(甲骨文公司产品)

  • 面向所有主流平台
  • 安全、完善,操作复杂

DB2(IBM 公司产品)

  • 面向所有主流平台
  • 大型、安全、完善

MySQL(甲骨文公司收购)

  • 免费、开源、体积小

PostgreSQL(PostgreSQL Global Development Group维护)

  • 面向所有主流平台
  • 免费、开源、功能强大

GaussDB(华为公司产品)

  • 涵盖关系型、非关系型数据库服务
  • 可靠性、扩展性、备份恢复

OceanBase(蚂蚁集团产品)

  • 金融级分布式关系数据库
  • 数据强一致、高可用、高性能、在线扩展、高度兼容 SQL 标准和主流关系数据库、低成本

四、数据库类型

1. 关系型数据库

关系型数据库是基于关系模型的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
关系模型可用简单的 “实体 - 关系”(E - R) 图来表示
E - R 图中包含了实体(数据对象)、关系和属性三个要素
所有实体及实体之间联系的集合构成了一个关系数据库

实体

  • 也称为实例,对应现实世界中可区别于其他对象的 “事件” 或 “事务”
  • 如上图的银行客户、银行账户

属性

  • 实体所具有的某一特性,一个实体可以有多个属性
  • 如上图的 “银行客户” 实体集中的每个实体均具有姓名、住址、电话等属性

联系

  • 实体集之间的对应关系称为联系,也称为关系
  • 如银行客户和银行账户之间存在 “储蓄” 的关系

二维数据表

关系数据库的存储结构是二维表格
在每个二维表中:

  • 每一行称为一条记录,用来描述一个对象的信息
  • 每一列称为一个字段,用来描述对象的一个属性

主键

  • 数据表中的每行记录都必须是唯一的,不允许出现完全相同的记录,通过定义主键(主关键字,Promary Key)可以保证记录(实体)的唯一性
  • 键,即关键字,它是关系模型中一个非常重要的元素
  • 主键唯一标识表中的行数据,一个主键值对应一行数据,主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)
  • 一个表只能有一个主键
  • 如果一个属性集能唯一地标识表的一行而又不含有多余的属性,那么这个属性集称为候选键
  • 表中可以有多个候选键,但是只能有一个候选键可以选做表的主键,所有其他候选键称为备用键
  • 例如下图,“编号”、“姓名”、“性别”、“年龄”、“专业编号” 都可以说是候选键,而可以定义 “编号” 为主键
编号 姓名 性别 年龄 专业编号
1 徐一 21 1
2 徐二 22 3
3 徐三 18 3
4 徐四 18 5

外键

  • 一个关系数据库通常包括多个表,通过外键(Foreign Key)可以使这些表关联起来
  • 外键是用于建立和加强两个表数据之间的链接的一列或多列,通过表中主键值得一列或多列添加到另一个表中,可创建两个表之间的链接,这个列就称为第二个表的外键
  • 如下表所示,字段 “专业编号” 是该表的主键,而上表中也有一个相同的字段 “专业编号”,则该字段称为外键
专业编号 专业
1 云计算运维
3 大数据开发
5 人工智能
  • 主键的表称之为 “主表”,外键的表称之为 "从表”
  • 主表和从表总是成对出现的,相互之间以 “外键” 形成关联

数据完整性规则

为了维护数据库中的数据与现实世界的一致性,关系数据库的数据与更新操作必须遵循下列四类完整性规则

  • 实体完整性规则
  • 域完整性规则
  • 引用完整性规则
  • 用户定义的完整性规则

数据完整性

关系型数据库的应用

关系型数据库 应用举例
Oracle、MySQL 12306 用户信息系统
SQL Server、Sybase 淘宝账号系统
Informix、access 联通手机号信息系统
DB2、FoxPRO 银行用户账号系统
PostgreSQL 网站用户信息系统

2. 非关系型数据库

简介

  • 非关系数据库也被称为 NoSQL(Not Only SQL)
  • 存储数据不以关系模型为依据,不需要固定的表格式
  • 常用的非关系数据库有:Redis、mongoDB 等

非关系数据库的优点

  • 数据库可高并发读写
  • 对海量数据高效率存储与访问
  • 数据库具有高扩展性与高可用性

对比关系型数据库

优势

  • 成本:nosql 数据库简单易部署,基本都是开源软件,不需要像使用 oracle 那样花费大量成本购买使用,相比关系型数据库价格便宜
  • 查询速度:nosql 数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及 nosql 数据库
  • 存储数据的格式:nosql 的存储格式是 key-value 形式、文档形式、图片形式等等,所以可以存储基础类型以及对象是集合等各种格式,而关系型数据库则只支持基础类型
  • 扩展性:关系型数据库有类似 join 这样的多表查询机制的限制导致扩展很难

劣势

  • 维护的工具和资料有限,因为 nosql 是属于新的技术,而关系型数据库出现已有十几年时间
  • 不提供对 sql 语句的支持,如果不支持 sql 这样的工业标准,将产生一定程度的学习和使用成本
  • 不提供关系型数据库对事物的处理

3. 时序数据库 TSD

  基于时间序列数据的特点,关系型数据库无法满足对时间序列数据的有效存储与处理,因此迫切需要一种专门针对时间序列数据来做优化的数据库系统,即时间序列数据库。
  时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

五、Mysql 数据库

1. MySQL 简介

  • MySQL 是一个真正的多线程、多用户的 SQL 数据库服务,凭借其高性能、高可靠和易于使用的特点,成为服务器领域中最受欢迎的开源数据库系统
  • 在 2008 年以前,MySQL 项目由 MySQL AB 公司进行开发、发布和支持,之后历经 Sun 公司收购 MySQL,Oracle 公司收购 Sun 公司的过程,目前 MySQL 项目由 Oracle 公司负责运营和维护

2. 商业版与社区版

  • MySQL 商业版是由 MySQL AB 公司负责开发与维护,需要付费才能使用
  • MySQL 社区版是由分散在世界各地的 MySQL 开发者、爱好者一起开发与维护,可以免费使用
  • 两者区别
    • 商业版组织管理与测试环节更加严格,会比社区版更稳定
    • 商业版不遵守 GPL,社区版遵从 GPL 可以免费使用
    • 商业版可获得 7*24 小时的服务,社区版则没有

3. 产品阵营

  • 第一阵营:5.0-5.1 阵营,可说是早期产品的延续
  • 第二阵营:5.4-5.7 阵营,整合了 MySQL AB 公司、社区和第三方公司开发的存储引擎,从而提高性能
  • 第三阵营:6.0-7.1 阵营,就是 MySQL Cluster 版本,为适应新时代对数据库的集群需求而开发

4. Mysql 特点

  • 性能卓越、服务稳定
  • 开源、无版权限制、成本低
  • 多线程、多用户
  • 基于 C/S 架构
  • 安全可靠

5. 源码编译安装

这里使用脚本一键执行,安装包放在我的云主机上

#!/bin/bash
#一键安装 mysql-5.7.17
#联网下载两个源码包,包在我的云主机上
#安装包下载在 /data 目录
#编译安装需较长时间,请耐心等待mkdir /data
wget http://101.34.22.188/mysql-5.7.17/boost_1_59_0.tar.gz -P /data
wget http://101.34.22.188/mysql-5.7.17/mysql-5.7.17.tar.gz -P /datasystemctl stop firewalld && systemctl disable firewalld
setenforce 0
ntpdate ntp1.aliyun.com
tar zxvf /data/mysql-5.7.17.tar.gz -C /opt
tar zxvf /data/boost_1_59_0.tar.gz -C /usr/local
mv /usr/local/boost_1_59_0 /usr/local/boost
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make git perl expat-devel pcre-devel pcre
useradd -s /sbin/nologin mysql
cd /opt/mysql-5.7.17/cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1cd /opt/mysql-5.7.17/
make -j 4 && make install
echo > /etc/my.cnfcat > /etc/my.cnf<<EOF
[client]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
EOFchown -R mysql.mysql /usr/local/mysql/
chown mysql.mysql /etc/my.cnf
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profilecd /usr/local/mysql/bin/
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/datacp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload && systemctl start mysqld && systemctl enable mysqld
ln -s /usr/local/mysql/bin/mysql /usr/local/sbin/pgrep "mysqld" &> /dev/null
if [ $? -eq 0 ];thenecho -e "\033[32mmysqld服务运行正常\033[0m"
elseecho -e "\033[31mmysqld服务运行异常,请检查\033[0m"
fi
sleep 2
echo ' '
echo -e "\033[32mMySQL 没有设置密码,执行 mysql 命令登录\033[0m"

修改密码

mysqladmin -u root -p password "123456"
# 不需要登录,直接敲回车

授权远程登录

# 需要登录
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

6. Mysql 初步使用

数据库 ----> 数据表 -----> 行(记录):用来描述一个对象的信息
数据库 ----> 数据表 -----> 列(字段):用来描述对象的一个属性

(1) MySQL 常用数据类型

mysql 常用数据类型很多,这里列举几种:

int:整型
float:单精度浮点 4 字节 32 位
double:双精度浮点 8 字节 64 位
char:固定长度的字符类型
varchar:可变长度的字符类型
text:文本
image:图片
decimal(5,2): 5 个有效长度数字,小数点后面有 2 位

MySQL 数据类型

(2) 查看当前服务器中的数据库

show databases;

(3) 查看数据库中包含的表

use <数据库名>;    #切换数据库
show tables;    #查看所有表
#可以合写
show tables in <数据库名>;


  MySQL 数据库的数据文件存放在 /usr/local/mysql/data 目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为:

.frm
.MYD
.MYI

(4) 查看表的结构

use <数据库名>;
describe <数据库名>.<表名>;
#describe 可缩写
desc <表名>;

(4) 创建新的数据库

create database <数据库名>;

(5) 创建新的表

  • create table 表名 (字段1 数据类型,字段2 数据类型,[…],parmary key (主键名));
  • 主键一般选择能代表唯一性的字段,不允许取空值(NULL),一个表只能有一个主键
CREATE TABLE web_demo (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT '',PRIMARY KEY (id));

(6) 删除指定的数据表

drop table <数据库名>.<表名>;
#不 use 进入库中需加上数据库名

(7) 删除指定的数据库

drop database <数据库名>;

数据库简介与 Mysql 服务基础相关推荐

  1. MySQL基础(二)---MySQL服务基础与使用 MySQL 数据库

    文章目录 前言 一.MySQL 服务基础 1.简介 2.商业版与社区版 3.产品阵营 4.编译安装 二.使用MySQL 1.查看数据库信息 2.查看数据库中的表信息 3.显示数据表的结构(字段) 4. ...

  2. 任意电脑登录MySQL_使用批处理命令注册运行mysql数据库,无需注册mysql服务,可以在任意电脑登录使用...

    使用批处理命令初始化和开启mysql服务,移植数据库之后可以直接运行访问,对于学习数据库的人来说特别的方便哦. 我们可以从mysql官网下载官方社区版本的mysql: 这里使用之前下载的8.0.15来 ...

  3. 【数据库基础】01_数据库概述与MySQL语法基础

    1. 数据库应用 1.1 概述 1.1.1 什么是数据库 简而言之,就是存储数据,管理数据的仓库. 数据库的好处 持久化数据到本地. 可以实现结构化查询,方便管理. DB:数据库(database): ...

  4. 将数据导入到mysql_06955.10.2如何将CM的外部PostgreSQL数据库迁移至MySQL服务

    作者:朱超杰 文档编写目的 在前面的文章<如何将CM内嵌PostgreSQL服务迁移至外部PostgreSQL服务>介绍了将CM内嵌的PostgreSQL迁移至外部PostgreSQL,因 ...

  5. ef 数据迁移mysql_07116.3.0如何将CM的外部PostgreSQL数据库迁移至MySQL服务

    文档编写目的 在前面的文章<6.3.0-如何将CM内嵌PostgreSQL服务迁移至外部PostgreSQL服务>介绍了将CM内嵌的PostgreSQL迁移至外部PostgreSQL,因为 ...

  6. MySQL 服务基础

    目录 引言 一.MySQL 的编译安装 二.使用 MySQL 数据库 1. 常见的数据类型 2. 查看数据库结构 3. SQL 语言 4. 创建及删除库和表 1. 创建新的数据库 2. 创建新的表 3 ...

  7. linux mysql服务基础操作(二)

    本文转自 jin626889 51CTO博客,原文链接:http://blog.51cto.com/zuoshou/1575633,如需转载请自行联系原作者

  8. MySQL学习笔记01【数据库概念、MySQL安装与使用】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  9. 数据库原理及MySQL应用 | 数据库安全加固

    数据库安全至关重要,可从多方面对数据库进行加固. 数据库安全怎么强调都不过分,可以从以下方面对数据库进行加固,让它更安全. 01.操作系统级别 可从以下七方面实现操作系统级别的安全加固. 1. 使用数 ...

最新文章

  1. javaSE基础知识 1.5整数类型
  2. golang的临时对象池sync.Pool
  3. 【虚拟主机篇】asp页面实现301重定向方法
  4. 多个表添加几个相同的字段
  5. keil写文字怎么会乱码_主持稿怎么写才会吸引人
  6. 3.spring boot Controller获取请求参数的值
  7. android按钮变输入框动画,AnimShopButton 仿饿了么加入购物车旋转控件 - 自带闪转腾挪动画 的按钮。自带海量可定制 UI 属性。在 Re @codeKK Android开源站...
  8. python字符串比较大小_Python 比较两个字符串大小
  9. DOS 下修改ip 地址
  10. 聚类——模糊c均值聚类
  11. VOT目标路径可视化
  12. swift lazy 线程不安全
  13. 拼多多微信页面h5 html,拼多多(7pdd)微信跳转h5页面打开app跳转任意url关注技术weixin://dl/business/?ticket...
  14. Jupyter Notebook连接服务器失败
  15. ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置
  16. 懂的android基础如何面试月薪过万
  17. NewTek LightWave 3D 2018 破解版
  18. C程序设计语言第二版·新版,C程序设计语言(第2版·新版) PDF扫描版[19MB]
  19. 获取当前日期是一年中的第几周
  20. python程序写诗_万能的 LSTM:可以写代码可以写诗还能做文本情感分析

热门文章

  1. 插值法位同步 gardner算法
  2. 弹窗广告关不掉?工信部:用这个方法举报!
  3. 将阿拉伯数字转换为中文大写数字 —— pyhton实现
  4. Windows CMD命令行进行日期计算及本件备份
  5. leetcode 刷题ing
  6. 计算机图形学【GAMES-101】13、光场、颜色与感知
  7. gem5 GPGPU-Sim 安装踩坑笔记
  8. HDU 4408 Minimum Spanning Tree 最小生成树计数
  9. InfoSphere Guardium应用程序用户翻译
  10. SpringBoot接入支付宝