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);
如果主鍵,唯一鍵沖突,就忽略
10、連接 join
1 BOLB:一般對於圖片等數據,都放在磁盤中,把路徑(一般相對路徑)放在數據庫中 2 text:一般不會把文件放在數據庫中,查找非常麻煩,,一般選擇搜索引擎數據庫,如 ES等 3 4 join: 5 coross join = inner join, 需要寫條件,重復列,不會去掉(join,默認就是inner) 6 nature join 一般不怎么用,它是利用主鍵,不需要寫條件,並且過濾掉重復項 7 8 9 10 left join:從左表的每一項都存在,且都到右表找,沒有的,就用NULL(懸空)
11、事務Transaction
隔離級別:
12、數據倉庫和數據庫的區別: