《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與實際客戶端不一致
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章