欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

新手入門Mysql--概念

 更新時(shí)間:2021年06月18日 17:02:30   作者:讓你跑39m哈哈  
MySQL 是一種關(guān)系型數(shù)據(jù)庫(kù),在Java企業(yè)級(jí)開發(fā)中非常常用,因?yàn)?MySQL 是開源免費(fèi)的,并且方便擴(kuò)展MySQL是開放源代碼的,因此任何人都可以在 GPL的許可下下載并根據(jù)個(gè)性化的需要對(duì)其進(jìn)行修改

1. 是什么?

MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在 WEB 應(yīng)用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。

1.1 RDBMS

RDBMS 即關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)的特點(diǎn):

1.數(shù)據(jù)以表格的形式出現(xiàn)

2.每行為各種記錄名稱

3.每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域

4.許多的行和列組成一張表單

5.若干的表單組成database

1.2 MySQL數(shù)據(jù)庫(kù)

MySQL 是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典 MySQL AB 公司開發(fā),目前屬于 Oracle 公司。MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。

  • MySQL 是開源的,目前隸屬于 Oracle 旗下產(chǎn)品。
  • MySQL 支持大型的數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f條記錄的大型數(shù)據(jù)庫(kù)。
  • MySQL 使用標(biāo)準(zhǔn)的 SQL 數(shù)據(jù)語言形式。
  • MySQL 可以運(yùn)行于多個(gè)系統(tǒng)上,并且支持多種語言。這些編程語言包括 C、C++、Python、Java、 Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 對(duì)PHP有很好的支持,PHP 是目前最流行的 Web 開發(fā)語言。
  • MySQL 支持大型數(shù)據(jù)庫(kù),支持 5000 萬條記錄的數(shù)據(jù)倉(cāng)庫(kù),32 位系統(tǒng)表文件最大可支持 4GB,64 位系統(tǒng)支持最大的表文件為8TB。
  • MySQL 是可以定制的,采用了 GPL 協(xié)議,你可以修改源碼來開發(fā)自己的 MySQL 系統(tǒng)。

2. 工作機(jī)制

2.1 整體架構(gòu)圖(C/S架構(gòu))

  • Client :

提供連接MySQL服務(wù)器功能的常用工具集

  • Server :

MySQL實(shí)例,真正提供數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理功能的MySQL服務(wù)器進(jìn)程

  • mysqld:

MySQL服務(wù)器守護(hù)程序,在后臺(tái)運(yùn)行。它管理著客戶端請(qǐng)求。mysqld是一個(gè)多線程的進(jìn)程,允許多個(gè)會(huì)話連接,端口監(jiān)聽連接,管理MySQL實(shí)例

  • MySQL memory allocation:

MySQL的要求的內(nèi)存空間是動(dòng)態(tài)的,比如 innodb_buffer_pool_size (from 5.7.5), key_buffer_size。每個(gè)會(huì)話都有獨(dú)一無二的執(zhí)行計(jì)劃,我們只能共享同一會(huì)話域內(nèi)的數(shù)據(jù)集。

  • SESSION

為每個(gè)客戶端連接分配一個(gè)會(huì)話,動(dòng)態(tài)分配和回收。用于查詢處理,每個(gè)會(huì)話同時(shí)具備一個(gè)緩沖區(qū)。每個(gè)會(huì)話是作為一個(gè)線程執(zhí)行的

  • Parser

檢測(cè)SQL語句語法,為每條SQL語句生成SQL_ID,用戶認(rèn)證也發(fā)生在這個(gè)階段

  • Optimizer

創(chuàng)造一個(gè)有效率的執(zhí)行計(jì)劃(根據(jù)具體的存儲(chǔ)引擎)。它將會(huì)重寫查詢語句。比如:InnoDB有共享緩沖區(qū),所以,優(yōu)化器會(huì)首先從預(yù)先緩存的數(shù)據(jù)中提取。使用 table statistics optimizer將會(huì)為SQL查詢生成一個(gè)執(zhí)行計(jì)劃。用戶權(quán)限檢查也發(fā)生在這個(gè)階段。

  • Metadata cache

緩存對(duì)象元信息和統(tǒng)計(jì)信息

  • Query cache

共享在內(nèi)存中的完全一樣的查詢語句。如果完全相同的查詢?cè)诰彺婷校琈ySQL服務(wù)器會(huì)直接從緩存中去檢索結(jié)果。緩存是會(huì)話間共享的,所以為一個(gè)客戶生成的結(jié)果集也能為另一個(gè)客戶所用。查詢緩存基于SQL_ID。將SELECT語句寫入視圖就是查詢緩存最好的例子。

  • key cache

緩存表索引。MySQL keys是索引。如果索引數(shù)據(jù)量小,它將緩存索引結(jié)構(gòu)和葉子節(jié)點(diǎn)(存儲(chǔ)索引數(shù)據(jù))。如果索引很大,它只會(huì)緩存索引結(jié)構(gòu),通常供MyISAM存儲(chǔ)引擎使用

2.2 網(wǎng)絡(luò)協(xié)議

2.2.1 通信協(xié)議

到MySQL5.7為止,總共有五種,分別是TCP/IP,TLS/SSL,Unix Sockets,Shared Memory,Named pipes,下面我們就來看看這五種的區(qū)別:

方式 默認(rèn)開啟 支持系統(tǒng) 只支持本機(jī) 如何開啟 參數(shù)配置
TCP/IP 所有系統(tǒng) –skip-networking=yes/no –port–bind-address
TLS/SSL 所有系統(tǒng)(基于TCP/IP)之上 –ssl=yes/no –ssl-* options
Unix Sockets 類Unix系統(tǒng) –socket= 來關(guān)閉 –socket=socket path
Shared Memory Windows系統(tǒng) –shared-memory=on/off. –shared-memory-base-name=
Named pipes Windows系統(tǒng) –enable-named-pipe=on/off –socket=

2.2.2 報(bào)文格式

協(xié)議頭:

每個(gè)協(xié)議頭共4個(gè)字節(jié)

- 包數(shù)據(jù)長(zhǎng)度:

前三個(gè)字節(jié)表示數(shù)據(jù)部分的長(zhǎng)度(不包括協(xié)議頭),三字節(jié)能表示的最大長(zhǎng)度是16M-1(2^24 - 1),如果要發(fā)送的數(shù)據(jù)部分大于這個(gè)長(zhǎng)度,要進(jìn)行拆包,每16M-1個(gè)長(zhǎng)度為一包。接收端在接受數(shù)據(jù)的時(shí)候,如果檢測(cè)到包的長(zhǎng)度是16M-1,說明后續(xù)還有數(shù)據(jù)部分,直到接收到<16M-1長(zhǎng)度的數(shù)據(jù)包結(jié)束。這意味著最后一包的數(shù)據(jù)長(zhǎng)度可能為0.

序號(hào):

1個(gè)字節(jié),從0開始遞增。當(dāng)發(fā)送一個(gè)新的sql、數(shù)據(jù)庫(kù)重連,該值清0(函數(shù)sql/Net_serv.cc : net_clear).

數(shù)據(jù)類型:

除了固定長(zhǎng)度的整型或者字符串之外,還有其他幾種類型的數(shù)據(jù)。(固定長(zhǎng)度字段數(shù)據(jù)的存?。篿nclude/Mybyte_order.h : 存值 intstore 取值:intkorr 多字節(jié)的處理按照小端優(yōu)先的方式)

     1. 可變長(zhǎng)度的整數(shù)   
        對(duì)該類數(shù)據(jù)的存取在函數(shù):sql-common/Pack.c: 存整數(shù): net_store_length     讀整數(shù):net_field_length
        如果數(shù)值<251,直接用一個(gè)字節(jié)存儲(chǔ)這個(gè)值。
       如果251<=數(shù)值<2^16, 采用3個(gè)字節(jié)存儲(chǔ),第一個(gè)字節(jié)是252, 另外2個(gè)字節(jié)存儲(chǔ)整數(shù)內(nèi)容
       如果2^16<=數(shù)值<2^24,采用4字節(jié)存儲(chǔ),第一個(gè)字節(jié)是252,另外3個(gè)字節(jié)存儲(chǔ)整數(shù)內(nèi)容
       如果2^24<=數(shù)值<2^64,采用9字節(jié)存儲(chǔ),第一個(gè)字節(jié)255,另外8字節(jié)存儲(chǔ)整數(shù)內(nèi)容
       如果第一個(gè)字節(jié)為251,表示該整數(shù)字段為null
       如果第一個(gè)字節(jié)為255,表示該字節(jié)是ERR包的第一個(gè)字節(jié)
   2. 可編碼長(zhǎng)度的字符串
           字符串的長(zhǎng)度采用可變長(zhǎng)度的整數(shù)進(jìn)行編碼。

2.3 SQL語法

可以把 SQL 分為兩個(gè)部分:數(shù)據(jù)操作語言 (DML) 和 數(shù)據(jù)定義語言 (DDL)。 SQL (結(jié)構(gòu)化查詢語言)是用于執(zhí)行查詢的語法。但是 SQL 語言也包含用于更新、插入和刪除記錄的語法。

查詢和更新指令構(gòu)成了 SQL 的 DML 部分:

SELECT - 從數(shù)據(jù)庫(kù)表中獲取數(shù)據(jù)UPDATE - 更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù)DELETE - 從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù)INSERT INTO - 向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)SQL 的數(shù)據(jù)定義語言 (DDL) 部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。

SQL 中最重要的 DDL 語句:

CREATE DATABASE - 創(chuàng)建新數(shù)據(jù)庫(kù)ALTER DATABASE - 修改數(shù)據(jù)庫(kù)CREATE TABLE - 創(chuàng)建新表ALTER TABLE - 變更(改變)數(shù)據(jù)庫(kù)表DROP TABLE - 刪除表CREATE INDEX - 創(chuàng)建索引(搜索鍵)DROP INDEX - 刪除索引

3. 小結(jié)

這篇文章從宏觀和使用角度去了解Mysql是什么,后續(xù)深入。也請(qǐng)大家多多關(guān)注腳本之家的更多內(nèi)容

相關(guān)文章

  • 通過SQL語句來備份,還原數(shù)據(jù)庫(kù)

    通過SQL語句來備份,還原數(shù)據(jù)庫(kù)

    這里僅僅用到了一種方式而已,把數(shù)據(jù)庫(kù)文件備份到磁盤然后在恢復(fù).
    2010-02-02
  • mysql獲取隨機(jī)數(shù)據(jù)的方法

    mysql獲取隨機(jī)數(shù)據(jù)的方法

    在mysql中獲取隨機(jī)數(shù)據(jù)方法很簡(jiǎn)單只要使用order by rand()即可了,但是如果你是百萬級(jí)數(shù)據(jù)量,使用order by rand()獲取隨機(jī)數(shù)據(jù)你會(huì)等死去,下面我來介紹具體的解決辦法
    2013-11-11
  • MySql數(shù)據(jù)庫(kù)備份的幾種方式

    MySql數(shù)據(jù)庫(kù)備份的幾種方式

    這篇文章主要介紹了MySql數(shù)據(jù)庫(kù)備份的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • mysql數(shù)據(jù)插入效率比較

    mysql數(shù)據(jù)插入效率比較

    今天小編就為大家分享一篇關(guān)于mysql數(shù)據(jù)插入效率比較,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 詳解mysql三值邏輯與NULL

    詳解mysql三值邏輯與NULL

    這篇文章主要介紹了mysql三值邏輯和NULL,感興趣的同學(xué)們,可以參考下,并且把代碼實(shí)驗(yàn)一下
    2021-05-05
  • MySQL中你可能忽略的COLLATION實(shí)例詳解

    MySQL中你可能忽略的COLLATION實(shí)例詳解

    mysql的collation大致的意思就是字符序,這篇文章主要給大家介紹了關(guān)于MySQL中COLLATION的相關(guān)資料,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • MySQL查詢重復(fù)數(shù)據(jù)(刪除重復(fù)數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))

    MySQL查詢重復(fù)數(shù)據(jù)(刪除重復(fù)數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))

    查重是我們?cè)诠ぷ髦薪?jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于MySQL查詢重復(fù)數(shù)據(jù)(刪除重復(fù)數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明

    MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明

    這篇文章主要介紹了MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • mysql 5.7.20 zip安裝教程

    mysql 5.7.20 zip安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.20 zip安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 在MySQL中使用LIMIT進(jìn)行分頁(yè)的方法

    在MySQL中使用LIMIT進(jìn)行分頁(yè)的方法

    這篇文章主要介紹了在MySQL中使用LIMIT進(jìn)行分頁(yè)的方法,作者列舉出了三種方法,并且針對(duì)跳頁(yè)等常見問題做出了提示,需要的朋友可以參考下
    2015-05-05

最新評(píng)論