1. 程式人生 > 其它 >資料庫基本概念

資料庫基本概念

技術標籤:資料庫應用資料庫

資料庫基本概念

一、資料庫的基本概念

1.1 資料庫的組成

資料:描述事物的符號記錄
包括數字,文字、圖形、影象、聲音、檔案記錄等
以“記錄”形式按統一格式進行儲存

表:將不同的記錄組織在一起,用來儲存具體資料

資料庫: 表的集合,是儲存資料的倉庫
以一定的組織方式儲存的相互有關的資料集合

1.2 資料庫的管理系統(DBMS)

是實現對資料庫資源有效組織、管理和存取的系統軟體
功能:資料庫的建立和維護功能、資料定義功能、資料操控功能、資料庫的執行管理功能、通訊功能

1.3 資料庫系統(DBS)

是一個人機系統,由硬體、OS、資料庫、DBMS、應用軟體和資料庫使用者組成
使用者可以通過DBMS或應用程式操作資料庫

1.3.1 當今主流資料庫

SQL Server (微軟公司產品)
面向Windows作業系統
簡單、易用

Oracle (甲骨文公司產品)
面向所有主流平臺
安全、完善、操作複雜

DB2 (IBM公司產品)
面向所有主流平臺
大型、安全、完善

MySQL (甲骨文公司收購)
免費、開源、體積小

1.4 關係型資料庫介紹

1、關係資料庫系統是基於關係模型的資料庫系統

2、關係模型的資料結構使用簡單易懂的二維資料表
  每一行稱為一條記錄,用來描述一個物件的資訊
  每一行稱為一個欄位,用來描述物件的一個屬性

3、關係模型可用簡單的"實體-關係-屬性"來表示
 1、實體
 也稱為例項,對應現實世界中可區別與其他物件的“事件”或“事物”
 如銀行客戶、銀行賬戶等
 2、關係
 實體集之間的對應關係稱為聯絡,也稱為關係
 如銀行客戶和銀行賬戶之間存在“儲蓄”的關係
 3、屬性
 實體所具有的某一特性,一個實體可以有多個屬性
 如“銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性

1.5 非關係型資料庫介紹

非關係資料庫也稱為NoSQL (Not Only SQL)
 儲存資料不以關係模型為依據,不需要固定的表格式

非關係型資料庫的優點
 1、資料庫可高併發讀寫
 2、對海量資料高效率儲存與訪問
 3、資料庫具有高擴充套件性與高可用性

1.6 MySQL資料庫介紹

一款深受歡迎的開源關係型資料庫
Oracle旗下的產品
遵守GPL協議,可以免費使用與修改

特點
 效能卓越、服務穩定
 開源、無版權限制、成本低
 多執行緒、多使用者
 基於C/S(客戶端/伺服器)架構
 安全可靠

二、編譯安裝MySQL

1、把MySQL安裝包拉到/opt目錄下
2、編譯安裝MySQL
我們這裡以用的是一鍵指令碼部署安裝MySQL

#!/bin/bash
echo -e "\033[31m =====正在驗證當前為僅主機還是NAT模式===== \033[0m"
ping -c1 -W1 www.baidu.com &> /dev/null
if [ $? -eq 0 ];then echo -e "\033[31m 檢測當前為NAT模式,為您配置線上yum源 \033[0m"
mkdir -p /etc/yum.repos.d/repo.bak

mv -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null

yum clean all &> /dev/null
yum list &> /dev/null
echo -e "\033[31m 線上源已配置完成 \033[0m"

else
echo -e "\033[31m 檢測當前為僅主機模式,為您配置本地yum源 \033[0m"
mount /dev/sr0 /mnt &> /dev/null
cd /etc/yum.repos.d/
mkdir -p /etc/yum.repos.d/repo.bak

mv -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null

echo '[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo
yum clean all &> /dev/null
yum makecache &> /dev/null

df -h | grep "/mnt" 
if [ $? -ne 0 ];then
echo -e "\033[31m 檢測當前為僅主機模式,但光碟未連線! \033[0m"
else
echo -e "\033[31m 本地yum源已配置完成 \033[0m"
fi
fi

#關閉系統防火牆和安全機制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

echo -e "\033[31m 檢查安裝包是否正確,請耐心等待 \033[0m"
ls /opt | egrep "^mysql-boost-5.7.20.tar.gz$"
if [ $? -eq 0 ];then
echo -e "\033[31m 接下來進入正式配置,請耐心等待 \033[0m"
else
echo -e "\033[31m 請準備正確安裝包mysql-boost-5.7.20.tar.gz \033[0m"
break
fi


#安裝Mysql環境依賴包
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake \
gcc \
gcc-c++ \
make

#建立程式使用者,便於準確控制訪問使用者
useradd -M -s /sbin/nologin  mysql

#編譯安裝
cd /opt
tar xzvf mysql-boost-5.7.20.tar.gz -C /opt

cd /opt/mysql-5.7.20/
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=boost \
-DWITH_SYSTEMD=1

#編譯及安裝
make && make install

#修改mysql 配置檔案
echo '[client]
port = 3306
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/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' > /etc/my.cnf


#更改mysql安裝目錄和配置檔案的屬主屬組
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

#設定路徑環境變數
echo "export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib">> /etc/profile	
source /etc/profile

#初始化資料庫
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

#新增mysqld系統服務
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ 


systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld