MySQL【一】數據庫介紹

數據庫基礎

數據庫(Database,DB)是按照數據結構來組織、存儲和管理數據的,而且是創建在計算機存儲設備上的倉庫。java

什麼是數據庫

數據庫指的是以必定方式儲存在一塊兒、能爲多個用戶共享、具備儘量小的冗餘度、與應用程序彼此獨立的數據集合。簡單來講可視爲電子化的文件櫃——存儲電子文件的處所,用戶能夠對文件中的數據運行新增、截取、更新、刪除等操做。mysql

數據庫系統 

  數據庫系統有3個主要的組成部分。git

  數據庫

  數據庫(Database System):用於存儲數據的地方。程序員

  數據庫管理系統

  數據庫管理系統(Database Management System,DBMS):用戶管理數據庫的軟件。github

  數據庫應用程序

  數據庫應用程序(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,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)驅動程序,令各個數據庫之間得以互相集成。

數據表

關係數據庫沒有數據表,關鍵字、主鍵、索引等也就無從談起,數據表是關係數據庫中一個很是重要的對象,是其它對象的基礎,也是一系列二維數組的集合,用來存儲、操做數據的邏輯結構。根據信息的分類狀況。一個數據庫中可能包含若干個數據表,每張表是由行和列組成,記錄一條數據數據表就增長一行,每一列是由字段名和字段數據集合組成,列被稱之爲字段,每一列還有本身的多個屬性,例如是否容許爲空、默認值、長度、類型、存儲編碼、註釋等

           MySQL

非關係型數據庫(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查詢算法,有效地提升查詢速度。
  • 既可以做爲一個單獨的應用程序在客戶端服務器網絡環境中運行,也可以做爲一個程序庫而嵌入到其餘的軟件中。
  • 提供多語言支持,常見的編碼如中文的GB23十二、BIG5 UTF-8,日文的Shift JIS等均可以用做數據表名和數據列名。
  • 提供TCP/IP、ODBC和JDBC等多種數據庫鏈接途徑。
  • 提供用於管理、檢查、優化數據庫操做的管理工具。
  • 能夠處理擁有上千萬條記錄的大型數據庫。

如何學習MySQL

如何學習 MySQL 這是一個僞命題,每一個人都有適合本身的一套學習方法,各不相同,因此如何學習 MySQL 這個活兒,我沒有辦法告訴你,個人這個學習方法就是你最好的學習方法,因此在學習 MySQL 數據庫以前,須要找準本身學習 MySQL 最舒服的姿式。

培養興趣和動力

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

瞭解基礎知識

   SQL語句的關鍵字必定要牢記(牢記關鍵字的做用和使用語法的要求) .

  SQL語句的語法(經常使用的)沒有多少,天天背幾個也就記住了,就算你想去背,現實也會逼着你記住的(由於之後天天都要寫,邪惡的一笑!!!)

利用好工具

我在學習繪畫的時候,老師第一天就告訴你要買繪畫筆、水粉、紙、畫板、支架子,讓你有一個正確的繪畫姿式。其實就是準備工具,因此學習前不光要安裝好環境,還得安裝好工具,比MySql安裝以及可視化的視圖工具(Navicat)的是使用,利用這些工具的特色來掌握SQL語句,操控數據。除了這些軟件工具以外還要正確、有效地利用搜索引擎這個牛逼,剛開始使用百毒,後面使用谷歌(若是你有FQ能力能夠一開始使用Google),你可經過搜索引發搜到不少相關的知識點。

多動手實踐操做

我我的最不喜歡「紙上談兵派」,在我學習java的時候,動不動就讓我看個底層什麼的,我只是寫個應用而已,我肩負出活兒的使命,個人宗旨動手實踐操做,對於數據庫來講它的操做性特別強,若是你不動手操做,在實際應用過程當中很難發現問題。你在實際操做中發現問題,並經過各類方法解決問題,這樣才能提升實戰應用操做能力。在你實戰操做的過程當中順帶補充基礎知識。

記錄筆記

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

相關文章
相關標籤/搜索