Mysql数据库
目錄
引言
一、數據庫簡介
1. 使用數據庫的必要性
2. 數據庫的基本概念
2.1 數據
2.2 數據庫和數據庫表
2.3 數據庫管理系統
2.4 數據庫系統
2.5 DBMS的工作模式
二、數據庫的發展史
1. 初級階段(第一代數據庫)
2. 中級階段(第二代數據庫)
3. 高級階段(第三代數據庫)
三、當今主流數據庫介紹
1. 關系數據庫
2. 非關系數據庫
3. 關系數據庫概述
3.1 基本結構
3.2 主鍵
3.3 外鍵
3.4 關系數據庫應用
4. 關系型數據庫和非關系型數據庫的區別
4.1 關系型數據庫
4.2 非關系型數據庫
5. 數據完整性規則
四、MySQL數據庫介紹
1、MySQL商業版與社區版
2、MySQL產品陣營
五、Mysql安裝
MySQL 組成
5.1 法一:編譯安裝
5.2 法二:yum安裝5.7版
六、總結
引言
21世紀,人類邁入了“信息爆炸時代”,大量的數據、信息在不斷產生,伴隨而來的就是如何安全、有效的存儲、檢索和管理它們。對數據的有效存儲、高效訪問、方便共享和安全控制已成為信息時代亟待解決的問題。
一、數據庫簡介
1. 使用數據庫的必要性
(1)使用數據庫可以高效且條理分明地存儲數據,使人們能夠更加迅速、方便地管理數據。
(2)數據庫技術是計算機科學的核心技術之一,具有完備的理論基礎。對數據庫基本概念的掌握,將有助于對數據庫的理解。
(3)數據庫具有以下特點:
?? ①可以結構化存儲大量的數據信息,方便用戶進行有效的檢索和訪問。
?? ②可以有效地保持數據信息的一致性、完整性,降低數據冗余。
?? ③可以滿足應用的共享和安全方面的要求。
2. 數據庫的基本概念
2.1 數據
(1)描述事物的符號記錄稱為數據(Data)
(2)數據不僅僅包括數字,文字、圖形、圖像、聲音、檔案記錄等都是數據
(3)在數據庫中,數據是以“記錄”的形式按統一的格式進行存儲的,而不是雜亂無章的。相同格式喝類型的數據統一存放在一起,而不會把“人”和“書”混在一起存儲,這樣的話數據的存儲就能井然有序了
(4)如下表中存儲的一行數據,在數據庫中稱為一條“記錄”(Record),每條記錄中的每一個輸出稱為“列”,圖中的編號、姓名、性別、年齡、民族、專業都是列名
| 1 | 張三 | 男 | 22 | 漢族 | 信息技術 |
| 2 | 李四 | 男 | 23 | 回族 | 音樂 |
| 3 | 黑娃 | 女 | 20 | 漢族 | 自動化 |
| 4 | 狗蛋 | 女 | 21 | 漢族 | 會計 |
2.2 數據庫和數據庫表
(1)不同的記錄組織在一起,就形成了數據庫(Database,DB)的“表”(Table)
(2)也可以說,表是用來存儲具體數據的
(3)數據庫就是表的集合,它是以一定的組織方式存儲的相互有關的數據集合。例如,關系數據庫的表由記錄組成,記錄由字段組成,字段由字符或數字組成。它可以供各種用戶共享,具有最小冗余度和較高的數據獨立性。它是統一管理的相關數據的集合。
(4)通常,數據庫并不是簡單地存儲這些數據的,還要表示它們之間的關系。比如說,書和人是存在聯系的,書的作者可能就是某個人,因此需要建立書與人的“關系”。這種關系也需要用數據庫來表示,因此關系的描述也是數據庫的一部分。
2.3 數據庫管理系統
數據庫管理系統(DBMS)是實現對數據庫資源有效組織、管理和存取的系統軟件。它在操作系統的支持下,支持用戶對數據庫的各項操作。
DBMS主要包括以下功能:
(1)數據庫的建立和維護功能:
包括建立數據庫的結構和數據的錄入與轉換、數據庫的轉儲與恢復、數據庫的重組與性能監視等功能。
(2)數據定義功能:
包括定義全局數據結構、局部邏輯數據結構、存儲結構、保密模式及信息格式等功能。保證存儲在數據庫中的數據正確、有效和相容,以防止不合語義的錯誤數據被輸入或輸出。
(3)數據操縱功能:
包括數據查詢統計和數據更新兩個方面。
(4)數據庫的運行管理功能:
這是數據庫管理系統的核心部分,包括并發控制、存取控制、數據庫內部維護等功能。
(5)通信功能:
DBMS 其他軟件系統之間的通信,如Access能與其他Office組件進行數據交換。
2.4 數據庫系統
(1)數據庫系統 (DBS) 是一個人一機系統,一般由硬件、操作系統、數據庫、DBMS、應用軟件和數據庫用戶(包括數據庫管理員)組成。用戶可以通過DBMS 操作數據庫,也可以通過應用程序操作數據庫。
(2)應用程序是利用 DBMS,為解決某個具體的管理或數據處理的任務而編制的一系列命令的有序集合。如果應用程序比較完善,能夠提供友好的人機界面,并編譯成可執行文件發行,使得普通用戶不需要具備計算機的專業知識,在較短時間內就學會使用,那么就稱為數據庫應用軟件。
(3)常用的數據庫應用軟件有人事管理、財務管理、圖書管理等信息管理軟件及各類信息咨詢系統等。
(4)數據庫管理員(DBA)負責數據庫的更新和備份、數據庫系統的維護、用戶管理等工作,保證數據庫系統的正常運行。
通過下圖,可以看出用戶獲取數據的過程:
客戶端軟件發送數據請求給 DBMS,由DBMS調用相關的底層指令,從數據庫中的數據文件中調取相關的數據,
然后將查詢到的數據結果返回給 DBMS,經由DBMS處理后返回給客戶端程序。
2.5 DBMS的工作模式
二、數據庫的發展史
數據庫技術的發展已經成為先進信息技術的重要組成部分,是現代計算機信息系統和計算機應用系統的基礎和核心。
數據庫技術最初產生于20世紀60年代中期,根據數據模型的發展,可以劃分為三個階段:
1. 初級階段(第一代數據庫)
(1)自20世紀60年代起,第一代數據庫系統問世
(2)它們是層次模型與網狀模型的數據庫系統,為統一管理和共享數據提供了有力的支撐
(3)在這個階段中,數據庫的代表是 1969 年 IBM 公司研制的層次模型的數據庫管理系統——IMS (InformationManagement System,信息管理系統)和 20 世紀 70 年代美國數據系統語言協會(CODASYL)下述數據庫任務組(DBTG)提議的網狀模型
2. 中級階段(第二代數據庫)
(1)20 世紀 70 年代初,第二代數據庫—關系數據庫開始出現
(2)自1970 年 IBM 研究員闡述了關系模型的概念后,IBM 大力投入關系數據庫的研究
(3)關系數據庫的底層實現起來比較容易,所以很快被采用,并進入了眾多商業數據庫的研發計劃,Oracle 就是當時順應關系數據模型的出現而成立的一家專做(關系)數據庫的公司
(4)20 世紀 80 年代初,IBM 公司的關系數據庫系統 DB2 問世,而 Oracle 公司也將 Orale 移植到桌面計算機上,這時,作為第二代數據庫系統的關系數據庫,開始逐步取代層次與網狀模型的數據庫,成為行業主流,到目前為止,關系數據庫系統仍占領數據庫應用的主要地位
(5)關系數據庫系統將結構化查詢語言(Structured Query Language,SQL)作為數據定義語言(DDL)和數據操作語言(DML),它一誕生就成為關系數據庫的標準語言
(6)SQL 使得關系數據庫中數據庫表的查詢可以通過簡單的、聲明性的方式進行,大大簡化了程序員的工作。
3. 高級階段(第三代數據庫)
(1)自20世紀80年代開始,適應不同領域的新型數據庫系統不斷涌現
(2)面向對象的數據庫系統,實用性強、適應面廣
(3)20世紀90年代后期,形成了多種數據庫系統共同支撐應用的局面
(4)一些新的元素被添加進主流數據庫系統中,例如,Oracle支持的“關系—對象”數據庫模型
三、當今主流數據庫介紹
在數據庫技術日益發展的今天,主流數據庫代表著成熟的數據技術,了解常用的數據庫,就可以知道數據庫技術發展的程度,以及對未來的大體方向。
1. 關系數據庫
(1)SQL Server(微軟公司產品):面向 Windows 系統,簡單、易用,更容易上手
(2)Oracle(甲骨文公司產品):Oracle 數據庫是世界上使用廣泛的數據庫之一,面向所有主流平臺,安全完善,操作復雜
(3)DB2(IBM 公司產品):面向所有主流平臺,大型、安全、完善
(4)MySQL(被甲骨文公司收購):體積小、速度快、開源
2. 非關系數據庫
非關系數據庫也被稱為 NoSQL(Not Only SQL),存儲數據不以關系模型為依據,不需要固定的表格式
非關系型數據庫作為關系型數據庫的一個補充,在日益快速發展的網站時代,發揮著高效率與高性能
(1)非關系型數據庫的優點:
①滿足數據庫高并發讀寫的需求
②對海量數據高效率存儲與訪問
③數據庫高擴展性與高可用性的需求
(2)常用的非關系數據庫如: Memcached、Redis、MongoDB、HBase
3. 關系數據庫概述
關系數據庫系統是基于關系模型的數據庫系統,是關系模型應用到數據庫領域的實例化,它的基本概念來自于關系模型。
3.1 基本結構
(1)關系數據庫使用的存儲結構是多個二維表格,即反映事物及其聯系的數據描述是以平面表格形式體現的
(2)在每個二維表中,每一行稱為一條記錄,用來描述一個對象的信息;每一列稱為一個字段,用來描述對象的一個屬性。數據表與數據庫之間存在相應的關聯,這些關聯用來查詢相關的數據。下圖所示就是一個數據表。
(3)關系數據庫是由數據表之間的關聯組成的。其中:
① 數據表通常是一個由行和列組成的二維表,每一個數據表分別說明數據庫中某一特定的方面或部分的對象及其屬性。
② 數據表中的行通常叫做記錄或者元組,它代表眾多具有相同屬性的對象中的一個。
③ 數據表中的列通常叫做字段或者屬性,它代表相應數據庫中存儲對象的共有的屬性。
實體:
也稱為實例,對應現實世界中可區別于其他對象的“事件”或“事物”,如銀行客戶、銀行賬戶等
屬性:
實體所具有的某一特性,一個實體可以有多個屬性;如銀行客戶實體集中的每個實體均具有姓名、住址、電話等屬性
聯系:
實體集之間的對應關系稱為聯系,也稱為關系;如銀行客戶和銀行賬戶之間存在”儲蓄“的關系
所有實體及實體之間聯系的集合構成一個關系數據庫
3.2 主鍵
數據表中的每行記錄都必須是唯一的,而不允許出現完全相同的記錄,通過定義主鍵(主關鍵字,Promary Key)可以保證記錄(實體)的唯一性。
(1)主鍵唯一標識表中的行數據,一個主鍵值對應一行數據,主鍵由一個或多個字段組成,其值具有唯一性,不允許取空值(NULL)
(2)一個表只能有一個主鍵
3.3 外鍵
(1)一個關系數據庫通常包含多個表,通過外鍵(Foreign Key)可以使這些表關聯起來
(2)外鍵用于建立和加強兩個表數據之間的鏈接的一列或多列
(3)通過表中主鍵值得一列或多列添加到另一個表中,可創建兩個表之間的鏈接,這個列就被稱為第二個表的外鍵。
3.4 關系數據庫應用
| Oracle, MySQL | 12306用戶信息系統 |
| SQLServer、Sybase | 淘寶賬號系統 |
| lnformix、access | 聯通手機號信息系統 |
| DB2、FoxPRO | 銀行用戶賬號系統 |
| PostgreSQL | 網站用戶信息系統 |
4. 關系型數據庫和非關系型數據庫的區別
4.1 關系型數據庫
(1)關系數據庫結構是二維數據庫表,二維表當中每個字段(列)用來描述對象的一個屬性,每個記錄(行)用來描述一個對象的信息(完整信息),關系數據庫寫到哪里也就是存儲在硬盤當中,讀寫系統就會受到的IO限制或者瓶頸
(2)關系型數據庫最典型的數據結構是表,由二維表及其之間的聯系所組成的一個數據組織
(3)優點:
??? ①易于維護:都是使用表結構,格式一致;
??? ②使用方便:SQL語言通用,可用于復雜查詢;
??? ③復雜操作:支持SQL,可用于一個表以及多個表之間非常復雜的查詢。
(4)缺點:
??? ①讀寫性能比較差,尤其是海量數據的高效率讀寫;
??? ②固定的表結構,靈活度稍欠;
??? ③高并發讀寫需求,傳統關系型數據庫來說,硬盤I/O是一個很大的瓶頸。
4.2 非關系型數據庫
(1)MongoDB 、 Redis(內存數據庫/緩存數據庫)K-V鍵值對、與之類似的Memcache,K-V鍵值對redis-memecache對比:
??? 相同點:存儲高熱數據(在內存中高速運行)
??? 不同點:redis可以做持久化保存,可以存儲對象
(2)非關系型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合,可以是文檔或者鍵值對等
(3)優點:
??? ①格式靈活:存儲數據的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應用場景廣泛,而關系型數據庫則只支持基礎類型。
??? ②速度快:nosql可以使用硬盤或者隨機存儲器作為載體,而關系型數據庫只能使用硬盤;
??? ③高擴展性;
??? ④成本低:nosql數據庫部署簡單,基本都是開源軟件。
(4)缺點:
??? ①不提供sql支持,學習和使用成本較高;
??? ②無事務處理;
??? ③數據結構相對復雜,復雜查詢方面稍欠。
5. 數據完整性規則
為了維護數據庫中的數據與現實世界的一致性,關系數據庫的數據與更新操作必須遵循下列四類完整性規則:
(1)實體完整性規則:
??? 實體完整性規則要求關系中的元組在主鍵的屬性上不能有空值,如果出現空值,那么主鍵值就起不到唯一標識元組的作用
(2)域完整性規則:
??? 域完整性也稱列完整性,指定一個數據集對某一個列是否有效或確定是否允許空值
(3)引用完整性規則:
??? 如果兩個表之間相互關聯,那么引用完整性規則要求不允許引用不存在的元組
(4)用戶定義的完整性規則:
??? 用戶定義的完整性規則是針對某一具體數據的約束條件,由應用環境決定;
??? 它反應了某一具體應用所涉及的數據必須滿足的語義要求;
??? 系統提供定義和檢驗這類完整性的機制,以便用統一的系統方法進行處理,不再由應用程序來承擔這項工作。
四、MySQL數據庫介紹
特點
安全可靠的原因是mysql日志文件能備份,恢復,不怕數據丟失,是mysql最核心部分
1、MySQL商業版與社區版
(1)MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用
(2)MySQL社區版是由分散在世界各地的MySQL開發者.愛好者一起開發與維護,可以免費使用
兩者區別
(1)商業版組織管理與測試環節更加嚴格,會比社區版
(2)更穩定商業版不遵守GPL,社區版遵從GPL可以免費使用
(3)商業版可獲得7*24小時的服務,社區版則沒有
2、MySQL產品陣營
(1)第一陣營:5.0-5.1陣營,可說是早期產品的延續
(2)第二陣營:5.4-5.7陣營,整合了MySQL AB公司、社區和第三方公司開發的存儲引擎,從而提高性能
(3)第三陣營: 6.0-7.1陣營,就是MySQL Cluster版本,為適應新時代對數據庫的集群需求而開發
下載網址:http://www.dev.mysql.com/downloads
五、Mysql安裝
MySQL 組成
客戶端程序
??? mysql: 交互式的CLI工具
??? mysqladmin:基于mysql協議管理mysqld
??? mysqlimport:數據導入工具
??? MyISAM存儲引擎的管理工具:
??? myisamchk:檢查MyISAM庫
??? myisampack:打包MyISAM表,只讀
服務器端程序
??? mysqld_safe
??? mysqld
??? mysqld_multi 多實例 ,示例:mysqld_multi
[root@localhost ~]#yum info mariadb
可安裝的軟件包
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安裝的軟件包
名稱??? :mariadb
架構??? :x86_64
時期?????? :1
版本??? :5.5.56
發布??? :2.el7
大小??? :8.7 M
源??? :yum
簡介??? : A community developed branch of MySQL
網址??? :http://mariadb.org
協議??? : GPLv2 with exceptions and LGPLv2 and BSD
描述??? : MariaDB is a community developed branch of
???????? : MySQL. MariaDB is a multi-user,
???????? : multi-threaded SQL database server. It is a
???????? : client/server implementation consisting of
???????? : a server daemon (mysqld) and many different
???????? : client programs and libraries. The base
???????? : package contains the standard MariaDB/MySQL
???????? : client programs and generic MySQL files.
?
MySQL被Sun收購后,搞了個過渡的6.0版本,沒多久就下線了,后來被Oracle收購后,終于迎來了像樣的5.6
版本,之后就是5.7、8.0版本。由于6.0版本號已被用過,7.x系列版本專用于NDB Cluster,因而新版本
號從8.0開始。
5.1 法一:編譯安裝
1. #安裝依賴包并解壓下載的mysql
yum install -y ncurses-devel autoconf cmake
tar zxf mysql-5.6.26.tar.gz
?
2. #編譯安裝
cd mysql-5.6.26/
?
###編譯###
cmake? \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
?
###安裝###
make && make install -j4
?
3. #拷貝文件,并授權
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig? mysqld --level 35 on
?
4. #設置環境變量,申明/宣告mysql命令便于系統識別
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
echo $PATH
?
5. #創建普通用戶管理mysql
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
?
?
6. #初始化初始化數據庫
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
?
7. #修改配置文件
vim /etc/init.d/mysqld
?
##修改46,47行
basedir=/usr/local/mysql
datadir=/home/mysql
?
8. #啟動mysql
service mysqld start
ss -ntap|grep "3306"
?
9. #登錄及登出mysql
##給root賬號設置密碼
mysqladmin -u root -p password "123123"
##登錄mysql
mysql -u root -p
##登出mysql
mysql> exit
Bye
5.2 法二:yum安裝5.7版
1. #創建mysql源
cd /etc/yum.repos.d/
vim mysql.repo
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
?
2. #安裝服務mysql-community-server
yum -y install mysql-community-server
?
3. #啟動服務
systemctl start mysqld
ss -ntap |grep 3306
?
4. #登入數據庫,但是密碼是默認的,需要查看
mysql -u root -p
grep password /var/log/mysqld.log
mysql -u root -p'+8saq%5+ljzG'
#特殊符號用單引號引起來
?
5. #登入數據庫后必須修改密碼
status
alter user root@'localhost' identified by 'Za19@2022';
?
#可以使用mysql> \h查看幫助
六、總結
本文主要講述了數據庫的基本概念、數據庫系統發展史,當今主流的數據庫、關系數據庫和非關系數據庫的區別以及MySQL數據庫。
總結
- 上一篇: SPI 读取不同长度 寄存器_SPI协议
- 下一篇: dbc连接mysql_Spring We