一? 數(shù)據(jù)
(一)數(shù)據(jù)是什么
描述事物的符號(hào)記錄
包括數(shù)字,文字、圖形、圖像、聲音、檔案記錄氣
以“記錄”形式按統(tǒng)一的格式進(jìn)行存儲(chǔ)
(二)數(shù)據(jù)的分類
1,結(jié)構(gòu)化的數(shù)據(jù)
即有固定格式和有限長度的數(shù)據(jù)。例如填的表格就是結(jié)構(gòu)化的數(shù)據(jù),國籍:中華人民共和國,民族:漢,性別:男,這都叫結(jié)構(gòu)化數(shù)據(jù)
2,非結(jié)構(gòu)化的數(shù)據(jù)
非結(jié)構(gòu)化的數(shù)據(jù)越來越多,就是不定長、無固定格式的數(shù)據(jù),例如網(wǎng)頁,有時(shí)候非常長,有時(shí)候幾句話就沒了;例如語音,視頻都是非結(jié)構(gòu)化的數(shù)據(jù)
3,半結(jié)構(gòu)化數(shù)據(jù)
比如:XML或者HTML的格式的數(shù)據(jù)
二? ?數(shù)據(jù)庫管理系統(tǒng)
(一)DBMS?是什么
是實(shí)現(xiàn)對數(shù)據(jù)庫資源有效組織、管理和存取的系統(tǒng)軟件
具有數(shù)據(jù)庫的建立和維護(hù)功能、數(shù)據(jù)定義功能、數(shù)據(jù)操縱功能、數(shù)據(jù)庫的運(yùn)行管理功能、通信功能
(二)數(shù)據(jù)庫系統(tǒng)
是一個(gè)人機(jī)系統(tǒng)由硬件、OS、數(shù)據(jù)庫、DBMS、應(yīng)用軟件和數(shù)據(jù)庫用戶組成
用戶可以通過DBMS或應(yīng)用程序操作數(shù)據(jù)庫
(三)DBMS? 工作模式
1>接受應(yīng)用程序的數(shù)據(jù)請求和處理請求
2>將用戶的數(shù)據(jù)請求(高級(jí)指令)轉(zhuǎn)換為復(fù)雜機(jī)器代碼(底層指令)
3>實(shí)現(xiàn)對數(shù)據(jù)庫的操作
4>從數(shù)據(jù)庫的操作中接受查詢結(jié)果
5>對查詢結(jié)果進(jìn)行處理(格式轉(zhuǎn)換)
6>將處理結(jié)果返回給用戶
三? ?數(shù)據(jù)庫發(fā)展歷史
(一)第一代數(shù)據(jù)庫
自20世紀(jì)60年代起,第一代數(shù)據(jù)庫系統(tǒng)問世
是層次模型與網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)
為統(tǒng)一管理和共享數(shù)據(jù)提供了有力的支撐
(二)第二代數(shù)據(jù)庫
20世紀(jì)70年代初,第二代數(shù)據(jù)庫--關(guān)系數(shù)據(jù)庫開始出現(xiàn)
20世紀(jì)80年代初,IBM公司的關(guān)系數(shù)據(jù)庫系統(tǒng)DB2問世,開始逐步取代層次與網(wǎng)狀模型的數(shù)據(jù)庫,成為行業(yè)主流
到目前為止,關(guān)系數(shù)據(jù)庫系統(tǒng)仍占領(lǐng)數(shù)據(jù)庫應(yīng)用的主要地位
(三)第三代數(shù)據(jù)庫
自20世紀(jì)80年代開始,適應(yīng)不同領(lǐng)域的新型數(shù)據(jù)庫系統(tǒng)不斷涌現(xiàn)面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng),實(shí)用性強(qiáng)、適應(yīng)面廣
20世紀(jì)90年代后期,形成了多種數(shù)據(jù)庫系統(tǒng)共同支撐應(yīng)用的局面一些新的元素被添加進(jìn)主流數(shù)據(jù)庫系統(tǒng)中
例如,Oracle支持的“關(guān)系-對象”數(shù)據(jù)庫模型
就是把 關(guān)系和 非關(guān)系結(jié)合
為什么要這樣???
為關(guān)系型數(shù)據(jù)庫 遇到高并發(fā) 處理不過來
非關(guān)系型數(shù)據(jù)庫 拖底
(四)時(shí)序 數(shù)據(jù)庫
(天氣預(yù)報(bào))
四? 關(guān)系數(shù)據(jù)庫
(一)關(guān)系數(shù)據(jù)庫簡介
關(guān)系數(shù)據(jù)庫系統(tǒng)是基于關(guān)系模型的數(shù)據(jù)庫系統(tǒng)
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)使用簡單易懂的二維數(shù)據(jù)表(理解為行加列)
關(guān)系模型可用簡單的“實(shí)體-關(guān)系”(E-R)圖來表示
E-R圖中包含了實(shí)體(數(shù)據(jù)對象)、關(guān)系和屬性三個(gè)要素
(二)實(shí)體? 屬性?聯(lián)系
1,實(shí)體
也稱為實(shí)例,對應(yīng)現(xiàn)實(shí)世界中可區(qū)別于其他對象的“事件”或事物
如銀行客戶、銀行賬戶等
2,屬性
實(shí)體所具有的某一特性,一個(gè)實(shí)體可以有多個(gè)屬性
如“銀行客戶”實(shí)體集中的每個(gè)實(shí)體均具有姓名、住址、電話等屬性
3,聯(lián)系
實(shí)體集之間的對應(yīng)關(guān)系稱為聯(lián)系,也稱為關(guān)系
如銀行客戶和銀行賬戶之間存在“儲(chǔ)蓄”的關(guān)系
所有實(shí)體及實(shí)體之間聯(lián)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫
(三)?關(guān)系數(shù)據(jù)庫表格
1,?關(guān)系數(shù)據(jù)庫結(jié)構(gòu)
關(guān)系數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)是二維表格
在每個(gè)二維表中
每一行稱為一條記錄,用來描述一個(gè)對象的信息
每一列稱為一個(gè)字段,用來描述對象的一個(gè)屬性
2??關(guān)系型數(shù)據(jù)庫應(yīng)用
關(guān)系型數(shù)據(jù)庫 | 應(yīng)用舉例 |
Oracle,MySQL | 12306用戶信息系統(tǒng) |
SQLServer、Sybase | 淘寶賬號(hào)系統(tǒng) |
Informix、access | 聯(lián)通手機(jī)號(hào)信息系統(tǒng) |
DB2、FoxPRO | 銀行用戶賬號(hào)系統(tǒng) |
PostgreSQL ? |
網(wǎng)站用戶信息系統(tǒng) |
(四)?主流數(shù)據(jù)庫介紹
1,SQL Server(微軟公司產(chǎn)品)
面向Windows操作系統(tǒng)
簡單、易用
2,Oracle(甲骨文公司產(chǎn)品)
面向所有主流平臺(tái)
安全、完善,操作復(fù)雜
3,DB2(IBM公司產(chǎn)品)
面向所有主流平臺(tái)
安全、完善,大型
4,MySQL(甲骨文公司收購)
免費(fèi)、開源、體積小
5,postgrsql 數(shù)據(jù)庫
五? ? 非關(guān)系數(shù)據(jù)庫介紹
(一)非關(guān)系數(shù)據(jù)庫簡介
非關(guān)系數(shù)據(jù)庫也被稱作NoSQL(Not OnlySQL)
存儲(chǔ)數(shù)據(jù)不以關(guān)系模型為依據(jù),不需要固定的表格式
(二)非關(guān)系數(shù)據(jù)庫優(yōu)點(diǎn)
數(shù)據(jù)庫可高并發(fā)讀寫
對海量數(shù)據(jù)高效率存儲(chǔ)與訪問
數(shù)據(jù)庫具有高擴(kuò)展性與高可用性
(三)常用的非關(guān)系數(shù)據(jù)庫
Redis、mongoDB等
六? ?關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫?對比
(一)關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫最典型的數(shù)據(jù)結(jié)構(gòu)是表,由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織
數(shù)據(jù)在硬盤
優(yōu)點(diǎn):
1、易于維護(hù):都是使用表結(jié)構(gòu),格式一致;
2、使用方便:SQL語言通用,可用于復(fù)雜查詢;
3、復(fù)雜操作:支持SQL,可用于一個(gè)表以及多個(gè)表之間非常復(fù)雜的查詢。
缺點(diǎn):
1、讀寫性能比較差,尤其是海量數(shù)據(jù)的高效率讀寫;
2、固定的表結(jié)構(gòu),靈活度稍欠;
3、高并發(fā)讀寫需求,傳統(tǒng)關(guān)系型數(shù)據(jù)庫來說,硬盤I/O是一個(gè)很大的瓶頸。
(二)非關(guān)系型數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫嚴(yán)格上不是一種數(shù)據(jù)庫,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合,可以是文檔或者鍵值對等。
數(shù)據(jù)在內(nèi)存
優(yōu)點(diǎn):
1、格式靈活:存儲(chǔ)數(shù)據(jù)的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、
圖片形式等等,使用靈活,應(yīng)用場景廣泛,而關(guān)系型數(shù)據(jù)庫則只支持基礎(chǔ)類型。
2、速度快:nosql可以使用硬盤或者隨機(jī)存儲(chǔ)器作為載體,而關(guān)系型數(shù)據(jù)庫只能使用硬盤;
3、高擴(kuò)展性;
4、成本低:nosql數(shù)據(jù)庫部署簡單,基本都是開源軟件。
缺點(diǎn):
1、不提供sql支持,學(xué)習(xí)和使用成本較高;
2、無事務(wù)處理;
yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ? ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
3、數(shù)據(jù)結(jié)構(gòu)相對復(fù)雜,復(fù)雜查詢方面稍欠。
(三)redis?和其他非關(guān)系型數(shù)據(jù)庫(MongoDB)區(qū)別
相同點(diǎn):存儲(chǔ)高熱數(shù)據(jù)(在內(nèi)存中高速運(yùn)行)
不同點(diǎn):redis可以做持久化保存,可以存儲(chǔ)對象
七? ?安裝 mysql
編譯安裝
1,安裝相關(guān)依賴包
yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ? ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
2,下載并解壓縮源碼包
tar xf ?mysql-boost-5.7.20.tar.gz
[root@localhost opt]#cd 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_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
#############模塊解釋#####################
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安裝路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql進(jìn)程監(jiān)聽套接字文件(數(shù)據(jù)庫連接文件)的存儲(chǔ)路徑
-DSYSCONFDIR=/etc \
#指定配置文件的存儲(chǔ)路徑
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定進(jìn)程文件的存儲(chǔ)路徑
-DDEFAULT_CHARSET=utf8 \
#指定默認(rèn)使用的字符集編碼,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默認(rèn)使用的字符集校對規(guī)則
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安裝INNOBASE存儲(chǔ)引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安裝ARCHIVE存儲(chǔ)引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安裝BLACKHOLE存儲(chǔ)引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安裝FEDERATED存儲(chǔ)引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定數(shù)據(jù)庫文件的存儲(chǔ)路徑
-DWITH_BOOST=boost \
#指定boost的路徑,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件
#############模塊解釋#####################
3,make?
make install
4,數(shù)據(jù)庫目錄進(jìn)行權(quán)限調(diào)整
chown -R mysql:mysql /usr/local/mysql/
5,調(diào)整配置文件
vi /etc/my.cnf? ?把原來內(nèi)容都刪掉
[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/mysqld.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
解釋:?
NO_ENGINE_SUBSTITUTION
如果需要的存儲(chǔ)引擎被禁用或未編譯,那么拋出錯(cuò)誤。不設(shè)置此值時(shí),用默認(rèn)的存儲(chǔ)引擎替代,并拋出一個(gè)異常
STRICT_TRANS_TABLES
在該模式下,如果一個(gè)值不能插入到一個(gè)事務(wù)表中,則中斷當(dāng)前的操作,對非事務(wù)表不做限制
NO_AUTO_CREATE_USER
禁止:GRANT創(chuàng)建密碼為空的用戶
NO_AUTO_VALUE_ON_ZERO
mysql中的自增長列可以從o開始。默認(rèn)情況下自增長列是從1開始的,如果你插入值為0的數(shù)據(jù)會(huì)報(bào)錯(cuò)
NO_ZERO_IN_DATE
mysql數(shù)據(jù)庫不允許插入零日期,插入零日期會(huì)拋出錯(cuò)誤而不是警告
ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE過程中,如果數(shù)據(jù)被零除,則產(chǎn)生錯(cuò)誤而非警告。默認(rèn)情況下數(shù)據(jù)被零除時(shí)MysQL返回NULL
IPES_AS_CONCAT
將"||"視為字符串的連接操作符而非或運(yùn)算符,這和oracle數(shù)據(jù)庫是一樣的,
ANSI QUOTES
啟用ANSI QUOTES后,不能用雙引號(hào)來引用字符串,因?yàn)樗唤忉尀樽R(shí)別符
6?改變屬主 屬組
chown mysql:mysql /etc/my.cnf
7,設(shè)置環(huán)境變量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
8,初始化數(shù)據(jù)庫
cd /usr/local/mysql/
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
9,數(shù)據(jù)庫開啟自啟、 關(guān)閉、狀態(tài)
systemctl enable mysqld
systemctl start mysqld
systemctl stop mysqld
systemctl status mysqld
netstat -anpt | grep 3306
10?設(shè)置Mysql密碼
mysqladmin -u root -p password
#開始初始密碼為空 ?回車即可 ? 然后輸入新密碼
11??登錄數(shù)據(jù)庫文章來源:http://www.zghlxwxcb.cn/news/detail-842719.html
mysql -u root -p?文章來源地址http://www.zghlxwxcb.cn/news/detail-842719.html
到了這里,關(guān)于mysql 數(shù)據(jù)庫 基本介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!