第二正規化:在滿足第一正規化的基礎上,要有主鍵,從而可以通過該主鍵定位到該行記錄,並且確保記錄的唯一性(主鍵不能重複);
第三正規化:消除傳遞依賴,通俗講就是去除冗餘;
消除冗餘應該比較好理解一些,就是各種資訊只在乙個地方儲存,不出現在多張表中。
比如說大學分了很多系(中文系、英語系、計算機系……),這個系別管理表資訊由以下字段組成:
系編號,系主任,系簡介,系架構。
那麼再回到學生資訊表,張三同學的年齡、性別、學號都有了,我能不能把他的系編號,系主任、系簡介也一起存著?
如果你問三正規化,當然不行,因為三正規化不同意。
因為系編號,系主任、系簡介已經存在系別管理表中,你再存入學生資訊表,就是冗餘了。
三正規化中說的傳遞依賴,就出現了。
這個時候學生資訊表中,系主任資訊是不是依賴於系編號了?而這個表的主鍵可是學號啊!
所以按照三正規化,處理這個問題的時候,學生表就只能增加乙個系編號字段。
這樣既能根據系編號找到系別資訊,又避免了冗餘儲存的問題。
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...