資料庫基本知識

2021-09-25 06:18:43 字數 2809 閱讀 1135

第二正規化:在滿足第一正規化的基礎上,要有主鍵,從而可以通過該主鍵定位到該行記錄,並且確保記錄的唯一性(主鍵不能重複);

第三正規化:消除傳遞依賴,通俗講就是去除冗餘;

消除冗餘應該比較好理解一些,就是各種資訊只在乙個地方儲存,不出現在多張表中。

比如說大學分了很多系(中文系、英語系、計算機系……),這個系別管理表資訊由以下字段組成:

系編號,系主任,系簡介,系架構。

那麼再回到學生資訊表,張三同學的年齡、性別、學號都有了,我能不能把他的系編號,系主任、系簡介也一起存著?

如果你問三正規化,當然不行,因為三正規化不同意。

因為系編號,系主任、系簡介已經存在系別管理表中,你再存入學生資訊表,就是冗餘了。

三正規化中說的傳遞依賴,就出現了。

這個時候學生資訊表中,系主任資訊是不是依賴於系編號了?而這個表的主鍵可是學號啊!

所以按照三正規化,處理這個問題的時候,學生表就只能增加乙個系編號字段。

這樣既能根據系編號找到系別資訊,又避免了冗餘儲存的問題。

a表 id name b表 id job parent_id

1 張3 1 23 1

2 李四 2 34 2

3 王武 3 34 4

a.id同parent_id 存在關係

1) 內連線

select   a.

*,b.

*from a inner

join b on a.id=b.parent_id

結果是

1 張3 1 23 1

2 李四 2 34 2

2)左連線

select   a.

*,b.

*from a left

join b on a.id=b.parent_id

結果是

1 張3 1 23 1

2 李四 2 34 2

3 王武 null

3) 右連線

select   a.

*,b.

*from a right

join b on a.id=b.parent_id

結果是

1 張3 1 23 1

2 李四 2 34 2

null 3 34 4

4) 完全連線

select   a.

*,b.

*from a full

join b on a.id=b.parent_id

結果是

1 張3 1 23 1

2 李四 2 34 2

null    3 34 4

3 王武 null

use myblog;

// 使用資料庫 myblog

show

tables

;// 展示當前資料庫中所有的表

-- 插入操作,因為password是關鍵字所以需要加反引號

insert

into 表名 (username,

`password`

,realname)

values

("zhangsan"

,"123"

,"張三");

insert

into users (username,

`password`

,realname)

values

("lisi"

,"123"

,"李四");

insert

into blogs (title,content,createtime,author)

values

("標題a"

,"內容a"

,1556590436503

,"zhangsan");

-- 查詢操作

select

*from users;

select username from users;

select

*from users where username=

"zhangsan"

and`password`

="123"

;-- 模糊查詢

select

*from users where username like

"%san%"

;select

*from users where

`password`

like

"%1%"

order

by id desc

;-- 取消安全模式,取消安全模式後才可以正常更新

set sql_safe_updates =0;

-- 更新

update users set realname =

"李四2"

where username =

"lisi"

;-- 刪除,安全起見,不加where條件不能刪除

delete

from users where username =

"lisi"

;-- 企業中刪除一般不會真正刪除該條記錄,而是增加乙個狀態列,通過做標記來判斷是否已刪除

select

*from users where state =1;

-- 不等號<>

select

*from users where state <>

0;

資料庫基本知識

記錄集的游標型別 forwardonly指標一直向下走.移動速度快,但是不能儲存走過的記錄.資源占用少.主要運用在服務端.static 相當於造了乙個一摸一樣的副本.不管資料庫怎麼改,都是改的副本.真正的資料沒有改.最後直接 更新到真正的資料庫.靜態適合只是讀取資料庫中的資料.比如查詢.但編輯不適合...

資料庫基本知識

語句 1 語法 select 列名稱 from 表名稱 或 select from 表名稱 2,sqlcreate 語句 1 sql createtable語句 1 語法 create table 表名稱 列名稱1,資料型別,列名稱2,資料型別,列名稱3,資料型別 2 sql creatindex ...

資料庫 基本知識

4 24 acid 資料庫四大特性 a 原子性 atomicity 要麼做完,要麼不做,舉個例子,a給b轉錢,不會出現a轉了錢,b沒有收到錢 c 一致性 consistency 從乙個狀態到另乙個狀態是一致的,再舉個例子,a給b轉錢,不會出現a轉了100塊,b只得到了50塊.i 隔離性 isolat...