1. 程式人生 > >從零開始學mysql(一)

從零開始學mysql(一)

自從用雲筆記,已經很少來了
··
以前接觸過mysql,但最多的時候還是使用Oracle,現在正好剛剛離職,有時間來學習一下,對於以前接觸過的mysql,只是簡單的查查而已。先看官網文件吧,一點點來吧,不怕走錯路,就怕一步不走。

版本:MySQL 5.7 (先不考慮版本之間的差異)

MySQL
MySQL是最受歡迎的**開源**SQL資料庫管理系統,由Oracle公司開發,分發和支援。最初是由瑞典MySQL AB 公司開發。

以下均來自官方文件..

什麼是mysql?

  • MySQL是一個數據庫管理系統。

    資料庫是一個結構化的資料集合。它可能是從簡單的購物清單到圖片庫或公司網路中的大量資訊。要新增,訪問和處理儲存在計算機資料庫中的資料,您需要一個數據庫管理系統,例如MySQL伺服器。由於計算機非常擅長處理大量資料,因此資料庫管理系統在計算,獨立實用程式或其他應用程式的一部分中起著核心作用。

  • MySQL資料庫是關係型的。
    關係資料庫將資料儲存在單獨的表中,而不是將所有資料放在一個大的庫房中。資料庫結構被組織成針對速度優化的物理檔案。邏輯模型包含資料庫,表格,檢視,行和列等物件,提供了靈活的程式設計環境。您可以設定規則來管理不同資料欄位之間的關係,例如一對一,一對多,唯一,必需或可選以及 不同表格之間的“ 指標 ”。資料庫強制執行這些規則,因此通過設計良好的資料庫,應用程式永遠不會看到不一致,重複,孤立,過時或缺失的資料。

    “ MySQL ” 的SQL部分代表 “ 結構化查詢語言 ”。SQL是用於訪問資料庫的最常用的標準化語言。根據您的程式設計環境,您可以直接輸入SQL(例如,生成報告),將SQL語句嵌入到以其他語言編寫的程式碼中,或者使用隱藏SQL語法的語言特定的API。

  • MySQL軟體是開源的。
    開源意味著任何人都可以使用和修改軟體。任何人都可以從網際網路上下載MySQL軟體,並無需支付任何費用。如果你願意,你可以研究原始碼並改變它以適應你的需求。

  • MySQL資料庫伺服器非常快速,可靠,可擴充套件且易於使用。
    MySQL伺服器可以在臺式機或膝上型電腦上輕鬆執行,與其他應用程式,Web伺服器等一起,很少或根本不需要關注。如果您將整個計算機專用於MySQL,則可以調整設定以充分利用所有記憶體,CPU功率和I / O容量。MySQL也可以擴充套件到聯網的機器叢集。

    MySQL伺服器最初是為了處理大型資料庫而開發的,其速度比現有解決方案快得多,並且已經在高要求的生產環境中成功使用了數年。儘管在不斷髮展的今天,MySQL伺服器現在提供了一組豐富而有用的功能。它的連通性,速度和安全性使MySQL Server非常適合訪問Internet上的資料庫。

  • MySQL伺服器在客戶端/伺服器或嵌入式系統中工作。
    MySQL資料庫軟體是一個客戶端/伺服器系統,由支援不同後端的多執行緒SQL伺服器,多個不同客戶端程式和庫,管理工具以及各種應用程式程式設計介面(API)組成。

  • 大量的MySQL軟體可用。

MySQL的主要特性

內部和可移植性

  • 用C和C ++編寫。
  • 測試了各種不同的編譯器。
  • 適用於許多不同的平臺
  • 為了便於攜帶,在MySQL 5.5及更高版本中使用CMake。以前的系列使用GNU Automake,Autoconf和Libtool。
  • 使用Purify(商業記憶體洩漏檢測器)以及GPL工具Valgrind進行測試。
  • 採用具有獨立模組的多層伺服器設計。
  • 設計為使用核心執行緒完全多執行緒,如果可用,可輕鬆使用多個CPU。
  • 提供事務性和非事務性儲存引擎。
  • 使用非常快速的B-tree磁碟表(MyISAM)與索引壓縮。
  • 旨在使新增其他儲存引擎相對容易。如果您想為內部資料庫提供SQL介面,這非常有用。
  • 使用非常快速的基於執行緒的記憶體分配系統。
  • 使用優化的巢狀迴圈連線執行非常快的連線。
  • 實現用作臨時表的記憶體中散列表。
  • 使用應該儘可能快的高度優化的類庫實現SQL函式。通常在查詢初始化後根本沒有記憶體分配。
  • 提供伺服器作為在客戶端/伺服器聯網環境中使用的單獨程式,以及可以嵌入(連結)到獨立應用程式中的庫。這種應用程式可以獨立使用,也可以在沒有網路可用的環境中使用。

資料型別

  • 資料型別:signed/unsigned integers 1, 2, 3, 4, and 8 bytes long, FLOAT, DOUBLE, CHAR, VARCHAR, BINARY, VARBINARY, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM, and OpenGIS spatial types。
  • 固定長度和可變長度的字串型別。

陳述和職能

  • 在查詢的SELECT列表和 WHERE子句中提供全面的操作員和功能支援 。例如:
mysql> SELECT CONCAT(first_name, ' ', last_name)
    -> FROM citizen
    -> WHERE income/dependents > 10000 AND age > 30;
  • 全面支援SQL GROUP BY和 ORDER BY子句。支援基函式(COUNT(), AVG(), STD(), SUM(), MAX(), MIN(),和 GROUP_CONCAT())。
  • 支援LEFT OUTER JOIN和 RIGHT OUTER JOIN使用標準的SQL和ODBC語法。
  • 支援標準SQL所需的表和列別名。
  • 支援DELETE, INSERT, REPLACE,和 UPDATE以返回更改(受影響)的行數,或返回通過連線到伺服器時設定標誌,而不是匹配的行的數量。
  • 支援SHOW 檢索有關資料庫,儲存引擎,表和索引的資訊的MySQL特定語句。支援 INFORMATION_SCHEMA資料庫,根據標準SQL執行。
  • 一個EXPLAIN語句來顯示優化器如何解決一個查詢。
  • 表或列名稱中函式名稱的獨立性。例如,ABS是一個有效的列名稱。唯一的限制是對於函式呼叫,在函式名稱和後面的“ (”之間不允許有空格 。
  • 您可以在同一個語句中引用來自不同資料庫的表。

安全

  • 特權和密碼系統非常靈活和安全,並且支援基於主機的驗證。
  • 通過在連線到伺服器時加密所有密碼流量來密碼安全。(表示沒懂)

可擴充套件性和限制

  • 支援大型資料庫。
  • 每個表最多支援64個索引。每個索引可以由1到16列或部分列組成。InnoDB表格的最大索引寬度為767位元組或3072位元組。MyISAM表格的最大索引寬度是1000位元組。

連線

  • 客戶可以使用以下幾種協議連線到MySQL伺服器:
    • 客戶端可以在任何平臺上使用TCP / IP套接字進行連線。
    • 在Windows系統上,如果伺服器使用該–enable-named-pipe選項啟動,則客戶端可以使用命名管道進行連線 。如果從該–shared-memory選項開始,Windows伺服器也支援共享記憶體連線 。客戶端可以使用該–protocol=memory選項通過共享記憶體進行連線 。
    • 在Unix系統上,客戶端可以使用Unix域套接字檔案進行連線。
  • MySQL客戶端程式可以用多種語言編寫。使用C語言編寫的客戶端庫適用於使用C或C++編寫的客戶端,或提供用於提供C繫結的任何語言的客戶端庫。
  • 可以使用C,C ++,Eiffel,Java,Perl,PHP,Python,Ruby和Tcl的API,從而使MySQL客戶端可以用多種語言編寫
  • Connector / ODBC(MyODBC)介面為使用ODBC(開放式資料庫連線)連線的客戶端程式提供MySQL支援。例如,您可以使用MS Access連線到您的MySQL伺服器。客戶端可以在Windows或Unix上執行。聯結器/ ODBC源可用。所有的ODBC 2.5功能都被支援,許多其他功能也是如此。
  • Connector / J介面為使用JDBC連線的Java客戶端程式提供MySQL支援。客戶端可以在Windows或Unix上執行。聯結器/ J源可用
  • MySQL Connector / Net使開發人員能夠輕鬆建立需要與MySQL進行安全,高效能資料連線的.NET應用程式。它實現了所需的ADO.NET介面並整合到了ADO.NET感知工具中。開發人員可以使用他們選擇的.NET語言來構建應用程式。MySQL Connector / Net是一個完全託管的ADO.NET驅動程式,用100%純C#編寫。

本土化

  • 伺服器可以以多種語言向客戶端提供錯誤訊息。
  • 幾個不同的字符集,包括全面支援 latin1(CP1252) ,german, big5,ujis一些Unicode字符集等。
  • 所有資料都儲存在選定的字符集中。
  • 排序和比較根據預設字符集和歸類完成。可以在MySQL伺服器啟動時進行更改。要檢視非常先進的排序示例,請檢視捷克語排序程式碼。MySQL伺服器支援許多不同的字符集,可以在編譯時和執行時指定。
  • 伺服器時區可以動態更改,並且各個客戶端可以指定自己的時區。

客戶和工具

  • MySQL包含幾個客戶端和實用程式。這些包括mysqldump和mysqladmin等命令列程式 以及 MySQ Workbench等圖形程式 。

  • MySQL伺服器內建了對SQL語句的支援來檢查,優化和修復表。這些語句可以通過mysqlcheck客戶端從命令列 獲得。MySQL還包括myisamchk,這是一個用於在MyISAM 表上執行這些操作的非常快速的命令列工具。

  • 可以使用–help or -?選項呼叫MySQL程式以獲得聯機幫助。