一、資料庫的基本概念
1.1資料(Data)
- 描述事物的符號記錄
- 包括數字,文字,圖形,影像,聲音,檔案記錄等
- 以“記錄”形式按統一的格式進行存盤
1.2表
- 將不同的記錄組織在一起
- 用來存盤具體資料
1.3資料庫
- 表的集合,是存盤資料的倉庫
- 以一定的組織方式存盤的相互有關的資料集合
1.4資料庫管理系統(DBMS)
資料庫管理系統(Database Management System,簡稱DBMS)是為管理資料庫而設計的電腦軟體系統,一般具有存盤、截取、安全保障、備份等基礎功能,是實作對資料庫資源有效組織、管理和存取的系統軟體,資料庫管理系統主要分為以下兩類:
(1)關系資料庫
關系資料庫是創建在關系模型基礎上的資料庫,借助于集合代數等數學概念和方法來處理資料庫中的資料,現實世界中的各種物體以及物體之間的各種聯系均用關系模型來表示.幾乎所有的資料庫管理系統都配備了一個開放式資料庫連接(ODBC)驅動程式,令各個資料庫之間得以互相集成,典型代表有:MySQL、Oracle、Microsoft SQL Server、Access及PostgreSQL等
(2)非關系型資料庫 NoSQL
非關系型資料庫是對不同于傳統的關系資料庫的資料庫管理系統的統稱,與關系資料庫最大的不同點是不使用SQL作為查詢語言,典型代表有:Reids、BigTable(Google)、Cassandra、MongoDB、CouchDB;還包括鍵值資料庫:Apache Cassandra(Facebook)、LevelDB(Google)
1.5資料庫系統
是一個人機系統,由硬體、os、資料庫、DBMS、應用軟體和資料庫用戶組成;用戶可以通過DBMS或應用程式操作資料庫;結構化查詢語言(Structured Query Language)簡稱SQL,是一種資料庫查詢語言,
作用:用于存取資料、查詢、更新和管理關系資料庫系統,
1.6訪問資料庫的流程

二、資料庫系統發展史
2.1第一代資料庫
自20世紀60年代起,第一代資料庫系統問世,是層次模型與網狀模型的資料庫系統,為統一管理和共享資料提供了有力的支撐,
2.2第二代資料庫
20世紀70年代,第二代資料庫—關系資料庫開始出現,20世紀80年代,IBM公司的關系資料庫系統DB2問世,開始逐步取代層次與網狀模型的資料庫,成為行業主流,到目前為止,關系資料庫系統仍占領資料庫應用的主要地位,
2.3第三代資料庫
自20世紀80年代開始,適應不同領域的新型資料庫系統不斷涌現,面向物件的資料庫系統,實用性強,適應面廣,20世紀90年代后期,形成了多種資料庫系統共同支撐應用的局面,一些新的元素被添加進主流資料庫系統中,
例如,Oracle支持的 “關系-物件"資料庫模型
三、當今主流資料庫介紹
3.1SQL Server (微軟公司產品)
面向Windows作業系統;簡單、易用
3.2Oracle (甲骨文公司產品)
面向所有主流平臺;安全、完善,操作復雜
3.3DB2 (IBM公司產品)
面向所有主流平臺;大型、安全、完善
3.4MySQL (甲骨文公司收購)
免費、開源、體積小
- MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,屬于 Oracle 旗下產品,
- MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體之一,
- 在Java企業級開發中非常常用,因為 MySQL 是開源免費的,并且方便擴展,
四、關系資料庫
- 關系資料庫系統是基于關系模型的資料庫系統
- 關系模型的資料結構使用簡單易懂的二維資料表
- 關系模型可用簡單的“物體關系”(E-R) 圖來表示
- E-R圖中包含了物體(資料物件)、關系和屬性三個要素
4.1物體
再ER圖里面,用長方形表示,稱為實體,對應現實世界中可區別于其它物件的“事件”或“事物”
4.2屬性
再ER圖里面,用橢圓形表示,物體所具體的某一特性,一個物體可以有多個屬性
4.3聯系
再ER圖里面,用棱形表示, 物體集之間的對應關系稱為聯系,也稱為關系
4.4關系資料庫
所有物體及物體之間聯系的集合構成一個關系資料庫,關系資料庫的存盤結構是二維表格
在每個二維表中
- 每一行稱為一條記錄,用來描述一個物件的資訊
- 每一列稱為一個欄位,用來描述物件的一個屬性
常見的關系資料庫有:
- Oracle , MySQL
- SQLServer、Sybase
- Informix、access
- DB2、FoxPRO
4.5關系資料庫的應用
- 12306用戶資訊系統:Oracle,MySQL
- 淘寶賬號系統:SQLServer、Sybase
- 聯通手機號資訊系統:Informix、access
- 銀行用戶賬號系統:DB2、FoxPRO
- 網站用戶資訊系統:PostgreSQL
六、非關系資料庫
非關系資料庫也被稱作NoSQL (Not Only SQL),存盤資料不以關系模型為依據,不需要固定的表格式
6.1非關系型資料庫的優點
- 資料庫可高并發讀寫
- 對海資料高效率存盤與訪問
- 資料庫具有高擴展性與高可用性
6.2常用的非關系資料庫
Redis、mongoDB等
6.3總結
非關系資料庫大部分以鍵值對的方式進行存盤(例如:name=xxx),之間沒有特定的聯系,安全性不是很高,非關系資料庫很多將資料是寫在記憶體當中,所以讀寫速度快,
七、MySQL的介紹
7.1MySQL資料庫介紹
一款深受歡迎的開源關系型資料庫,Oracle旗下的產品,遵守GPL協議,可以免費使用與修改
特點:
- 性能卓越、服務穩定
- 開源、無著作權限制、成本低
- 多執行緒、多用戶
- 基于C/S(客戶端/服務器)架構
- 安全可靠
7.2MySQL商業版與社區版
MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用
MySQL社區版是由分散在世界各地的MySQL開發者、愛好者一起開發與維護,可以免費使用
兩者區別
- 商業版組織管理與測驗環節更加嚴格,會比社區版更穩定
- 商業版不遵守GPL,社區版遵從GPL可以免費使用
- 商業版可獲得7*24小時的服務,社區版則沒有
7.3MySQL產品陣營
- 第一陣營:5.0-5.1陣營,可說是早期產品的延續
- 第二陣營:5.4-5.7陣營,整合了MySQL AB公司、社區和第三方公司開發的存盤引擎,從而提高性能
- 第三陣營:6.0-7.1陣營,就是MySQL Cluster版本, 為適應新時代對資料庫的集群需求而開發
下載網址: http://www.dev.mysql.com/downloads
八、編譯安裝MySQL資料庫
8.1安裝環境包
確認安裝 gcc 、 gcc-c++ 、make、cmake ncurses-devel、(字符終端螢屏控制基本庫) bison、(語法分析器) libaio-devel (支持同步I/O)的軟體包 yum -y install gcc gcc-c++ make ncurses ncurses-devel bison cmake libaio-devel
8.2添 加mysql用戶并加入到mysql組
useradd -s /sbin/nologin mysql mkdir -p /usr/local/mysql
8.3將所需安裝包放到/opt目錄下并解壓
cd /opt tar zxvf mysql-5.5.24.tar.gz
8.4配置軟體模塊
cd /opt/mysql-5.5.24.tar.gz cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_DATADIR=/home/mysql \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306
指定安裝路徑
指定家目錄 sock 資料庫連接檔案
指定字符集
指定字符編碼
擴展性的字符集 支持其他的字符集
開啟各種功能的存盤引擎機
存盤引擎機
存盤引擎機
支持readline程式平臺 讀取資料按行讀取,一行是一個物件
本地寫入檔案,方便匯入匯出
資料庫的家目錄 資料庫存放的路徑
指定管理用戶和埠號
8.5編譯及安裝
make && make install ------如果報錯,清空快取檔案-如果正常可忽略------- find -name CMakeCache.txt rm -f ./CMakeCache.txt
8.6更改mysql安裝目錄和組態檔的屬主屬組
chown -R mysql.mysql /usr/local/mysql chown mysql:mysql /etc/my.cnf
8.7設定路徑環境變數
export PATH=$PATH:/usr/local/mysql/bin/ \*開機時重繪*\
或者可選擇vi /etc/profile 在最后一行加入后 運行source /etc/profile
8.8添加服務
cp support-files/my-medium.cnf /etc/my.cnf 或 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
8.9初始化資料庫
/usr/local/mysql/scripts/mysql_install_db \ --user=mysql \ --ldata=https://www.cnblogs.com/var/lib/mysql \ --basedir=/usr/local/mysql \ --datadir=/home/mysql
8.10創建軟鏈接并修改組態檔
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock /*直接建立軟連接*/ vi /etc/init.d/mysqld basedir=/usr/local/mysql datadir=/home/mysql service mysqld start netstat -natp | grep 3306
8.11修改mysql 的登錄密碼并授權遠程登錄
mysqladmin -u root -p password "abc123" #給root賬號設定密碼為abc123,提示輸入的是原始密碼(為空) mysql -u root -p grant all privileges on *.* to 'root'@'%' identified by 'abc123'; #授予root用戶可以在所有終端遠程登錄,使用的密碼是abc123,并對所有資料庫和所有表有操作權限 show databases; #查看當前已有的資料庫
按照步驟安裝即可,具體可參照之前的文章(在此就不演示了)具體參考之前博客:LNMP搭建 - 崧藍 - 博客園 (cnblogs.com)的mysql安裝
九、MySQL資料庫自動補全命令的三種方式
9.1方式一:臨時使用自動補全功能
mysql -u root -p --auto-rehash
9.2方式二:永久使用自動補全功能
vi /etc/my.cnf [mysql] auto-rehash
9.3方法三:使用軟體mycli實作自動補全功能
(1)安裝相關依賴軟體(需要配置yum官方或者阿里源進行安裝)
yum -y install epel-release yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc
(2)下載python安裝包(自己下載過可以忽略此步驟)
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
(3)創建目錄,并添加配置
mkdir ~/.pip/ cat > ~/.pip/pip.conf <<EOF [global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com EOF
(4)安裝相關依賴軟體,解壓python軟體包并進行編譯安裝
yum -y install libffi-devel zlib* python-devel openssl-devel tar -zxvf Python-3.9.0.tgz cd Python-3.9.0/ ./configure --prefix=/usr/local/python --with-ssl make && make install
(5)優化路徑,安裝pip3
yum -y install libffi-devel zlib* python-devel openssl-devel tar -zxvf Python-3.9.0.tgz cd Python-3.9.0/ ./configure --prefix=/usr/local/python --with-ssl make && make install
(6)登錄測驗
mycli -u root -p <密碼>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538186.html
標籤:其他
