概念和介紹
1.什么是數(shù)據(jù)庫(kù)?
- 數(shù)據(jù)庫(kù)就是存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù)
- 數(shù)據(jù)庫(kù)和Excel很像, 一個(gè)Excel文件就相當(dāng)于一個(gè)數(shù)據(jù)庫(kù)
- 一個(gè)Excel文件中可以有很多的表, 一個(gè)數(shù)據(jù)庫(kù)中也可以有很多的表
- Excel文件的每個(gè)表就是專門用戶用于存儲(chǔ)數(shù)據(jù)的
- 數(shù)據(jù)庫(kù)中的每個(gè)表也是專門用于存儲(chǔ)數(shù)據(jù)的
- 所以學(xué)習(xí)數(shù)據(jù)庫(kù)就是學(xué)習(xí)如何新建表,往表中存儲(chǔ)數(shù)據(jù)和操作表中的數(shù)據(jù)
Excel本質(zhì)是一個(gè)文件, 數(shù)據(jù)庫(kù)本質(zhì)上也是一個(gè)文件
Excel文件中可以有很多表, 數(shù)據(jù)庫(kù)文件中也可以有很多的表
Excel文件的每個(gè)表就是用來(lái)存儲(chǔ)數(shù)據(jù)的, 數(shù)據(jù)庫(kù)文件的每個(gè)表也是用來(lái)存儲(chǔ)數(shù)據(jù)的
2.什么是MySQL?
- MySQL是一個(gè)關(guān)系型數(shù)據(jù), MySQL是由瑞典MySQL AB 公司開發(fā)志珍,目前屬于 Oracle 旗下產(chǎn)品。
- MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一柑船,在WEB 應(yīng)用方面究孕,MySQL是最好的關(guān)系數(shù)據(jù)庫(kù)
- 下載地址: https://dev.mysql.com/downloads/windows/installer/5.7.html
3.什么是關(guān)系型數(shù)據(jù)庫(kù)?
3.1數(shù)據(jù)庫(kù)萌芽階段:
最初程序員們把磁盤上的文件當(dāng)做數(shù)據(jù)庫(kù)來(lái)使用, 但是由于不方便管理和不安全所以后來(lái)就有了第一代數(shù)據(jù)庫(kù)(層次模型和網(wǎng)狀模型數(shù)據(jù)庫(kù))
3.2第一代數(shù)據(jù)庫(kù):
-
層次模型數(shù)據(jù)庫(kù)
- 特點(diǎn):
- 類似于HTML結(jié)構(gòu), 根結(jié)點(diǎn)在最上端颓影,層次最高粘都,子結(jié)點(diǎn)在下,逐層排列
- 有且僅有一個(gè)結(jié)點(diǎn)沒有父結(jié)點(diǎn)氛雪,它就是根結(jié)點(diǎn)
- 其他結(jié)點(diǎn)有且僅有一個(gè)父結(jié)點(diǎn)
- 如果節(jié)點(diǎn)有多個(gè)父節(jié)點(diǎn), 冗余數(shù)據(jù)過多.
- 例如某個(gè)教師既數(shù)據(jù)A系又屬于B系, 那么只能引入冗余數(shù)據(jù)
- 所有的子節(jié)點(diǎn)不能脫離父節(jié)點(diǎn)而單獨(dú)存在
- 如果要?jiǎng)h除父節(jié)點(diǎn)想虎,那么父節(jié)點(diǎn)下面的所有子節(jié)點(diǎn)都要同時(shí)刪除卦尊,但是可以單獨(dú)刪除一些葉子節(jié)點(diǎn)
- 每個(gè)記錄類型有且僅有一條從父節(jié)點(diǎn)通向自身的路徑
- 查詢節(jié)點(diǎn)的時(shí)候必須知道其雙親節(jié)點(diǎn)
-
網(wǎng)狀模型數(shù)據(jù)庫(kù)
- 特點(diǎn):
- 類似于增強(qiáng)版層次模型
- 允許結(jié)點(diǎn)有多于一個(gè)父結(jié)點(diǎn)
- 可以有一個(gè)以上的結(jié)點(diǎn)沒有父結(jié)點(diǎn)
- 結(jié)構(gòu)比較復(fù)雜,隨應(yīng)用環(huán)境的擴(kuò)大舌厨,數(shù)據(jù)庫(kù)的結(jié)構(gòu)就變得越來(lái)越復(fù)雜岂却,不利于最終用戶掌握
3.3第二代數(shù)據(jù)庫(kù):
-
關(guān)系型數(shù)據(jù)庫(kù)
- 特點(diǎn):
- 1.每個(gè)表都是獨(dú)立的
- 2.表與表之間通過公共字段來(lái)建立關(guān)系(例如ID字段)
- 3.多表查詢效率低
- SQL Server/Oracle/MySQL
-
非關(guān)系型數(shù)據(jù)庫(kù)
- 解決了關(guān)系型數(shù)據(jù)庫(kù)多表查詢的效率問題
- Redis、mongodb等
https://baike.baidu.com/item/NoSQL/8828247?fr=aladdin
數(shù)據(jù)庫(kù)的基本操作
1.創(chuàng)建數(shù)據(jù)庫(kù)
create database [if not exists] 數(shù)據(jù)庫(kù)名稱 [字符編碼];
示例一:
在MySQL中創(chuàng)建一個(gè)名稱叫做stu1的數(shù)據(jù)庫(kù)
create database stu1;
注意點(diǎn): 如果已經(jīng)存在一個(gè)叫做stu1的數(shù)據(jù)庫(kù), 那么會(huì)報(bào)錯(cuò)
示例二:
判斷如果沒有stu1的庫(kù)就創(chuàng)建, 有就不創(chuàng)建
企業(yè)開發(fā)中推薦這樣寫
create database if not exists stu1;
示例三:
創(chuàng)建一個(gè)數(shù)據(jù)庫(kù), 告訴MySQL將來(lái)數(shù)據(jù)庫(kù)中存儲(chǔ)的內(nèi)容采用gbk編碼
create database if not exists stu2 charset=gbk;
注意點(diǎn):
如果沒有手動(dòng)設(shè)置數(shù)據(jù)庫(kù)的編碼, 那么默認(rèn)會(huì)采用安裝時(shí)全局的設(shè)置作為默認(rèn)的編碼
就是在安裝時(shí)日本兒界面中指定的編碼
2.如何查看數(shù)據(jù)庫(kù)全局默認(rèn)的編碼
show variables like 'character_set_%';
3.如果查看某個(gè)數(shù)據(jù)庫(kù)的編碼
show create database 數(shù)據(jù)庫(kù)名稱;
4.特殊的數(shù)據(jù)庫(kù)名稱處理
如果數(shù)據(jù)庫(kù)的名稱是SQL語(yǔ)句的關(guān)鍵字或者是特殊符號(hào), 那么數(shù)據(jù)庫(kù)的名稱需要用反引號(hào)括起來(lái)
create database if not exists create charset=utf8; #報(bào)錯(cuò)
create database if not exists `create` charset=utf8; #不會(huì)報(bào)錯(cuò)
create database if not exists `#%~*%#` charset=utf8; #不會(huì)報(bào)錯(cuò)
2.如何刪除數(shù)據(jù)庫(kù)
drop database [if exists] 數(shù)據(jù)庫(kù)名稱;
示例一:
drop database stu1;
注意點(diǎn): 如果數(shù)據(jù)庫(kù)不存在會(huì)報(bào)錯(cuò)
示例二:
判斷只有表存在才刪除, 不存在就不刪除
drop database if exists stu1;
新建-- C/增加
create database [if not exists] 數(shù)據(jù)庫(kù)名稱 [字符編碼];
刪除-- D/刪除
drop database [if exists] 數(shù)據(jù)庫(kù)名稱;
讀取-- R/查看
show databases;
修改-- U/修改
alter database 數(shù)據(jù)庫(kù)名稱 charset=字符編碼
示例:
alter database stu2 charset=utf8;