二叉樹的遍歷彙總
阿新 • • 發佈:2020-12-27
目錄
資料庫的基本概念
資料(Data)
- 描述事物的符號記錄
- 包括數字,文字、圖形、影象、聲音、檔案記錄等
- 以“記錄”形式按統一的格式進行儲存
表
- 將不同的記錄組織在一起
- 用來儲存具體資料
資料庫
- 表的集合,是儲存資料的倉庫
- 以一定的組織方式儲存的相互有關的資料集合
資料庫管理系統(DBMS)
- 是實現對資料庫資源有效組織、管理和存取的系統
軟體資料庫系統
- 是一個人機系統,由硬體、OS、資料庫、DBMS、應用軟體和資料庫使用者組成
- 使用者可以通過DBMS或應用程式操作資料庫
資料庫系統發展史
第一代資料庫
- 自20世紀60年代起,第一代資料庫系統問世
- 是層次模型與網狀模型的資料庫系統
- 為統一管理和共享資料提供了有力的支撐
第二代資料庫
- 20世紀70年代初,第二代資料庫——關係資料庫開始出現
- 20世紀80年代初,IBM公司的關係資料庫系統DB2問世,開始逐步取代層次與網狀模型的資料庫,成為行業主流
- 到目前為止,關係資料庫系統仍佔領資料庫應用的主要地位
第三代資料庫
- 自20世紀80年代開始,適應不同領域的新型資料庫系統不斷湧現
- 面向物件的資料庫系統,實用性強、適應面廣
- 20世紀90年代後期,形成了多種資料庫系統共同支撐應用的局面—些新的元素被新增進主流資料庫系統中
- 例如,Oracle支援的“關係-物件”資料庫模型
當今主流資料庫介紹
SQL Server(微軟公司產品)
- 面向Windows作業系統
- 簡單、易用
Oracle (甲骨文公司產品)
-
面向所有主流平臺
-
安全、完善,操作複雜
DB2 (IBM公司產品)
-
面向所有主流平臺
-
天型、安全、完善
MySQL(甲骨文公司收購)
- 免費、開源、體積小
關係資料庫
定義
- 關係資料庫系統是基於關係模型的資料庫系統
- 關係模型的資料結構使用簡單易懂的二維資料表
- 關係模型可用簡單的“實體-關係”(E-R)圖來表示
- E-R圖中包含了實體
實體
- 也稱為例項,對應現實世界中可區別於其他物件的“事件”或“事物”
·如銀行客戶、銀行賬戶等
屬性
- 實體所具有的某一特性,一個實體可以有多個屬性
·如“銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性
聯絡
- 實體集之間的對應關係稱為聯絡,也稱為關係
·如銀行客戶和銀行賬戶之間存在“儲蓄”的關係
所有實體及實體之間聯絡的集合構成一個關係資料庫
關係資料庫的儲存結構是二維表格
在每個二維表中
-
每一行稱為一條記錄,用來描述一個物件的資訊
-
每一列稱為一個欄位,用來描述物件的一個屬性
關係型資料庫
- Oracle,MySQL
- SQLServer、Sybase
- lnformix、access
- DB2、FoxPRO
非關係資料庫介紹
- 非關係資料庫也被稱作NoSQL (Not Only sQ L)
- 儲存資料不以關係模型為依據,不需要固定的表格式
非關係型資料庫的優點
- 資料庫可高併發讀寫
- 對海量資料高效率儲存與訪問
- 資料庫具有高擴充套件性與高可用性
常用的非關係資料庫:Redis、mongoDB等
MySQL資料庫介紹
一款深受歡迎的開源關係型資料庫
Oracle旗下的產品
遵守GPL協議,可以免費使用與修改
特點
- 效能卓越、服務穩定
- 開源、無版權限制、成本低
- 多執行緒、多使用者
- 基於C/S(客戶端/伺服器)架構
- 安全可靠
MySQL商業版與社群版
MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用
MySQL社群版是由分散在世界各地的MySQL開發者愛好者一起開發與維護,可以免費使用
兩者區別
- 商業版組織管理與測試環節更加嚴格,會比社群版更穩定
- 商業版不遵守GPL,社群版遵從GPL可以免費使用
- 商業版可獲得7*24小時的服務,社群版則沒有
注:GPL:是GNU General Public License的縮寫,是GNU通用公共授權非正式的中文翻譯。它並非由自由軟體基金會所發表,亦非使用GNU通用公共授權的軟體的法定釋出條款─只有GNU通用公共授權英文原文的版本始具有此等效力。
MySQL產品陣營
第一陣營:5.0-5.1陣營,可說是早期產品的延續
第二陣營:5.4-5.7陣營,整合了MySQLAB公司、社群和第三方公司開發的儲存引擎,從而提高效能
第三陣營:6.0-7.1陣營,就是MySQL Cluster版本,為適應新時代對資料庫的叢集需求而開發
下載網址
- http://www.dev.mysql.com/downloads
專案:安裝MySQL資料庫
安裝mysql環境依賴包
[[email protected] ~]# yum -y install ncurses ncurses-devel bison cmake
建立執行使用者
[[email protected] ~]# useradd -s /sbin/nologin mysql
解壓縮,編譯安裝
[[email protected] ~]# tar zxvf mysql-boost-5.7.20.tar.gz
[[email protected] ~]# cd mysql-5.7.20/
[[email protected] mysql-5.7.20]# cmake \
-DMAKE_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_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=boost \
-DWITH_SYSTEMD=1
[[email protected] mysql-5.7.20]# make && make install
資料庫目錄賦權
[[email protected] local]# chown -R mysql.mysql /usr/local/mysql/
編輯配置檔案
[[email protected] local]# vim /etc/my.cnf
[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
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character_set_server=utf8
pid-file=/usr/local/mysql/mysql.pid
socket=/usr/local/mysql/mysql.sock
server-id=1
sql_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
設定環境變數
[[email protected] ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[[email protected] ~]# source /etc/profile
[[email protected] ~]# echo $PATH
初始化資料庫
[[email protected] ~]# cd /usr/local/mysql/
[[email protected] mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
拷貝檔案
[[email protected] ~]# cd /usr/local/mysql/
[[email protected] mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ //將mysql服務啟動指令碼複製到systemd管理工具的目錄下,便於使用systemctl管理
開啟資料庫,檢查狀態
[[email protected] mysql]# systemctl enable mysqld
[[email protected] mysql]# systemctl start mysqld
[[email protected] mysql]# netstat -ntap |grep 3306
tcp6 0 0 :::3306 :::* LISTEN 25120/mysqld
設定mysql密碼
[[email protected] mysql]# mysqladmin -u root -p password
Enter password: //回車,密碼為空
New password: //輸入密碼“123123”
Confirm new password: //再次輸入密碼“123123”
登入資料庫
[[email protected] mysql]# mysql -u root -p