Python-資料庫(程式設計)
1、資料庫概念
資料庫:按照資料結構來組織,儲存,管理資料的倉庫
按照資料模型分類:網狀資料庫,層次資料庫,關係型資料庫。
層次資料庫:
以樹形結構表示實體及其之間的聯絡,關係只能支援一對多。(IBM 的 IMS)
2、去IOE
IT架構中,去掉IBM 的小型機,Oracle資料庫, EMC儲存裝置,取而代之使用自己在開源軟體基礎上開發的系統。
去IOE 轉而使用廉價的架構,穩定性一定下降,需要較高的運維水平解決。
3、NoSQL
NoSQL是對非SQL,非傳統關係型資料庫的統稱。
NoSQL:非關係型,非分散式,不提供ACID 的資料庫設計模式。
目前常用的資料庫:
redis:記憶體資料庫,鍵值儲存,v 可以是任何型別
memcached:一般用來session同步,k-v的v只能是string
MongoDB:文件資料庫,非記憶體的
處理大資料:
cassandra:列儲存資料庫,不限制列數,可以根據具體情況增加列數
HBase:列資料庫
搜尋引擎:
Elasticsearch: 倒排索引(反過來查),索引庫
Solr:大資料上使用
HIve:大資料中的,類似於資料倉庫,已經開始屬於NoSQL領域
支援SQL,所以可以認為是關係型
SQL:大資料領域的唯一語言
非傳統的 關係型資料庫,統稱為NoSQL
4、MySQL
MySQL 是一種關係型資料庫管理軟體,支援網路訪問,預設服務埠 3306
MySQL 通訊使用mysql協議
SQL語句:
SQL是結構化查詢語言,Structured Query Language 1987被ISO 組織標準化
所謂主流的關係型資料庫都支援SQL, NoSQL也有很大一部分支援SQL
SQL語句分為
DDL 資料定義語言:複製資料庫定義,資料庫物件定義,由CREATE,ALTER與DROP三個語法組成
DML 資料操作語言,負責對資料庫物件的操作,CRUD增刪改查
DCL 資料控制語言:負責資料庫許可權訪問控制,由GRANT 和REVOKE 兩個指令組成
TCL 事務控制語言:負責處理ACID 事務,支援commit, rollback指令
SQL語句 不區分大小寫
SQL語句末尾應該使用分號結束
5、約束:
primary key :主鍵,一般表中的一個欄位或者多個欄位設定為主鍵,或者聯合主鍵,主鍵的列不能包含空值null,主鍵一般是整形,長整形,且自動增長,一般表中都有主鍵
unique key :唯一鍵,可以為空,但是不為空的不可重複。
約束 Constraint
定義了主鍵,就有主鍵約束
定義了唯一鍵約束,就有唯一鍵約束
外來鍵約束:
外來鍵:在表B 中的列,關聯表A 中的主鍵 ,表B中的列就是外來鍵
A表稱為主表,B表稱為從表
插入規則:
不要定義
如果在表B中插入一條資料,B的外來鍵列插入了一個值,這個值必須是表A中存在的主鍵值
更新規則:
定義外來鍵約束時指定該規則
刪除規則:
定義外來鍵約束時指定該規則:
外來鍵約束的操作:
CASCADE:從父表刪除或更新會自動刪除或更新字表中匹配的行。
SET NULL :從父表刪除或更新行,會設定子表中的外來鍵列為NULL,但必須保證子表列沒有指定NOT NULL,
RESTRIC:如果從父表刪除主鍵,如果子表引用了,則拒絕對父表的刪除或更新操作
NO ACTION:標準SQL的關鍵字,在MySQL中與RESTRIC相同,拒絕對父表的刪除或更新操作。
外來鍵約束,是為了保證資料完整性,一致性,杜絕資料冗餘,資料訛誤
6、檢視:
檢視,也稱為虛表,查詢語句生成的,可以通過檢視程序CRUD操作
檢視的作用:
簡化操作,將複雜查詢SQL語句定義為檢視,可以簡化查詢
資料安全,檢視可以只顯示真實表的部分列,或計算後的結果,從而隱藏真實表的資料
7、資料型別:
LENGTH函式返回位元組數,
char 可以將字串變成等長,這樣每個偏移量是一樣的,空間換時間,效率極高varchar變長。
8、關係操作:
關係:在關係資料庫中,關係就是二維表
關係操作就是對錶的操作
選擇:又稱為限制,是從關係中選擇出滿足給定條件的元組
投影:在關係投影就是從選擇出若干屬性列組成新的關係
連線(join):將不同的兩個關係連線成一個關係
9、DML---CRUD增刪改查
INSERT INTO log (id,name, logname, password) VALUES(1,'jack', 'jakc', 'kacl') ON DUPLICATE KEY UPDATE name='lucy';
如果主鍵,唯一鍵衝突,就執行update後面的設定。
INSERT IGNORE INTO log (id) VALUE(1);
如果主鍵,唯一鍵衝突,就忽略