文章目錄
一、數據庫基本概念
1、DB與DBMS
概念 | 解釋 |
---|---|
數據庫(DB) | 按照某些數據結構、專門存儲和維護信息的容器 |
數據庫管理系統(DBMS) | 管理數據庫的軟件 |
數據字典 | 記錄數據庫中存放的各種對象的一些定義和輔助管理信息的數據,也稱爲元數據 |
2、數據庫系統的構成
3、數據管理髮展過程
階段 | 數據的管理者 | 特點 |
---|---|---|
手工管理階段 | 應用程序 | 數據不保存、不共享、不具有獨立性 |
文件管理階段 | 文件系統 | 數據可長期保存 數據共享性差、冗餘度大、獨立性差 |
數據庫管理階段 | 數據庫系統 | 數據結構複雜、冗餘小、易擴充、獨立性較高,有統一的數據控制 |
- 數據庫系統是由計算機軟件和硬件資源組成的系統。
- 數據庫系統實現了有組織地、動態地存儲大量關聯數據,便於多用戶訪問。
- 數據庫系統與文件系統的重要區別是,數據的充分分享、交叉訪問、應用程序的高獨立性。
4、數據庫
特點
- 數據結構化
- 實現數據共享
- 減少數據冗餘
- 數據獨立性
數據庫的類型以及特點
類型 | 舉例 | 特點 |
---|---|---|
網狀型數據庫 | 地圖 | 採用記錄類型爲節點的網狀數據模型 |
層次型數據庫 | 族譜 | 採用層次模型(樹形結構) |
關係型數據庫 | 二維表 | 採用二維表結構組織和管理數據,規定表內、表間的依賴關係 |
5、關係型數據庫
關係型數據庫是指一些相關的表和其他數據庫對象的集合。
表格由行、列組成,在數據庫中表格的相關概念有以下別名
表格中的項 | 數據庫中的別名1 | 數據庫中的別名2 |
---|---|---|
行 | 屬性 | 字段 |
列 | 記錄 | 元祖 |
單元格 | 數據項 | 字段值 |
Tips:對數據庫來說,關係就是表的同義詞。
二、MySQL安裝與卸載
可以參考這幾篇博客
- MySQL社區版安裝:https://god-excious.blog.csdn.net/article/details/104770214
- MySQL社區版卸載:https://god-excious.blog.csdn.net/article/details/104777367
- 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體系結構
一個由多個子系統構成的層次化系統,如下圖所示
2、MySQL存儲引擎
MySQL最與衆不同的特點——插件式存儲引擎
插件式存儲結構
- 插件式存儲結構是底層物理結構的實現,主要負責爲數據庫執行實際的IO操作
- 插件式存儲結構是基於表的而不是基於數據庫的(不同的表可以有不同的引擎)
- 插件式存儲結構的核心是文件訪問層的一個接口,任何人都可以利用這個API接口去建立新的文件訪問機制
存儲引擎
- 存儲引擎就是如何存儲數據、如果爲存儲的數據建立索引、如何更新與查詢數據等技術的實現方法
- 存儲引擎簡而言之就是指表的類型
- 數據庫的存儲引擎決定了表在計算機中的存儲方式
- 在Oracle、SQL Server等數據庫中只有一種存儲引擎,而MySQL數據提供了多種存儲引擎,這也是MySQL的核心
- MySQL的默認引擎是InnoDB,這也是我們使用最多的引擎
MySQL中一些常用的存儲引擎及其特點
存儲引擎 | 優點 | 缺點 | 適用情形 |
---|---|---|---|
InnoDB存儲引擎 |
|
|
|
MyISAM存儲引擎 |
|
|
|
Memory存儲引擎 |
|
|
|
幾種存儲引擎的對比
功能\引擎 | 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-8
、gbk
、latin1
.
字符集等信息查詢常用sql
- 查看數據庫的默認字符集
show variables like '%char%';
- 查看數據庫的默認編碼
show create database 數據庫名;
- 查看數據庫中表格的字符集(以下兩種方式均可)
Tips:[]
中的內容代表可以缺省,實際寫的時候不需要加[]
show table status from 數據庫名 [like '表格名字匹配'] \G; show create table 表名;
字符集的繼承
在服務器端,有以下等級的字符集
- 服務器端的字符集
- 數據庫的字符集
- 表的字符集
- 字段的字符集
如果某一個級別沒有設置字符集,將會繼承上一級的字符集
問題1:無法存儲中文
原因:表或字段字符集不支持中文
問題2:中文亂碼
存、取數據時分別需要編碼、解碼,過程如下
- 存入 字符 編碼 數值
- 取出 數值 解碼 字符
分析上述過程,可以知道產生亂碼的原因是編碼和解碼使用的字符集不一致
character_set_client
與實際客戶端不一致character_set_results
與實際客戶端不一致