MySQL知識點回顧

2021-10-10 21:50:40 字數 3505 閱讀 5535

資料庫設計的正規化

db:資料庫(database):儲存資料的庫,儲存了一系列有組織的資料。

dbms:資料庫管理系統(database management system):上面的資料庫就是通過dbms進行建立的, dbms就是乙個資料庫產品。

sql結構化查詢語言(structure query language):專門用來與資料庫(dbms)通訊的語言。

優點:

所有的dbms(資料庫軟體)都支援sql

簡單易學

語言靈活,可以完成很多複雜和高階的資料庫操作

三者之關係:使用dbms輸入sql來操作db

伺服器的啟動和停止:用管理身份執行cmd視窗.

開啟:net start 服務名.

關閉:net stop 服務名.

伺服器可以在系統的服務中檢視,並且mysql也可以設定為自動和手動,我這裡設定的是自動,電腦開啟之後會自動開啟mysql,不用每次手動開啟那麼麻煩,當然相應的會拖延開機時間.

mysql的登入與退出(這裡只講cmd命令下的開啟方式):

// 在cmd視窗中輸入,中的內容為可省略,埠號是自己設定的,mysql預設是3306

mysql [-h

(主機名) localhost -

p(埠號)

]-uroot -

p(密碼)

// 一般我們可以直接縮寫,最後乙個root為密碼

mysql -uroot -proot

// 示例:

mysql -h localhost -p3306 -uroot -proot

講完了mysql的前置需求,現在我們說一下sql的四大分類.

ddl :運算元據庫、表

dml:增刪改表中的資料

dql:查詢表中的資料

dcl:管理使用者/授權

接著我們再說下mysql中的語法規範:

mysql中不區分大小寫,建議關鍵字大寫,表名、欄位名小寫

每條語句用分號結尾,在cmd視窗中,如果不加分號,那麼系統會認為語句沒有寫完,不會執行,但是在軟體中可以直接選擇執行,不加分號也可以,這裡建議是加上分號

// 這是一條sql查詢語句

select

*from

employees

where

id =

1;

主鍵外來鍵的簡單了解主鍵:用來確定一條記錄的唯一標識,就像每個員工都有自己的編號,通過這個編號,就可以知道這個員工的所有資訊.

外來鍵:用於與另一張表做關聯.就像每個員工都有乙個職位編號,職位編號對應了職工表中的主鍵. 用一句話描述就是:"表a中的字段,是表b中的主鍵,那麼這個字段就是外來鍵.

需要注意的是,乙個表只能有乙個主鍵,但是可以有多個外來鍵

多表之間的關係

一對一:

人和身份證:乙個人只有乙個身份證號碼,而乙個身份證號碼只能對應乙個人,這就是一對一關係.

實現方式:

可以在任意一方設定唯一外來鍵指向另一方的主鍵

一對多(多對一):

古代的門派和**:乙個門派可以有多個**,但乙個**只能加入乙個門派,這就是一對多關係

實現方式:

在多的一方建立外來鍵,指向"一"一方的主鍵

多對多:

江湖俠客和武林秘籍:江湖俠客可以學很多門武功,同樣,乙個武功可以被很多江湖俠客所學習.  

實現方式:

多對多關係需要借助第三張中間表,中間表需要包含兩個字段,分別指向兩張需要實現多對多關係表的主鍵.

概念:設計資料庫是,需要遵循的一些規範,要遵循後面的正規化要求,必須先遵循前邊的所有正規化要求

關於正規化前提的幾個重要概念:

函式依賴:a–>b,如果通過a屬性(屬性組)的值,可以確定b屬性的值,則稱為b依賴於a

如:學號–>姓名 (學號、課程名)–>分數

完全函式依賴:a–>b.如果a是乙個屬性組,則b屬性值的確定需要a屬性組中的所有屬性值.

如:(學號、課程名)–>分數

部門函式依賴:a–>b,如果a是乙個屬性組,則b屬性值的確定只需要a屬性組中的某些值

如:(學號、課程名)–>姓名

傳遞函式依賴:a–b.b–>c,如果通過a屬性值(組)的值可以確定b屬性的值,再通過b屬性值確定c屬性值,那麼則稱c傳遞依賴於a

如:學號–>系名,系命–>系主任

碼:如果一張表中,乙個屬性或屬性組,被其他屬性所完全依賴,則稱這個屬性(屬性組)為該錶的碼

主屬性:碼屬性(組)的所有屬性

非主屬性:除主屬性外的所有屬性

第一正規化(1nf):

每一列都是不可分割的原子資料項,就相當於一張表中的一條資料,是最基本的正規化
第二正規化(2nf):

在1nf的基礎上,非碼屬性必須完全依賴於碼(在1nf的基礎上消除非主屬性對主碼的部分函式依賴)
第三正規化(3nf):

在2nf的基礎上,任何非主屬性不依賴於其他非主屬性(在2nf的基礎上消除傳遞依賴)
例表:

(此表的主屬性組為:id、課程名)

首先分析一下此表存在的問題:

資料冗餘

存在部分函式依賴,(姓名,系命,系主任依賴於id),這樣如果小明和小紅畢業了,那麼對應的系名,系主任也就消失了,這顯然不合理

存在傳遞依賴:(系名依賴於id,系主任依賴於系名)

下面將表設定為如下,則可以解決以上所有問題.

以上所有內容借鑑 尚矽谷與傳智播客。

知識點回顧

回顧 簡介 python 安裝 python3.8.5 why?python解釋型語言,安裝python3 直譯器 lib pip命令 pip list pip install x pip uninstall 解除安裝 pip install 版本號 pip freeze requiremente....

知識點回顧

方法 變數作用域 方法過載 ref 引用傳參,側重於在方法中一定要修改引數,傳入方法前必須賦值 out 側重於輸出,方法返回前 引數使用前 必須賦值 params 可變引數,只能修飾陣列型別,只能在方法列表的最後.如果沒有給可變引數賦值,那麼可變引數會自動初始化長度為0.方法遞迴 迴圈 方法自己呼叫...

c 知識點回顧

過載只與函式的引數有關,而與函式的返回型別無關 int 形參 實參 0 char short int double 形參 實參 float double 用省略號 表示,即函式可以有任意個任意型別的引數。如,int printf const char format,在乙個函式中,可指定多個 甚至全部...