《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·001【数据库基本概念、MySQL安装与介绍】

一、数据库基本概念

1、DB与DBMS

概念 解释
数据库(DB) 按照某些数据结构、专门存储和维护信息的容器
数据库管理系统(DBMS) 管理数据库的软件
数据字典 记录数据库中存放的各种对象的一些定义和辅助管理信息的数据,也称为元数据

2、数据库系统的构成

数据库系统的构成

3、数据管理发展过程

阶段 数据的管理者 特点
手工管理阶段 应用程序 数据不保存、不共享、不具有独立性
文件管理阶段 文件系统 数据可长期保存
数据共享性差、冗余度大、独立性差
数据库管理阶段 数据库系统 数据结构复杂、冗余小、易扩充、独立性较高,有统一的数据控制
  • 数据库系统是由计算机软件和硬件资源组成的系统。
  • 数据库系统实现了有组织地、动态地存储大量关联数据,便于多用户访问。
  • 数据库系统与文件系统的重要区别是,数据的充分分享、交叉访问、应用程序的高独立性。

4、数据库

特点

  • 数据结构化
  • 实现数据共享
  • 减少数据冗余
  • 数据独立性

数据库的类型以及特点

类型 举例 特点
网状型数据库 地图 采用记录类型为节点的网状数据模型
层次型数据库 族谱 采用层次模型(树形结构)
关系型数据库 二维表 采用二维表结构组织和管理数据,规定表内、表间的依赖关系

5、关系型数据库

关系型数据库是指一些相关的表和其他数据库对象的集合。

表格由行、列组成,在数据库中表格的相关概念有以下别名

表格中的项 数据库中的别名1 数据库中的别名2
属性 字段
记录 元祖
单元格 数据项 字段值

Tips:对数据库来说,关系就是表的同义词。

二、MySQL安装与卸载

可以参考这几篇博客

三、与MySQL相关的常用命令

命令 效果
C:XXX> net start mysql 启动MySQL的服务
C:XXX> net sop mysql 关闭MySQL的服务
C:XXX> mysql -uroot -p密码 本地登录
C:XXX> mysql -h具体ip -uroot -p密码
C:XXX> mysql --host=具体ip --user=root --password=密码
远程登录
mysql> select version(); 查看MySQL版本
mysql> quit
mysql> exit
mysql> \q
退出MySQL命令行
mysql> show databases; 显示当前MySQL服务器下、当前用户权限范围以内的所有数据库
mysql> create database 数据库名; 创建相应数据库
mysql> use 数据库名; 进入相应数据库
mysql> show tables; 显示当前数据库下的表
mysql> desc 表名;
mysql> describe 表名;
查看具体表结构
mysql> show engines; 查看MySQL服务实例支持的引擎
mysql> set default_storage_engine=MyISAM; “临时地”将MySQL“当前会话”的存储引擎设置为MyISAM

注:以C:XXX>开头代表在cmd的命令行的输入,以mysql>开头代表在MySQL的命令行的输入

四、MySQL相关概念

1、MySQL体系结构

一个由多个子系统构成的层次化系统,如下图所示
MySQL体系结构

2、MySQL存储引擎

MySQL最与众不同的特点——插件式存储引擎

插件式存储结构

  • 插件式存储结构是底层物理结构的实现,主要负责为数据库执行实际的IO操作
  • 插件式存储结构是基于表的而不是基于数据库的(不同的表可以有不同的引擎)
  • 插件式存储结构的核心是文件访问层的一个接口,任何人都可以利用这个API接口去建立新的文件访问机制

存储引擎

  • 存储引擎就是如何存储数据、如果为存储的数据建立索引、如何更新与查询数据等技术的实现方法
  • 存储引擎简而言之就是指表的类型
  • 数据库的存储引擎决定了表在计算机中的存储方式
  • 在Oracle、SQL Server等数据库中只有一种存储引擎,而MySQL数据提供了多种存储引擎,这也是MySQL的核心
  • MySQL的默认引擎是InnoDB,这也是我们使用最多的引擎

MySQL中一些常用的存储引擎及其特点

存储引擎 优点 缺点 适用情形
InnoDB存储引擎
  • 支持外键(Foreign Key)

  • 支持事务(Transaction)

  • 支持全文检索(最新版本是支持的)
  • 需要执行大量的增、删、改(insert、delete、update)操作
MyISAM存储引擎
  • 具有检查和修复表的大多数工具

  • 可以被压缩

  • 最早支持全文索引
  • 不支持事务

  • 不支持外键
  • 需要执行大量的select语句
Memory存储引擎
  • 存储在内存中,默认用HASH索引,访问速度非常快
  • 服务一旦重启,数据就会丢失
  • 用于内容稳定的表格

  • 用于作为统计操作的中间表

几种存储引擎的对比

功能\引擎 InnoDB MyISAM Memory
存储限制 64TB 256TB RAM
支持事务 × ×
支持外键 × ×
支持数据缓存 × ×
空间占用 ★★★ ★☆☆ ★☆☆
内存占用 ★★★ ★☆☆ ★★★
插入数据速度 ★☆☆ ★★★ ★★★

3、MySQL字符集与字符序

概念 解释 举例
字符 人类语言最小的表义符号 `A’、‘B’、……
编码 给定一系列字符,每一个字符对应一个数值,该数值即为编码
字符集 给定一些列字符,并赋予对应编码后,所有这些字符和编码对组成的集合即为字符集 latin1、utf8、gbk、……
字符序 同一字符集内字符之间的比较规则

字符序与字符集的对应关系

  • 一个字符序唯一对应一种字符集
  • 一个字符集可以对应多种字符序(每个字符集都有一个默认字符序)

MySQL中字符序的命名规则

  • 以字符序对应的字符集名称开头
  • 以国家名居中(或以general居中)
  • 以ci/cs/bin结尾
    ▷ 以ci结尾的字符序表示对大小写不敏感
    ▷ 以cs结尾的字符序表示对大小写敏感
    ▷ 以bin结尾的字符序表示按编码值比较

字符序命名规则举例

  • latin1字符集对应有latin1_swedish_ci、latin1_spanish_ci、latin1_german1_ci等字符序
  • 在字符序gbk_general_ci中,'a’与’A’等价

常用的字符集
utf-8gbklatin1.

字符集等信息查询常用sql

  • 查看数据库的默认字符集
    show variables like '%char%';
    
  • 查看数据库的默认编码
    show create database 数据库名;
    
  • 查看数据库中表格的字符集(以下两种方式均可)
    Tips:[]中的内容代表可以缺省,实际写的时候不需要加[]
    show table status from 数据库名 [like '表格名字匹配'] \G;
    show create table 表名;
    

字符集的继承

在服务器端,有以下等级的字符集

  • 服务器端的字符集
  • 数据库的字符集
  • 表的字符集
  • 字段的字符集

如果某一个级别没有设置字符集,将会继承上一级的字符集

问题1:无法存储中文
原因:表或字段字符集不支持中文

问题2:中文乱码

存、取数据时分别需要编码、解码,过程如下

  • 存入 \to 字符 \to 编码 \to 数值
  • 取出 \to 数值 \to 解码 \to 字符

分析上述过程,可以知道产生乱码的原因是编码和解码使用的字符集不一致

  • character_set_client与实际客户端不一致
  • character_set_results与实际客户端不一致
发布了49 篇原创文章 · 获赞 9 · 访问量 3121

猜你喜欢

转载自blog.csdn.net/qq_44220418/article/details/104791174