初識MySQL資料庫
一、資料庫的基本概念
1、資料
描述事物的符號記錄
包括數字、文字、圖形、影象、聲音、檔案記錄等
以“記錄”形式按統一的格式進行儲存
2、表
將不同的記錄組織在一起
用來儲存具體資料
3、資料庫
表的集合,是儲存資料的倉庫
以一定的組織方式儲存的相互有關的資料集合
是按照資料結構來組織、儲存和管理資料的倉庫
4、資料庫管理系統(DBMS):是實現對資料庫資源有效組織、管理和存取的系統軟體
資料庫的建立和維護功能、資料定義功能、資料操縱功能、資料庫的執行管理功能、通訊功能
5、資料庫系統
是一個人機系統,由硬體、OS、資料庫、DBMS、應用軟體和資料庫使用者組成
使用者可以通過DBMS或應用程式操作資料庫
二、資料庫系統發展史
1、第一代資料庫
自20世紀60年代起,第一代資料庫系統問世
是層次模型與網狀模型的資料庫系統
為統一管理和共享資料提供了有力的支撐
2、第二代資料庫
20世紀70年代初,第二代資料庫——關係資料庫開始出現
20世紀80年代初,IBM公司的關係資料庫系統DB2問世,開始逐步取代層次與網狀模型的資料庫,成為行業主流
到目前為止,關係資料庫系統仍佔領資料庫應用的主要地位
3、第三代資料庫
自20世紀80年代開始,適應不同領域的新型資料庫系統不斷湧現
面向物件的資料庫系統,實用性強、適應面廣
20世紀90年代後期,形成了多種資料庫系統共同支撐應用的局面
一些新的元素被新增進主流資料庫系統中,例如,Oracle支撐的“關係-物件”資料庫模型
4、當今主流資料庫介紹
SQL Server(微軟公司產品):面向Windows作業系統;簡單、易用
Oracle(甲骨文公司產品):面向所有主流平臺;安全、完善、操作複雜
DB2(IBM公司產品):面向所有主流平臺;大型、安全、完善
MySQL(甲骨文公司收購):免費、開源、體積小
三、關係資料庫
關係資料庫系統時基於關係模型的資料庫系統
關係模型的資料結構使用簡單易懂的二維資料表
關係模型可用簡單的“實體-關係”(E-R)圖來表示
E-R圖中包含了實體(資料物件)、關係和屬性三個要素
1、實體:也稱為例項,對應現實世界中可區別於其他物件的“事件”或“事物”,如,銀行客戶、銀行賬戶等
2、屬性:實體所具有的某一特性,一個實體可以有多個屬性,如,“銀行客戶”實體集中的每一個實體均具有姓名、地址。電話等屬性
3、聯絡:實體集之間的對應關係稱為聯絡,也稱為關係,如,銀行客戶和銀行賬戶之間存在“儲蓄”的關係
4、所有實體及實體之間聯絡的集合構成一個關係資料庫
5、關係資料庫的儲存結構是二維表格
在每個二維表中,每一行稱為一條記錄,用來描述一個物件的資訊;每一列稱為一個欄位,用來描述物件的一個屬性
四、非關係資料庫
1、非關係資料庫也被稱為NoSQL(Not Only SQL)
2、儲存資料不以關係模型為依據,不需要固定的表格式
3、非關係型資料庫的優點:資料庫可高併發讀寫、對海量資料高效率儲存與訪問、資料庫具有高擴充套件性與高可用性
4、常用的非關係資料庫:Redis、MongoDB等
五、MySQL資料庫
1、一款深受歡迎的開源關係型資料庫
2、Oracle旗下的產品
3、遵守GPL協議,可以免費使用與修改
4、特點:效能卓越、服務穩定;開源、無版權限制、成本低;多執行緒、多使用者;基於C/S(客戶端/伺服器)架構;安全可靠
5、MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用;MySQL社群版是由分散在世界各地的MySQL開發者、愛好者一起開發與維護,可以免費使用
- 商業版組織管理與測試環節更加嚴格,會比社群版更穩定
- 商業版不遵守GPL,社群版遵守GPL可以免費使用
- 商業版可獲得7*24小時的服務,社群版則沒有
6、MySQL產品陣營
- 第一陣營:5.0-5.1陣營,可說是早期產品的延續
- 第二陣營:5.4-5.7陣營,整合了MySQL AB公司、社群和第三方公司開發的儲存引擎,從而提高效能
- 第三陣營:6.0-7.1陣營,就是MySQL Cluster版本,為適應新時代對資料庫的叢集需求而開發
- 下載網址: http://www.dev.mysql.com/downloads
六、MySQL資料庫安裝
#!/bin/bash yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake cd /opt/ tar zxvf mysql-5.7.17.tar.gz tar zxvf boost_1_59_0.tar.gz mv boost_1_59_0 /usr/local/boost cd /opt/mysql-5.7.17/ cmake \ -DCMAKE_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_EXTRA_CHARSETS=all \ -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=/usr/local/boost \ -DWITH_SYSTEMD=1 make && make install useradd -M -s /sbin/nologin mysql cat > /etc/my.cnf <<EOF [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 auto-rehash [mysqld] user = mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data port = 3306 character-set-server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket=/usr/local/mysql/mysql.sock bind-address = 0.0.0.0 skip-name-resolve max_connections=2048 default-storage-engine=INNODB max_allowed_packet=16M 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 EOF chown -R mysql:mysql /usr/local/mysql/ chown mysql:mysql /etc/my.cnf echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile source /etc/profile cd /usr/local/mysql/bin/ ./mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl start mysqld.service systemctl enable mysqld yum -y install expect /usr/bin/expect <<-EOF spawn mysqladmin -u root -p password "abc123" expect "Enter password:" send "\n" expect eof EOF mysql -u root -p"abc123" -e "grant all privileges on *.* to 'root'@'%' identified by 'abc123';"
1、MySQL資料庫自動補全命令
1.1 臨時使用自動補全功能
mysql -u root -p --auto-rehash
1.2 永久使用自動補全功能
vi /etc/my.cnf
[mysql]
auto-rehash
1.3 使用軟體mycli實現自動補全功能
//安裝相關依賴軟體(需要配置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
//建立目錄,並新增配置 mkdir ~/.pip/ cat > ~/.pip/pip.conf <<EOF [global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com EOF //安裝相關依賴軟體,解壓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 //優化路徑,安裝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 //登入測試 mycli -u root -p <密碼>