資料庫:字面意思,儲存資料的倉庫 database
把資料以指定格式存入硬碟,提供一系列的增刪改查
分類:網狀型資料庫
資料之間有著千絲萬縷的聯絡,操作起來比較麻煩,比如增刪改查
層次型資料庫
以樹型結構來展示資料之間的關係:有很大的侷限性,資料之間必須有上下級的關係,
當兩種資料有很多共同點時很難找出上下級關係時,就會很尷尬,很難分配資料
關係型資料庫
sql以二維表的方式來描述資料
列:欄位名 欄位的資料型別
行:記錄 具體資料
表結構:欄位名(本列資料的性質)+欄位類(本列資料的型別)
表記錄:每行資料
非關係型資料庫
nosql=「不僅僅是sql」
nosql 面向的是大資料處理
傳統的關係型資料庫在面對web2.0,特別是對特別龐大的資料進行處理時顯得有些力不從心,但是nosql在特定的情況下就可以發揮出強大的高效率和效能
常見的nosql:
(1)鍵值(key-value)儲存資料庫
代表:redis
類似於雜湊表,鍵值一一對應,通過key來進行增刪改查,每乙個key對應乙個value
優點:簡單,易部署,高併發
(2)列儲存(column-oriented)資料庫
代表:cassandra
把資料存在乙個列族中,查詢是乙個列族一起被查詢
優點:適用於分布式儲存海量資料
(3)面向文件(document_oriented)資料庫
代表:mongodb
類似於鍵值儲存資料庫,以本結構化的文件和特當的格式儲存資料,不如json
優點:允許之間巢狀鍵值,效率比鍵值儲存資料庫高
(4)圖形資料庫
代表:neo4j
以圖的方式儲存,實體被當做定點,實體之間的關係稱為邊
(5)時序資料庫
代表:infiuxdb
基於時間的一系列資料,在有時間的座標中間資料成線
優點:揭示資料的趨勢性,規律性,異常性;用做大資料分析
(6)搜尋引擎儲存
代表:elasticsearch
(7)其他
物件儲存:db40
xml儲存:derkeley db xml
詳情見常用資料庫排名及分類介紹
oracle:甲骨文 安全 需支付一定的費用
mysql:甲骨文 小巧方便 免費
db2:ibm 速度快 可靠性高
sybase: 賽貝斯 真正開放 高效能
sqlserver:微軟 標準
access:微軟
資料庫的作用:
資料定義: 實現對錶結構的增刪改查
資料操作: 實現對錶記錄的增刪改查
資料約束: 實現對列資料取值約束和表關係約束
許可權管理:對資料庫使用者許可權的管理
併發控制: 實現多個用於對同乙個資料的併發操作
資料安全: 資料恢復和資料備份
資料庫名詞:
db: database 資料庫
dba: database administrator 資料庫管理員
dbms: database manager system 資料庫管理系統
rdbms:relation database manager system 關係型資料庫管理系統
bit(n) 1-64 二進位制 例:bit(2)表示2個二進位制,取值範圍0~3
tinyint 1個位元組 例:tinyint(5) 當值為123時,即00123
int/integer 4個位元組
bigint 8個位元組
float(n,m) 4個位元組 n是有效位數 m是小數字數 例:float(5,3) 整數5-3位 小數3位
double(n,m) 8個位元組
decimal 專門用於表示錢
char(n) 固定長度 1-255 例:char(10) 資料在資料庫中固定佔10個字元的空間
varchar(n) 可變長度 1-65535
text 文字 64kb
longtext 大文字 4g
tinyblob 256b
blob 64kb
longblob 4g
bool/boolean 1b
date ***x-xx-xx
time xx:xx:xx
datetime ***x-xx-xx xx:xx:xx
timestamp
year(n) 年
mysql中的函式
abs(n)求絕對值
近似值:ceil(n):小數點後大於0.1進一
floor(n):和ceil相反,小數點後少0.1都不進
round(n):四捨五入
round(n,m):四捨五入保留m為小數
truncate(n,m):保留m為小數
開方:sqrt(n):求n的開方
pow(n.m):求n的m次方
隨機:rand():隨機[0,1)
隨機整數[a,b]----truncate(rand()*(b-a+1)+a)
求餘:mod(n,m) 求n餘m的值
進製轉換:bin(n) 獲取二進位制的n
hex(n) 獲取16進製制的n
操作字串函式:
length(str) 獲取位元組個數
char_length(str) 獲取字元個數
substring(str,startindex,length) 擷取從startindex楷書 擷取length個字元
substring(str,startindex) 擷取從startindex開始到末尾
和substr一樣
注意:字串下標從1開始
ascii(str) 獲取str第乙個字元在編碼表中對應的整數
concat(str1,str2,str3) 字串拼接
trim(str) 去除兩邊的空格
ltrim(str) 去除左邊的空格
rtrim(str) 去除右邊的空格
reverse(str) 字串反轉
upper(str) 把所有字母大寫
lower(str) 把所有的字母小寫
sql structured query language 結構化查詢語言
針對關係型資料定義的資料庫語言標準 對關係型資料庫進行增刪改查(語句庫對話的語言)
sql標準:適用於所有的關係型資料庫
sql方言:適用於當前資料庫
按功能分類:
ddl: 資料定義 data defined language :對錶結構的增刪改查
關鍵字:create drop alter show
dml:資料操作 data manipulation language : 對錶記錄的增刪改
關鍵字:insert delete update
dql:資料查詢 data query language :對錶記錄的查詢
關鍵字:select
tcl:事務管理 transaction control language :對資料庫事物的操作
關鍵字: commit rollback
dcl:許可權控制 data control language : 對使用者許可權的管理
關鍵字: grant revoke
sql語句詳情見:點我傳送
事物管理詳情見:點我傳送
許可權管理詳情見:點我傳送
通過約束:來防止不合法的資料進入表中
通過定義約束:來限制表中的資料 實現表資料的完整性(資料的統一,和諧,準確)
資料完整性的分類:
域完整性:列取值的準確,和諧
實體完整性:行資料的完整,統一
參照完整性:表與表之間的參照關係
約束詳解你確定不進來看看?
前端隨心記 MySQL
資料庫 顧名思義,就是儲存資料的倉庫。mysql是一種關聯資料庫管理系統,關聯資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性。mysql是乙個輕量級的資料庫,與php配合使用效果非常好,mysql支援大部分sql語句。常見的資料庫 oracle mys...
隨心所語之「讀書」
電腦科學與技術畢業,幹c 開發4年,但是,發現好多東西 甚至是相關的東西都不會 不懂,於是,就需要學習,需要讀書。也許,這就是所謂的學無止境。我買的書,有30 本,但是看完的,卻是寥寥無幾,為什麼呢?簡單乙個詞 沒有恆心。但是,為什麼會沒有恆心呢?這裡,我有點沒 恆心 的心得,希望糾正這些之後,可以...
隨心所「語」之 STL
自己是個程式設計師,用c 開發也有5年時間了。期間,stl用的挺多了,對其印象也挺好的。網上 周圍,許多人都不用stl,對此我比較疑惑。網上找了下,發現主要有下面幾個問題 1 膨脹。stl是模板實現,在每乙個宣告 使用的地方,都會擴充套件,導致 膨脹。個人看法 的確存在這樣乙個問題,暫時也沒看到好的...