1. 程式人生 > 資料庫 >MySQL資料庫初體驗

MySQL資料庫初體驗

目錄

資料庫的基本概念

資料(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

非關係資料庫介紹

  1. 非關係資料庫也被稱作NoSQL (Not Only sQ L)
  2. 儲存資料不以關係模型為依據,不需要固定的表格式

非關係型資料庫的優點

  1. 資料庫可高併發讀寫
  2. 對海量資料高效率儲存與訪問
  3. 資料庫具有高擴充套件性與高可用性

常用的非關係資料庫: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環境依賴包

[root@server1 ~]# yum -y install ncurses ncurses-devel bison cmake

建立執行使用者

[root@server1 ~]# useradd -s /sbin/nologin mysql 

解壓縮,編譯安裝

[root@server1 ~]# tar zxvf mysql-boost-5.7.20.tar.gz 
[root@server1 ~]# cd mysql-5.7.20/
[root@localhost 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
[root@server1 mysql-5.7.20]# make && make install

資料庫目錄賦權

[root@localhost local]# chown -R mysql.mysql /usr/local/mysql/

編輯配置檔案

[root@localhost 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

設定環境變數

[root@server1 ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@server1 ~]# source /etc/profile
[root@server1 ~]# echo $PATH

初始化資料庫

[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

拷貝檔案

[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/        //將mysql服務啟動指令碼複製到systemd管理工具的目錄下,便於使用systemctl管理

開啟資料庫,檢查狀態

[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# netstat -ntap |grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      25120/mysqld

設定mysql密碼

[root@localhost mysql]# mysqladmin -u root -p password
Enter password:          //回車,密碼為空
New password:            //輸入密碼“123123”
Confirm new password:    //再次輸入密碼“123123”

登入資料庫

[root@localhost mysql]# mysql -u root -p