基本資料庫知識與學習路線

2021-07-10 22:27:28 字數 1849 閱讀 6526

1.engine

(1)innodb

(2)myisam

主要都是效能和安全上的折衷。

innodb更安全,①支援事務②支援外來鍵完整性約束

myisam效能更好。

注意:①mysql5.5之前,預設引擎是myisam;5.5及之後,預設引擎是innodb。

②在mysql5.6之前,innodb不支援fulltext,而myisam支援;5.6及之後,innodb也支援fulltext了。

2.基本操作

(1)建:create

(2)改:update、alter

(3)增:insert

(4)刪:drop、delete、truncate

(5)查:select

(6)導:select into、mysqldump、load、source

注意:①update是更新字段值,而alter可以增刪字段。

②drop是刪表,delete是刪除所有資料,且可以帶有控制語句,而truncate是刪除所有資料。truncate比delete效率高。

③load是load其他檔案資料,而source是匯入sql檔案,一般是指令。

3.表關聯

(1)innerjoin與outerjoin

主要區別就是,在on的條件下,如果沒有對應的項怎麼處理。

內連線,就不顯示沒有對應條件的。

外連線,就算沒有也會顯示乙個null。

(2)leftjoin與rightjoin

左右都是外連線。

然後,左是會將左邊的表的select語句後的項列出來,不管右邊表有沒有符合on條件的項,如果沒有就是null也要顯示出來。

右連線與左相對,肯定會將右邊的顯示出來。

4.索引

這個我參考的是ref-mannual mysql 5.7      8.3 optimization and indexes

(1)概念

被索引的條目,在接受檢索時會像指標一樣,使得查詢能夠快速定位滿足條件的行。

①建立索引是對某個列(屬性)建立索引。

②索引被用來,快速找出具有某個列值(屬性值)的行。

③具有以下性質的都算索引:primary key、unique、index、fulltext,它們大多數存放在b-tree裡面。

④最經常使用index的語句是select後面跟的where

這一點來自知乎,輪子哥的回答:

⑤是現有需求和sql,然後index;而不是現有index,然後寫出對應sql

5.四大正規化

資料庫正規化那些事

總結起來:

1nf: 欄位是最小的的單元不可再分

2nf:滿足1nf,表中的字段必須完全依賴於全部主鍵而非部分主鍵

3nf:滿足2nf,非主鍵外的所有字段必須互不依賴

bcnf:每個表中只有乙個候選鍵(不同行不同值)

4nf:滿足3nf,消除表中的多值依賴 ,即乙個字段不能同時取多個值

但是更多的表很可能意味著,查詢效率降低,對於儲存並不是最大的問題的今天,

一般滿足到3nf即可,甚至,滿足到2nf即可。

6.層級結構的實現

參考我的這個帖子:資料庫層級結構的實現。

資料庫學習路線

迄今為止也已經出現了很多資料庫,常用的有mysql mongdb redis rocksdb等,對大多數開發者來說,掌握一些基本原理,能夠熟練幾種不同型別資料庫已經足夠了。關於資料庫的大致分類可以分為 rdbms,nosql,newsql 這幾類,具體區別可以參考 5分鐘理解資料庫全景圖 sql,n...

基本資料庫建立

ddl 建立資料庫 create database 資料庫名字 使用資料庫 use 資料庫名字 刪除資料庫 drop database 資料庫名字 建立表create table 表名 列,engine innodb charset utf8 drop table 表名 alter table 表名...

資料庫 基本資料操作

通用語法 insert into table name field1,field2,fieldn values value1,value2,valuen 例子 通用語法 select column name,column name from table name where clause 使用 wh...