SQL的概念與發展 - 極客時間學習筆記

瞭解SQL

SQL的兩個重要標準是SQL92和SQL99.sql

SQL語言的劃分

  1. DDL,也叫Data Definition Language,也就是數據定義語言,用來定義數據庫對象,包括數據庫、數據表和列. 經過DDL,能夠建立、刪除和修改數據庫和表結構
  2. DML,也叫Data Manipulation Language, 數據操做語言,用它來操做和數據庫相關的記錄,包括了增長、刪除、修改數據表中的記錄.
  3. DCL,也叫Data Control Language,數據控制語言,用來定義訪問權限和安全級別.
  4. DQL,也叫Data Query Language,數據查詢語言,用它來查詢想要的記錄,是SQL語言的重中之重,也是學習的重點.

SQL開始

SQL是咱們與DBMS(數據庫管理系統)交流的語言,在建立DBMS以前,須要對它進行設計,對於RDBMS(關係數據庫管理系統)來講採用的是ER圖(Entity Relationship Diagram),即實體-關係圖的方式進行設計, ER圖評審經過,再用SQL語句或者可視化管理工具(如Navicat)建立數據表.數據庫

實體 - 關係是描述現實世界的概念模型,該模型有三個要素: 實體、屬性、 關係.緩存

實體是須要管理的對象, 屬性是標識每一個實體的屬性, 關係則是對象之間的關係.安全

SQL大小寫的規範
  1. 表名、表別名、字段名、字段別名等都小寫
  2. SQL保留字、函數名、綁定變量等都大寫

SELECT name, hp_max FROM heros WHERE role_main = '戰士'網絡

DBMS的前世此生

DB、DBS和DBMS的區別

DBMS的英文全稱是DataBase Management System,數據庫管理系統,時機上是對多個數據庫進行管理,因此能夠理解爲 DBMS = 多個數據庫(DB) + 管理程序.數據結構

DB的英文是DataBase,也就是數據庫.數據庫是存儲數據的集合,能夠理解爲多個數據表.nosql

DBS的英文是DataBase System,數據庫系統.是更大的概念,包括了數據庫、數據庫關係系統以及數據庫管理人員DBA.分佈式

注意的是咱們一般叫MySQL、Oracle等稱之爲數據庫,準確的來講,他們應該是數據庫管理系統,也就是DBMS.函數

排名前二十的DBMS

瞭解了DBMS的概念以後,當下主流的DBMS都有哪些? 看下圖,是2019年5月DB-Engine公佈的DBMS的排名:
工具

排名能夠看出,關係型數據庫絕對是DBMS的主流,使用最多的DBMS分別是Oracle、MySQL和SQL Server.

關係型數據庫(RDBMS)是創建在關係模型基礎上的數據庫,SQL就是關係型數據庫的查詢語言.

相對於SQL,NoSQL泛指非關係型數據庫,包括了榜單上的鍵值型數據庫數據庫、文檔型數據庫、搜索引擎和列存儲等,除此之外還包括圖形數據庫.

鍵值型數據庫經過key-value鍵值的方式來存儲數據,其中key和value能夠是簡單的對象,也能夠是複雜的對象.key做爲惟一標識符,有點事查找速度快,這方面明顯優於關係型數據庫,同事缺點也很明顯,沒法像關係型數據庫同樣自由使用條件過濾(好比WHERE),若是不知道去那裏查找數據,就要遍歷全部的鍵,須要消耗大量的計算.鍵值型數據庫典型的使用場景就是做爲內容緩存. Redis是最流行的鍵值型數據庫.

文檔型數據庫用來管理文檔,在數據庫中文檔做爲處理信息的基本單位,一個文檔就至關於一條記錄,MongoDB是最流行的文檔型數據庫.

搜索引擎也是數據庫檢索中的重要應用,常見的全文搜索引擎有Elasticsearch、Splunk和Solr. 雖然關係型數據庫採用了索引提高搜索效率,可是針對全文索引效率卻極低.搜索引擎的優點在於採用了全文索引的技術,核心原理是"倒排索引".

列式數據庫是相對於行式存儲的數據庫,Oracle、MySQL、SQL Server等數據庫都是採用的行式存儲(Row-based),而列式數據庫是將數據按照列式存儲到數據庫中,這樣作的好處是能夠大量下降系統的I/O,適合於分佈式文件系統,不足在於功能相對有限.

圖形數據庫,利用了圖這種數據結構存儲了實體(對象)之間的關係.最典型的例子就是社交網絡中人與人的關係,數據模型主要是以節點和邊(關係)來實現,特色在於能高效地解決複雜的關係問題.

SQL陣營和NoSQL陣營

NoSQL的分類不少,剛纔提到的鍵值型、文檔型、搜索引擎、列式存儲和圖形數據庫等都屬於NoSQL陣營.也只有用NoSQL一次才能將這些技術囊括進來.即便如此,在DBMS排名中,仍是SQL陣營的比重更大,影響力前五的DBMS中有4個是關係型數據庫,而排名前20的DBMS中也有12個是關係型數據庫.因此說SQL仍是很是重要的.

NoSQL的演變:

  • 1970: NoSQL = We have no SQL
  • 1980: NoSQL = Know SQL
  • 2000: NoSQL = No SQL
  • 2005: NoSQL = Not only SQLL
  • 2013: NoSQL = No, SQL

NoSQL對SQL作了很好的補充,因此說NoSQL在當下的時代仍是很重要的.

SQL陣營的DBMS

1979 年,Oracle 2 誕生,它是第一個商用的 RDBMS(關係型數據庫管理系統),隨後被賣給了軍方客戶。隨着 Oracle 軟件的名氣愈來愈大,公司也改叫 Oracle 公司。20 世紀 90 年代,Oracle 的創始人埃裏森成爲繼比爾·蓋茨以後第二富有的人,能夠說 IBM 締造了兩個帝國,一個是軟件業的霸主微軟,另外一個是企業軟件市場的霸主 Oracle。現在 Oracle 的年收入達到了 400 億美金,足以證實商用數據庫軟件的價值。從這點咱們也能看出,若是選擇了一個大的賽道,就要儘早商業化,佔據大型企業客戶徹底能夠建立巨大的商業價值,也足以證實一個軟件企業不須要靠賣硬件也能夠掙到不少錢。

MySQL 是 1995 年誕生的開源數據庫管理系統,由於免費開源的特性,獲得了開發者的喜好,用戶量迅速增加,成爲開源數據庫的 No.1。但在發展過程當中,MySQL 前後兩次被易手,先是在 2008 年被 SUN 收購,而後在 2010 年 SUN 被 Oracle 收購,因而 Oracle 同時擁有了 MySQL 的管理權,至此 Oracle 在數據庫領域中成爲絕對的領導者。從這裏咱們也能看到,雖然 MySQL 是免費的產品,可是使用人數多,就足以證實巨大的用戶價值。一個有巨大用戶價值的產品,即便沒有直接的商業價值,但做爲基礎設施也會被商業巨頭看上。

不過在 Oracle 收購 MySQL 的同時,MySQL 的創造者擔憂 MySQL 有閉源的風險,所以建立了 MySQL 的分支項目 MariaDB,MariaDB 在絕大部分狀況下都是與 MySQL 兼容的,而且增長了許多新的特性,好比支持更多的存儲引擎類型。許多企業也由原來的 MySQL 紛紛轉向了 MariaDB。

SQL Server 是微軟開發的商業數據庫,誕生於 1989 年。實際上微軟還推出了 Access 數據庫,它是一種桌面數據庫,同時具有後臺存儲和前臺界面開發的功能,更加輕量級,適合小型的應用場景。由於後臺的存儲空間有限,通常只有 2G,Access 的優點在於能夠在前臺便捷地進行界面開發。而 SQL Server 是大型數據庫,用於後臺的存儲和查詢,不具有界面開發的功能。從這裏咱們也能看出,即便 SQL 語言是通用的,可是爲了知足不一樣用戶的使用場景,會存在多個 DBMS。好比 Oracle 更適合大型跨國企業的使用,由於他們對費用不敏感,可是對性能要求以及安全性有更高的要求,而 MySQL 更受到許多互聯網公司,尤爲是早期創業公司的青睞。

Oracle 做爲市場佔有率最高的商用數據庫軟件,適合大型的跨國企業,而針對輕量級的桌面數據庫,咱們採用 Access 就能夠了。對於免費開源的產品來講,能夠選用 MySQL 或者 MariaDB。同時在 NoSQL 陣營中,咱們也須要了解鍵值型、文檔型、搜索引擎、列式數據庫和圖形數據庫的區別。

DBMS

相關文章
相關標籤/搜索