1. 程式人生 > >Python-數據庫(編程)

Python-數據庫(編程)

二維 structure 視圖 con 增刪改查 偏移 運維 字段 mage

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);

  如果主鍵,唯一鍵沖突,就忽略

Python-數據庫(編程)