牛掰的[MySQL]資料庫介紹

來源:互聯網
上載者:User

標籤:ast   線程   引擎   移除   畫板   net   php   googl   mysq   

據庫基礎

資料庫(Database,DB)是按照資料結構來組織、儲存和管理資料的建立在電腦存放裝置上的倉庫。

什麼是資料庫

資料庫指的是以一定方式儲存在一起、能為多個使用者共用、具有儘可能小的冗餘度、與應用程式彼此獨立的資料集合。簡單來說可視為電子化的檔案櫃——儲存電子檔案的處所,使用者可以對檔案中的資料運行新增、截取、更新、刪除等操作。

資料庫系統

  資料庫系統有3個主要的組成部分。

  資料庫

  資料庫(Database System):用於儲存資料的地方。

  資料庫管理系統

  資料庫管理系統(Database Management System,DBMS):使用者管理資料庫的軟體。

  資料庫應用程式

  資料庫應用程式(Database Application):為了提高資料庫系統的處理能力所使用的管理資料庫的軟體補充。

SQL語言

  SQL,(Structured Query Language)即結構化查詢語言 (SQL),資料庫管理系統專門通過SQL語言來管理資料庫中的資料,與資料庫通訊。

SQL的優點:
  • SQL不是某個特定資料庫供應商專有的語言。幾乎所有重要的 DBMS都支援SQL,所以,學習此語言使你幾乎能與所有資料庫 打交道。
  • SQL簡單易學。它的語句全都是由描述性很強的英語單片語成, 而且這些單詞的數目不多。
  • SQL儘管看上去很簡單,但它實際上是一種強有力的語言,靈活 使用其語言元素,可以進行非常複雜和進階的資料庫操作。

DBMS專用的SQL:SQL不是一種專利語言,而且存在一個標準委員會,他們試圖定義可供所有DBMS使用的SQL文法,但 事實上任意兩個DBMS實現的SQL都不完全相同。本課講的 SQL是專門針對MySQL的,雖然所講的多數文法也適 用於其他DBMS,但不要認為這些SQL文法是完全可移植的。

SQL為資料庫管理系統提供的功能

SQL語言是一種資料庫查詢和程式設計語言,其主要用於存取資料,查詢資料,更新資料和管理資料庫系統。具體的,SQL分為4個部分,這裡只是大概整理一下,詳細的後面我會在SQL相關中仔細整理。

  • 資料定義語言 (Data Definition Language)(Data Definition Language,DDL):DROP、CREATE、ALTER等語句;資料庫定義語言。主要用於定義資料庫,表,視圖,索引和觸發器等。CREATE語句主要用於建立資料庫,建立表,建立視圖。ALTER語句主要用於修改表的定義,修改視圖的定義。DROP語句主要用於刪除資料庫,刪除表和刪除視圖等。

  • 資料操作語言(Data Manipulation Language,DML):INSERT、UPDATE、DELETE語句;資料庫操作語言。主要用於插入資料,更新資料,刪除資料。INSERT語句用於插入資料,UPDATE語句用於更新資料,DELETE語句用於刪除資料。

  • 資料查詢語言(Data Query Language,DQL):SELECT語句。主要用於查詢資料。

  • 資料控制語言(Data Control Language ,DCL)語句:資料庫控制語言。主要用於控制使用者的存取權限。其中GRANT語句用於給使用者增加許可權,REVOKE語句用於收回使用者的許可權。

資料庫分類

資料庫的分類可多了去了,一般咱們分類兩類,一類稱之為關係型資料庫,另一類稱之為非關係型資料庫.如果想要深入瞭解各種概念推薦看《資料庫系統概論》。

關聯式資料庫

(英語:Relational database),是建立在關聯式模式基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料。現實世界中的各種實體以及實體之間的各種聯絡均用關聯式模式來表示。關聯式模式是由埃德加·科德於1970年首先提出的,並配合“科德十二定律”。現如今雖然對此模型有一些批評意見,但它還是資料存放區的傳統標準。標準資料查詢語言SQL就是一種基於關聯式資料庫的語言,這種語言執行對關聯式資料庫中資料的檢索和操作。

  • MySQL
  • SQL Server
  • Oracle
  • Sybase
  • 等等...

  RDBMS:關聯式資料庫管理系統(Relational Database Management System)的特點:

  1. 資料以表格的形式出現
  2. 每行為各種記錄名稱
  3. 每列為記錄名稱所對應的資料域
  4. 許多的行和列組成一張表單
  5. 若干的表單組成database

幾乎所有的資料庫管理系統都配備了一個開放式資料庫連接(ODBC)驅動程式,令各個資料庫之間得以互相整合。

資料表

關聯式資料庫沒有資料表,關鍵字、主鍵、索引等也就無從談起,資料表是關聯式資料庫中一個非常重要的對象,是其它對象的基礎,也是一系列二維數組的集合,用來儲存、操作資料的邏輯結構。根據資訊的分類情況。一個資料庫中可能包含若干個資料表,每張表是由行和列組成,記錄一條資料資料表就增加一行,每一列是由欄位名和欄位資料集合組成,列被稱之為欄位,每一列還有自己的多個屬性,例如是否允許為空白、預設值、長度、類型、儲存編碼、注釋等

           

非關係型資料庫(NoSQL)

NoSQL一詞最早出現於1998年,是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的關聯式資料庫。當代典型的關聯式資料庫在一些資料敏感的應用中表現了糟糕的效能,例如為巨量文檔建立索引、高流量網站的網頁服務,以及發送流式媒體。關係型資料庫的典型實現主要被調整用於執行規模小而讀寫頻繁,或者大批量極少寫訪問的事務。

  • MongoDB

  MongoDB 是一個高效能,開源,無模式的文檔型資料庫,開發語言是C++。它在許多情境下可用於替代傳統的關係型資料庫或鍵/值儲存方式。

  • Redis
  Redis 是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。目前由VMware主持開發工作。  什麼是MySQL 

MySQL(官方發音為英語發音:/ma? ??skju???l/ My S-Q-L,但也經常讀作英語發音:/ma? ?si?kw?l/ My Sequel)原本是一個開放原始碼的關聯式資料庫管理系統(DBMS),原開發人員為瑞典的MySQL AB公司,該公司於2008年被昇陽微系統(Sun Microsystems)收購。2009年,甲骨文公司(Oracle)收購昇陽微系統公司,MySQL成為Oracle旗下產品。在本教程中,會讓大家快速掌握MySQL的基本知識,並便於使用MySQL資料庫。

 MySQL 介紹 

MySQL在過去由於效能高、成本低、可靠性好,已經成為最流行的開來源資料庫,因此被廣泛地應用在Internet上的中小型網站中。是最流行的關係型資料庫管理系統,在WEB應用方面MySQL是最好的RDBMS(Relational Database Management System:關聯式資料庫管理系統)應用軟體之一。隨著MySQL的不斷成熟,它也逐漸用於更多大規模網站和應用,比如維基百科、Google和Facebook等網站。

 

但被甲骨文公司收購後,Oracle大幅調漲MySQL商業版的售價,且甲骨文公司不再支援另一個自由軟體項目OpenS olaris的發展,因此導致自由軟體社區們對於Oracle是否還會持續支援MySQL社區版(MySQL之中唯一的免費版本)有所隱憂,因此原先一些使用MySQL的開源軟體逐漸轉向其它的資料庫。例如維基百科已於2013年正式宣布將從MySQL遷移到MariaDB資料庫。MySQL的創始人麥克爾·維德紐斯以MySQL為基礎,成立分支計劃MariaDB。

 MySQL 發展曆史 

很多人以為MySQL是最近15年內才出現的資料庫,其實MySQL資料庫的曆史可以追溯到1979年,那時 Bill Gates 退學沒多久,微軟公司也才剛剛起步,而Larry的Oracle公司也才成立不久。那時有一個天才程式員 Monty Widenius 用 BASIC 設計了一個報表工具,過了不久,又將此工具使用 C 語言重寫,一直到 UNIX 平台,當時只是一個底層的面向報表格儲存體引擎名叫Unireg。

 
  • 1985 年,瑞典的幾位志同道合小夥子(David Axmark、Allan Larsson 和Monty Widenius) 成立了一家公司,這就是MySQL AB 的前身。
  • 1990年,TcX公司的客戶中開始有人要求為他的API提供SQL支援。當時有人提議直接使用商用資料庫,但是Monty覺得商用資料庫的速度難以令人滿意。於是,他直接藉助於mSQL的代碼,將它整合到自己的儲存引擎中。令人失望的是,效果並不太令人滿意,於是,Monty雄心大起,決心自己重寫一個SQL支援。
  • 1996年,MySQL 1.0發布,它只面向一小撥人,相當於內部版本。
  • 1996年10月,MySQL 3.11.1發布(MySQL沒有2.x版本),最開始只提供Solaris下的二進位版本。一個月後,Linux版本出現了。
  • 1999~2000年,MySQL AB公司在瑞典成立。Monty雇了幾個人與Sleepycat合作,開發出了Berkeley DB引擎, 因為BDB支援交易處理,所以MySQL從此開始支援交易處理了。
  • 2003年12月,MySQL 5.0版本發布,提供了視圖、預存程序等功能。
  • 2008年1月16日,Sun(太陽微系統)正式收購MySQL。
  • 2009年4月20日,甲骨文公司宣布以每股9.50美元,74億美元的總額收購Sun電腦公司。
  • 2010年12月,MySQL 5.5發布,其主要新特性包括半同步的複製及對SIGNAL/RESIGNAL的異常處理功能的支援,最重要的是InnoDB儲存引擎終於變為當前MySQL的預設儲存引擎。
  • 2013年6月18日,甲骨文公司修改MySQL授權協議,移除了GPL。但隨後有訊息稱這是一個bug。
 MySQL 版本 

MySQL針對不同的使用者,分了社區版企業伺服器版,還提供一些其它版本,是屬於MySQL相關工具。

 
  1. MySQL Community Server 社區版本,開源免費,但不提供官方支援人員。
  2. MySQL Enterprise Edition 企業版本,需付費,可以試用30天。
  3. MySQL Cluster 叢集版,開源免費。可將幾個MySQL Server封裝成一個Server。
  4. MySQL Cluster CGE 進階叢集版,需付費。
  5. MySQL Workbench(GUI TOOL)一款專為MySQL設計的ER/資料庫建模工具。
 

MySQL 版本命命機制由三個數字組成,例如mysql-5.6.33-osx10.11-x86_64.tar.gz

 
  • 第一個數字(5)主要版本號:當你做了不相容的 API 修改,
  • 第二個數字(7)次版本號碼:當你做了向下相容的功能性新增,合計,主要和次要的數字構成發布系列號。該系列號描述了穩定的特徵集。
  • 第三個數字(1)修訂編號:當你做了向下相容的問題修正。這是一個新的bugfix釋放增加。在大多數情況下,在一系列最新版本是最好的選擇。
 MySQL 的優勢 
  • 使用C和C++編寫,並使用了多種編譯器進行測試,保證原始碼的可移植性。 
  • 支援AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell NetWare、NetBSD、OpenBSD、OS/2 Wrap、Solaris、Windows等多種作業系統。
  • 為多種編程語言提供了API。這些編程語言套件括C、C++、C#、VB.NET、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
  • 支援多線程,充分利用CPU資源,支援多使用者。
  • 優化的SQL查詢演算法,有效地提高查詢速度。
  • 既能夠作為一個單獨的應用程式在用戶端伺服器網路環境中運行,也能夠作為一個程式庫而嵌入到其他的軟體中。
  • 提供多語言支援,常見的編碼如中文的GB2312、BIG5 UTF-8,日文的Shift JIS等都可以用作數據表名和數據列名。
  • 提供TCP/IP、ODBC和JDBC等多種資料庫連接途徑。
  • 提供用於管理、檢查、最佳化資料庫操作的管理工具。
  • 可以處理擁有上千萬條記錄的大型資料庫。

 

如何學習MySQL

如何學習 MySQL 這是一個偽命題,每個人都有適合自己的一套學習方法,各不相同,所以如何學習 MySQL 這個活兒,我沒有辦法告訴你,我的這個學習方法就是你最好的學習方法,所以在學習 MySQL 資料庫之前,需要找准自己學習 MySQL 最舒服的姿勢。

培養興趣和動力

首先得培養興趣愛好,不論學什麼技術和什麼知識點,興趣是可以極大的提高學習效率和提供持久的戰鬥力。當然還有一種興趣是被逼出來的.

瞭解基礎知識

   SQL語句的關鍵字一定要牢記(牢記關鍵字的作用和使用文法的要求) .

  SQL語句的文法(常用的)沒有多少,每天背幾個也就記住了,就算你想去背,現實也會逼著你記住的(因為以後每天都要寫,邪惡的一笑!!!)

利用好工具

我在學習繪畫的時候,老師第一天就告訴你要買繪畫筆、水粉、紙、畫板、支架子,讓你有一個正確的繪畫姿勢。其實就是準備工具,所以學習前不光要安裝好環境,還得安裝好工具,比MySql安裝以及可視化的視圖工具(Navicat)的是使用,利用這些工具的特點來掌握SQL語句,操控資料。除了這些軟體工具之外還要正確、有效地利用搜尋引擎這個牛逼,剛開始使用百毒,後面使用Google(如果你有FQ能力可以一開始使用Google),你可通過搜尋引起搜到很多相關的知識點。

多動手實踐操作

我個人最不喜歡“紙上談兵派”,在我學習java的時候,動不動就讓我看個底層什麼的,我只是寫個應用而已,我肩負出活兒的使命,我的宗旨動手實踐操作,對於資料庫來說它的操作性特彆強,如果你不動手操作,在實際應用過程中很難發現問題。你在實際操作中發現問題,並通過各種方法解決問題,這樣才能提高實戰應用操作能力。在你實戰操作的過程中順帶補充基礎知識。

記錄筆記

你有了上面快速敏捷的學習能力,你還得附帶一個技能,才能更好、更快的入門MySQL資料庫。這個技能就是做筆記,做筆記在我這裡起到三個作用:第一,避免遺忘知識點。知識點太多,知識點偏冷,不常用也容易忘記;第二,知識點分階段吃透。當你理解的知識點越來越多的時候,還有一些一知半解的知識點,你都需要做一些筆記,記錄之後找個時間點好好把這些一知半解的知識點吃透,在每個階段去看你的筆記你會有一些不同的理解。第三,總結沉澱,當你入門之後總結沉澱很重要,一次總結沉澱很有可能在某個技術上你直接上升一個台階。

牛掰的[MySQL]資料庫介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.