一、數(shù)據(jù)庫的定義
數(shù)據(jù):
描述事物符號(hào)記錄。(包括數(shù)字、文字、圖形、圖像、聲音、檔案記錄等)以記錄形式統(tǒng)一的格式進(jìn)行存儲(chǔ)。
程序的概念
程序=指令+數(shù)據(jù)
狹義的數(shù)據(jù)和廣義數(shù)據(jù)
狹義的數(shù)據(jù)(文字和符號(hào)記錄)??
結(jié)構(gòu)化數(shù)據(jù):文字、數(shù)字、符號(hào)記錄被稱為結(jié)構(gòu)化數(shù)據(jù),有一定的結(jié)構(gòu),可以放在表里面。例如:mysql
非結(jié)構(gòu)化數(shù)據(jù):圖形、圖像、聲音、檔案記錄,一般稱之為靜態(tài)資源,一般存在靜態(tài)資源web服務(wù)器(或者CDA的代理服務(wù)器)如:apche,nginx
半結(jié)構(gòu)化數(shù)據(jù):半結(jié)構(gòu)化數(shù)據(jù)是現(xiàn)代數(shù)據(jù)體系中非常常見的數(shù)據(jù)類型。與嚴(yán)格格式化的數(shù)據(jù)庫數(shù)據(jù)相反,它能以靈活的格式存在。例如,電子郵件就是一個(gè)常見的例子,其中包含了一定的結(jié)構(gòu)(如發(fā)件人、收件人、主題等字段),但其內(nèi)容往往不遵循固定格式。結(jié)構(gòu)化數(shù)據(jù)通常存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中,如SQL數(shù)據(jù)庫,具有預(yù)定義的數(shù)據(jù)模型。相比之下,半結(jié)構(gòu)化數(shù)據(jù)不遵循這樣嚴(yán)格的模型,但仍有組織的方式表達(dá)數(shù)據(jù)的層次關(guān)系和語義。
二、數(shù)據(jù)層次模型
數(shù)據(jù)存在文本文件中,采用什么結(jié)構(gòu)組織數(shù)據(jù),稱為數(shù)據(jù)結(jié)構(gòu)模型。
文件系統(tǒng):樹狀模型(層次模型,檢索效率低)
層次模型、網(wǎng)狀結(jié)構(gòu)(檢索效率高,存儲(chǔ)效率不高)、關(guān)系模型(數(shù)據(jù)組織成二維表,將數(shù)據(jù)組織成二維關(guān)系,類似與excel表,分為行和列)
二維關(guān)系:行(row) 列(column)
表與表的關(guān)系性(降低數(shù)據(jù)冗余) 表與表的約束性
三、數(shù)據(jù)庫的構(gòu)成
數(shù)據(jù):
表:將不同的記錄(數(shù)據(jù))組織在一起,就形成了表;用于存儲(chǔ)數(shù)據(jù)。????? (表是存儲(chǔ)數(shù)據(jù)的唯一單位)
庫:表的集合體,是存儲(chǔ)數(shù)據(jù)的倉庫,以一定的組織方式存儲(chǔ)的互相有關(guān)的數(shù)據(jù)。(ORACLE只有一個(gè)數(shù)據(jù)庫)
庫--->表--->數(shù)據(jù)(行、列)
四、數(shù)據(jù)庫管理系統(tǒng)(DBMS)
將二維關(guān)系數(shù)據(jù)結(jié)構(gòu)模型規(guī)范得以實(shí)現(xiàn),我們稱為數(shù)據(jù)庫管理系統(tǒng)DBMS
遵循三種基本范式才能被成為關(guān)系型數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫管理系統(tǒng)稱為RDBMS
三大范式:
????????? 第一范式:在滿足關(guān)系模型基礎(chǔ)之上,任意一列必須是原子的(不可分割)
????????? 第二范式:在滿足第一范式的情況下,必須有一列的數(shù)據(jù)可以區(qū)分每一行的數(shù)據(jù)(主鍵)
????????? 第三范式:在滿足前兩范式的情況下,在表和表有連接關(guān)系的情況下,如果第一張表依賴第二張表,那么被依賴的表的字段必須是能夠區(qū)別每一行的數(shù)據(jù)的字段(主鍵)
主鍵:有且只有一個(gè),而且不能為空
外鍵:依賴于被依賴表中的某個(gè)字段已有的數(shù)據(jù),被依賴表中這個(gè)數(shù)據(jù)可重復(fù),可以為空
數(shù)據(jù)庫管理系統(tǒng)的分類:
?DBMS:數(shù)據(jù)庫管理系統(tǒng)
RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
NOSQL:非關(guān)系型數(shù)據(jù)庫
NEWSQL:新型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)
包括? 開源解決方案: mysql、mariadb、Percona-server、pgsql ?.....
?????????商業(yè)解決方案: ORACLE、DB2、MS-SQL(SQLSERVER)? ......
基本組成結(jié)構(gòu):磁盤空間管理器、緩沖管理器、文件和存取接口、鎖管理器、事務(wù)管理器、恢復(fù)管理器、SQL引擎
磁盤空間管理器:磁盤空間存儲(chǔ)對(duì)應(yīng)一些數(shù)據(jù)塊,管理磁盤數(shù)據(jù)拉區(qū)到數(shù)據(jù)字典的過程叫做磁盤空間管理器。如:使用 drop database;的一瞬間,就是調(diào)用磁盤管理器,把磁盤塊里面數(shù)據(jù)刪掉。
緩沖管理器:如mysql表中新增的數(shù)據(jù),一瞬間沒存儲(chǔ)到磁盤,在緩沖階段,就在緩沖管理器里,數(shù)據(jù)庫IO并發(fā)大
文件和存取接口:數(shù)據(jù)字典
鎖管理器:數(shù)據(jù)備份;冷備份直接copy、溫備份先將數(shù)據(jù)上鎖(沒有讀權(quán)),等備份完再解鎖。
恢復(fù)管理器:恢復(fù)數(shù)據(jù)和鎖管理器一起使用。
SQL引擎:提供SQL接口的一個(gè)終端界面,同時(shí)將sql語句翻譯成二級(jí)制執(zhí)行碼。
關(guān)系型數(shù)據(jù)庫的事務(wù):原子性、一致性、隔離性、持久性。
SQL引擎:傳遞SQL語句進(jìn)行解釋執(zhí)行
?????????? 數(shù)據(jù)存儲(chǔ)?? C/S架構(gòu)
S:服務(wù)端,監(jiān)聽于套接字3306,接受并處理客戶端應(yīng)用請(qǐng)求、
C:客戶端:CLI 命令行字符界面?? GUI:圖形化處理界面
客戶端三種:程序、命令行、圖形化999
五、數(shù)據(jù)庫內(nèi)容的部分基本概念
1:約束:constraint?? 向數(shù)據(jù)表提供的數(shù)據(jù)要遵守的限制
完整性約束:表約束和鍵約束
主鍵(primary key):一個(gè)或多個(gè)字段的組合,填入的數(shù)據(jù)必須在本表中唯一標(biāo)識(shí)本行,必須提供數(shù)據(jù),不能為空(not null),一個(gè)表只能有一個(gè)。
唯一鍵(unique key):一個(gè)或多個(gè)字段的組合,填入的數(shù)據(jù)必須在本表中唯一標(biāo)識(shí)本行,可以為空,一個(gè)表可以有多個(gè)。
外鍵:一個(gè)表中的某字段可填入數(shù)據(jù)取決于另一個(gè)表的主鍵已有的數(shù)據(jù)。
表約束:范圍大小,非空,字段大小,字段類型等。
2:索引:將表中的一個(gè)或多個(gè)字段中的數(shù)據(jù)復(fù)制一份另存,并且此些需要按照特定次序排序存儲(chǔ)。(鍵一定是索引,但索引不一定是鍵)
3:關(guān)系運(yùn)算:(非常重要,主要運(yùn)用在數(shù)據(jù)的查詢操作)
?????? 選擇:挑選出符合條件的行。
?????? 投影:挑選出需要的字段。
?????? 連接:(設(shè)計(jì)連表操作的運(yùn)算)內(nèi)連接、外連接、左外連接、
六、關(guān)系型數(shù)據(jù)庫常見組件(視圖層)
數(shù)據(jù)庫:database
表??? :table
行:row
列:column
索引:index
視圖:view
用戶:user
權(quán)限:privilege
跟程序開發(fā)相關(guān)的(sql引擎一般都支持過程式編程,支持條件判斷、循環(huán)等。調(diào)用sql代碼)
存儲(chǔ)過程:procedure????????? 直接調(diào)用,僅僅做了數(shù)據(jù)加工,不返回結(jié)果。
存儲(chǔ)函數(shù):function??????????? 調(diào)用完后有返回結(jié)果的代碼片段
觸發(fā)器:trigger?????????????? 也是一片代碼片段,特殊事件發(fā)生,滿足條件觸發(fā)。
事件調(diào)度器:event scheduler?? 定期執(zhí)行內(nèi)建任務(wù),完成周期性調(diào)度任務(wù)
七、簡單的SQL語句
DDL:數(shù)據(jù)定義語言 CREATE,DROP,ALTER(非數(shù)據(jù)層面的組件?? 庫? 表? 視圖? 索引? 存儲(chǔ)過程? 存儲(chǔ)函數(shù))?
DML: 數(shù)據(jù)操作語言 INSERT,DELETE,UPDATE,SELECT
DCL:數(shù)據(jù)控制語言 GRANT,REVOKE(授權(quán)和撤銷授權(quán)).....
命令幫助(查看幫助文檔):
HELP? KEYWORD(命令關(guān)鍵字)
\?? (相當(dāng)于HELP)
SQL語句操作:
查看mysql的狀態(tài)和版本????? status 相當(dāng)于\s
創(chuàng)建庫 ?CREATE DATABASE [IF NOT EXISTS]? DB_NAME;同時(shí)可以指定字符集和排序規(guī)則
刪除庫? DROP DATABASE [IF EXISTS] ‘DB_NAME’;(非常危險(xiǎn),生產(chǎn)環(huán)境不建議使用)?
?創(chuàng)建表:CREATE TABLE 表名(字段1 數(shù)據(jù)類型 修飾符,字段2 數(shù)據(jù)類型 修飾符......) [ENGINE=’’]
查看存儲(chǔ)引擎:SHOW ENGINES;
?刪除表? DROP TABLE [IF EXISTS] ‘tbl_name’;? (也非常危險(xiǎn),謹(jǐn)慎操作)
例:給 root 安全加固、創(chuàng)建新用戶、給用戶賦權(quán)
mysql -u root -p
set password for?'root'@'localhost' = '123456'; //給 root 重新設(shè)置密碼
create user 'test'@'%' identified by '123456'; //創(chuàng)建新用戶
grant all privileges on *.* to 'test'@'%'; //給用戶賦權(quán)
flush privileges; //刷新授權(quán)?
創(chuàng)建 shopxo 用戶,庫,授權(quán)
mysql -u root -p
create database shopxo;
create user 'shopxo'@'%' identified by '123456';
grant all privileges on * .* to 'shopxo'@'%'; //授權(quán)給 wordpress 所有表
flush privileges; //刷新授權(quán)
systemctl restart mysqld.service? //重啟服務(wù)
MySQL(windows版本)命令行的快捷操作鍵
ESC:光標(biāo)刪除至最左側(cè)
F3:上一次命令再操作補(bǔ)全
F7:之前操作過的sql命令列表文章來源:http://www.zghlxwxcb.cn/news/detail-856872.html
exit:退出sql接口(或者quit?? 或者\(yùn)q)文章來源地址http://www.zghlxwxcb.cn/news/detail-856872.html
到了這里,關(guān)于MySQL的基礎(chǔ)知識(shí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!