<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MySQL的基本使用(數據庫管理系統)

      1、MySQL的基本概念

      MySQL是目前應用最廣泛的開源關系數據庫。MySQL最早是由瑞典的MySQL AB公司開發,該公司在2008年被SUN公司收購,緊接著,SUN公司在2009年被Oracle公司收購,所以MySQL最終就變成了Oracle旗下的產品。

      MySQL 是一個非常流行的關系型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的關系數據庫管理系統(Relational Database Management System,簡稱RDBMS)之一,并且它是開源免費的。MySQL 由瑞典 MySQL AB 公司開發,目前屬于 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

      MySQL 數據庫管理系統有以下特點:

      • MySQL 是開源的,所以你不需要支付額外的費用。
      • MySQL 支持大型的數據庫??梢蕴幚頁碛猩锨f條記錄的大型數據庫。
      • MySQL 使用標準的 SQL 數據語言形式。
      • MySQL 可以運行于多個系統上,并且支持多種語言。這些編程語言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
      • MySQL 對PHP有很好的支持,PHP 是目前最流行的 Web 開發語言。
      • MySQL 支持大型數據庫,支持 5000 萬條記錄的數據倉庫,32 位系統表文件最大可支持 4GB,64 位系統支持最大的表文件為8TB。
      • MySQL 是可以定制的,采用了 GPL 協議,你可以修改源碼來開發自己的 MySQL 系統。

       

      和其他關系數據庫有所不同的是,MySQL本身實際上只是一個SQL接口,它的內部還包含了多種數據引擎,常用的包括:

      • InnoDB:由Innobase Oy公司開發的一款支持事務的數據庫引擎,2006年被Oracle收購;
      • MyISAM:MySQL早期集成的默認數據庫引擎,不支持事務。

      MySQL接口和數據庫引擎的關系就好比某某瀏覽器和瀏覽器引擎(IE引擎或Webkit引擎)的關系。對用戶而言,切換瀏覽器引擎不影響瀏覽器界面,切換MySQL引擎不影響自己寫的應用程序使用MySQL的接口。

      使用MySQL時,不同的表還可以使用不同的數據庫引擎。如果你不知道應該采用哪種引擎,記住總是選擇InnoDB就好了。

       

      1.1、MySQL的各種版本

      MySQL官方版本分了好幾個版本:

      • Community Edition:社區開源版本,免費;
      • Standard Edition:標準版;
      • Enterprise Edition:企業版;
      • Cluster Carrier Grade Edition:集群版。

      以上版本的功能依次遞增,價格也依次遞增。不過,功能增加的主要是監控、集群等管理功能,對于基本的SQL功能是完全一樣的。

      所以使用MySQL就帶來了一個巨大的好處:可以在自己的電腦上安裝免費的Community Edition版本,進行學習、開發、測試。部署的時候,可以選擇付費的高級版本,或者云服務商提供的兼容版本,而不需要對應用程序本身做改動。

       

      因為MySQL一開始就是開源的,所以基于MySQL的開源版本,又衍生出了各種版本:

      MariaDB:由MySQL的創始人創建的一個開源分支版本,使用XtraDB引擎。

      Aurora:由Amazon改進的一個MySQL版本,專門提供給在AWS托管MySQL用戶,號稱5倍的性能提升。

      PolarDB:由Alibaba改進的一個MySQL版本,專門提供給在阿里云托管的MySQL用戶,號稱6倍的性能提升。

       

      1.2、其他幾種常見的數據庫管理系統

      常用的數據庫軟件有:Oracle、MySQL、Microsoft SQL Server、DB2、MongoDB 等等

      • Oracle:Oracle是甲骨文(Oracle)公司旗下的關系數據庫管理系統,它是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用于各類大、中、小、微機環境。它是種高效率、可靠性好的適應高吞吐量的數據庫解決方案。Oracle是收費的。
      • MySQL:MySQL是流行的關系型數據庫管理系統,特別是在WEB應用方面,MySQL是非常流行的關系數據庫管理系統。MySQL體積小、速度快、開放源碼這特點,一般中小型網站的開發都選擇MySQL作為網站數據庫。MySQL是開源免費的,但被Oracle收購后,MySQL6.x版本開始收費
      • Microsoft SQL Server:Microsoft SQL Server是Microsoft公司推出的關系型數據庫管理系統。具有使用方便可伸縮性好與相關軟件集成程度高等優點,是個全面的數據庫平臺。SqlServer是收費的。
      • DB2:DB2是IBM出品的系列關系型數據庫管理系統,分別在不同的操作系統平臺上服務。常應用于銀行系統中。DB2是收費的。
      • MongoDB:MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。

       

      2、在Linux系統上安裝MySQL

      2.1、卸載Linux系統默認的mysql相關組件

      (1)CentOS6 

      CentOS6 環境下,默認在安裝 Linux 時,會自帶 mysql 相關的組件,我們需要先把這些組件都卸載,否則在安裝 mysql 時會提示有沖突導致安裝失敗。

      執行命令:rpm -qa|grep mysql 來查看是否有相關組件已安裝:

      如果有,則需先卸載 Linux 系統自帶的 mysql 組件,執行卸載命令: rpm -e --nodeps

       

      (2)CentOS7

      CentOS7 環境下,默認在安裝 Linux 時,會自帶了 mariadb(mysql 完全開源版本)相關的組件,我們也需要先把這些組件都卸載,否則在安裝 mysql 時會提示有沖突導致安裝失敗。

      執行命令:rpm -qa|grep mariad 來查看是否有相關組件已安裝:

      如果有,則需先卸載 Linux 系統自帶的 mysql 組件,執行卸載命令: rpm -e --nodeps mariadb-libs

       

      2.2、下載mysql

      官網下載地址:http://dev.mysql.com/downloads/mysql/

      msyql8 通過 rpm 包下載安裝可參考:http://www.rzrgm.cn/l-y-h/p/12576633.html

      以下我們安裝的是 mysql5.5.48 版本,并且使用 rpm 包進行安裝,可直接到 https://downloads.mysql.com/archives/community/ 地址進行下載安裝包。

      如下:

      只需要下載 mysql-server 和 mysql-client 包即可。

       

      2.3、安裝mysql

      將 rpm 安裝包上傳至 Linux 系統上(這里我們使用的是 centos7 版本的 Linux系統),比如上傳至 /usr/mysoft 目錄下,切換至該目錄下,并執行以下命令進行安裝:

      執行命令:rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm 安裝 mysql-client 客戶端:

       

      執行命令:rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm 安裝 mysql-server 服務器:

      安裝完成后,會提示一些警告,意思是提示我們設置 root 用戶的密碼。

       

      2.3.1、查看安裝是否成功

      執行命令:mysqladmin --version 可查看安裝的 mysql 版本,有輸出則證明已安裝成功。

       

      2.3.2、設置root用戶的密碼

      mysql 如果沒有設置密碼,啟動 mysql 服務后直接輸入 mysql 即可連接 mysql,但這樣很不安全,所以 mysql 必須得設置密碼。

      通過命令:mysqladmin -u root password 密碼 可設置 root 用戶的密碼:

       

      2.4、啟動停止mysql服務

      1.4.1、查看mysql運行狀態

      可通過命令:service mysql status 來查看 mysql 的狀態

       

      2.4.2、啟動mysql服務

      啟動服務:service mysql start 

      重啟服務:service mysql restart。如果 mysql 此時并沒有在運行,則該命令會把 mysql 給啟動起來。

       

      啟動之后,可以查看到 mysql 的進程:

       

      2.4.3、停止mysql服務

      停止服務:service mysql stop

       

      2.4.4、mysql開機自啟動

      Mysql 服務默認情況下是開機后就會自動啟動的,如果想要修改,可以通過 ntsysv 進行修改。

      執行 ntsysv 命令,會彈出以下窗口:

      可以看到,mysql 前面有 *,表示是啟動啟動的。我們可以使用空格來切換是否取消自啟動,然后按 TAB 鍵來切換選中“確定”或者“取消”按鈕,最后直接 enter 確定即可。

       

      3、mysql的安裝位置

      mysql 在安裝啟動后,通過查看進程可以看到 mysql 一些目錄的參數,如下:

      這些參數就是指定 mysql 的一些相關目錄的位置,具體說明如下:

      其中,/var/lib/mysql 目錄存放著數據庫文件:

      /usr/share/mysql 存放著配置文件:

       

      3.1、mysql的配置文件

      mysql 的配置以 cnf 作為后綴,我們可以先輸入 which mysql 命令,得到 mysql 腳本位置,然后再在查詢出來的 MySQL 路徑后加上 --verbose --help | grep -A 1 'Default options' ,比如:/usr/bin/mysql --verbose --help | grep -A 1 'Default options',即可看到 mysql 的配置文件 my.cnf 的所在目錄。

      上面列出了多個目錄的意思是指,mysql 首先讀取的是 /etc/my.cnf 文件作為配置文件,如果前一個文件不存在則繼續讀 /etc/mysql/my.cnf 文件,依此類推。

       

      mysql 安裝完后可能沒有 /etc/my.cnf 文件,你可以在/usr/local/share/mysql/下看到:my-huge.cnf、my-innodb-heavy-4G.cnf、my-large.cnf、my-medium.cnf、my-small.cnf 等文件,可以將其中合適你機器配置的文件作為 /etc/my.cnf 文件拷貝到相應目錄。

      • my-huge.cnf:針對一個內存1-2GB的系統,系統主要運行MySQL。
      • my-small.cnf:內存 <= 64M
      • my-medium.cnf:內存 128M
      • my-large.cnf :內存 512M
      • my-innodb-heavy-4G.cnf:內存 4GB

      my-small.cnf my-medium.cnf my-large.cnf my-huge.cnf 是 MySQL 默認的幾個配置文件。針對不同配置的服務器可以使用不同的配置文件,將你需要的那一個.cnf文件修改為 my.cnf,存放到 MySQL 的安裝目錄。 

       

      4、mysql 字符集

      4.1、查看mysql字符集

      mysql 數據庫的默認字符集并不是 utf-8,而是 atin1(該字符集是包含中文字符的),所以在往數據庫插入中文時,查詢出來的可能就會是亂碼。我們需要把數據庫的字符集設置為 utf-8。

      可通過命令:show variables like '%char%';  來查詢所有跟字符集相關的信息。

      上面列出的參數說明如下:

      • character_set_client:客戶端請求數據的字符集
      • character_set_connection:客戶機/服務器連接的字符集
      • character_set_database:默認數據庫的字符集,無論默認數據庫如何改變,都是這個字符集;如果沒有默認數據庫,那就使用 character_set_server指定的字符集,這個變量建議由系統自己管理,不要人為定義。
      • character_set_filesystem:把os上文件名轉化成此字符集,即把 character_set_client轉換character_set_filesystem, 默認binary是不做任何轉換的
      • character_set_results:結果集,返回給客戶端的字符集
      • character_set_server:數據庫服務器的默認字符集
      • character_set_system:系統字符集,這個值總是utf8,不需要設置。這個字符集用于數據庫對象(如表和列)的名字,也用于存儲在目錄表中的函數的名字。

      我們可以通過 show create database 庫名; 命令來查看某一數據庫的字符集,如下:

       

      4.2、修改mysql的默認字符集

      我們可以通過修改 mysql 的配置文件,以此來修改 mysql 的默認字符集。

      首先,將 /usr/share/mysql/my-huge.cnf 文件拷貝到 /etc/my.cnf 文件中,即執行命令:cp /usr/share/mysql/my-huge.cnf /etc/my.cnf,并編輯 my.cnf 文件添加以下內容:

      [client]
      default-character-set=utf8
      [mysqld]
      character_set_server=utf8
      character_set_client=utf8
      collation-server=utf8_general_ci
      [mysql]
      default-character-set=utf8

      然后通過命令:service mysql restart 重啟 mysql,再次進入 mysql 查看字符集,可以看到已經生效。

      但是請注意:已經創建的數據庫的字符集并不會自動發生變化,參數修改只對新建的數據庫有效!所以我們在創建數據庫之前一般要先設置好字符集。

      我們也可以修改某一數據庫甚至某一表的字符集,但是無論是修改 mysql 配置文件或是修改庫、表字符集,已經亂碼的數據都是無法改變的,只能刪除數據重新插入或更新數據才可以完全解決。

      # 修改數據庫的字符集
      alter database mytestdb character set 'utf8';
      # 修改數據表的字符集
      alter table mytesttable character set 'utf8';

       

      4.3、設置大小寫不敏感

      我們可以通過命令:show variables like '%lower_case_table_names%'; 來查看 mysql 數據庫是否對大小寫敏感。

      可以看到,默認情況下,mysql 是對大小寫敏感的。比如我們通過 select * from TESTDB; 就無法找到 testdb 表。 

      我們可以通過修改配置文件來配置數據庫大小寫不敏感,在 my.cnf 配置文件的 [mysqld] 中加入 lower_case_table_names = 1,如下:

      然后通過 service mysql restart  重啟服務器即可。此時我們通過 select * from TESTDB; 就可以找到 testdb 表。 

      注意:如果要設置屬性為大小寫不敏感,要在重啟數據庫實例之前就需要將原來的數據庫和表轉換為小寫,否則將找不到數據庫名,因為設置為大小寫不敏感時,sql 語句都會轉換為小寫再對表進行查找。在進行數據庫參數設置之前,需要掌握這個參數帶來的影響,切不可盲目設置。

       

      5、mysql的邏輯架構

      和其它數據庫相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用并發揮良好作用。主要體現在存儲引擎的架構上,插件式的存儲引擎架構將查詢處理和其它的系統任務以及數據的存儲提取相分離。這種架構可以根據業務的需求和實際需要選擇合適的存儲引擎。

      簡化的 mysql 邏輯架構圖:

      詳細版 mysql 邏輯架構:

       

      • Connectors

      指的是不同語言中與SQL的交互。

       

      • 連接層(connection pool)

      該層是客戶端的連接服務,主要完成客戶端的連接處理,授權認證。在該層有一個線程池,每一個連接從線程池中獲取線程,省去了創建和銷毀線程的開銷。同樣在該層上可以實現基于SSL的安全鏈接。服務器也會為安全接入的每個客戶端驗證它所具有的操作權限。

      負責監聽對 MySQL Server 的各種請求,接收連接請求,轉發所有連接請求到線程管理模塊。每一個連接上 MySQL Server 的客戶端請求都會被分配(或創建)一個連接線程為其單獨服務。而連接線程的主要工作就是負責 MySQL Server 與客戶端的通信,接受客戶端的命令請求,傳遞 Server 端的結果信息等。線程管理模塊則負責管理維護這些連接線程。包括線程的創建,線程的 cache 等。

       

      • 服務層

      中間這一層可以完成查詢解析,分析,優化,緩存。存儲過程,觸發器,視圖也是在這一層。

      Management Serveices & Utilities  系統管理和控制工具
      SQL Interface SQL 接口。接受用戶的 SQL 命令,并且返回用戶需要查詢的結果。比如 select from 就是調用 SQL Interface
      Parser 解析器。 SQL 命令傳遞到解析器的時候會被解析器驗證和解析
      Optimizer 查詢優化器。 SQL 語句在查詢之前會使用查詢優化器對查詢進行優化,比如有 where 條件時,優化器來決定先投影還是先過濾。
      Cache 和 Buffe 查詢緩存。如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取 數據。這個緩存機制是由一系列小緩存組成的。比如表緩存,記錄緩存,key 緩存, 權限緩存等

       

      • 引擎層

      負責mysql中數據的存儲和提取。和其它數據庫有所不同,mysql的存儲引擎是可插拔的,可以根據不同的場合使用不同的存儲引擎。

       

      •  存儲層

      數據存儲層,主要是將數據存儲在運行于裸設備的文件系統之上,并完成與存儲引擎的交互。

       

      5.1、存儲引擎

      存儲引擎:存儲引擎就是存儲數據,更新、查詢數據,建立索引等等的技術實現方式,mysql5.0支持的存儲引擎包括: InnoDB 、MyISAM 、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中使用最多的是InnoDB 和MyISAM,mysql5.5之后InnoDB是默認的存儲引擎.

      通過命令:show engines; 可查看使用的 mysql 提供了什么存儲引擎。

      通過命令:show variables like '%storage_engine%'; 可查看當前默認使用的存儲引擎

       

      InnoDB 存儲引擎和 MyISAM 的對比:

      對比項 MyISAM InnoDB
      外鍵 不支持 支持
      事務 不支持 支持
      行表鎖

      支持表級鎖,不支持行級鎖

      即使操作一條記錄也會鎖住整個表, 不適合高并發的操作。

      支持表級鎖和行級鎖

      操作時只鎖某一行,不對其它行有影響, 適合高并發的操作。

      (只有通過索引條件檢索數據,InnoDB才使用行級鎖,否則,InnoDB將使用表鎖!)

      緩存 只緩存索引,不緩存真實數據 不僅緩存索引還要緩存真實數據,對內存要求較高,而且內 存大小對性能有決定性的影響
      關注點 讀性能 并發寫、事務、資源
      默認安裝 Y Y
      默認使用 N Y
      自 帶 系 統 表 使用 Y N

       

      6、MySQL的執行過程

      6.1、mysql的大致查詢流程

      mysql 的查詢流程大致是:

      1)mysql 客戶端通過協議與 mysql 服務器建連接,發送查詢語句,先檢查查詢緩存,如果命中,直接返回結果, 否則進行語句解析,也就是說,在解析查詢之前,服務器會先訪問查詢緩存(query cache)——它存儲 SELECT 語句以及 相應的查詢結果集。如果某個查詢結果已經位于緩存中,服務器就不會再對查詢進行解析、優化、以及執行。它僅僅將緩存中的結果返回給用戶即可,這將大大提高系統的性能。

      2)語法解析器和預處理:首先 mysql 通過關鍵字將 SQL 語句進行解析,并生成一顆對應的“解析樹”。mysql 解析 器將使用 mysql 語法規則驗證和解析查詢;預處理器則根據一些 mysql 規則進一步檢查解析樹是否合法。

      3)查詢優化器:當解析樹被認為是合法的了,并且由優化器將其轉化成執行計劃。一條查詢可以有很多種執行方式, 最后都返回相同的結果。優化器的作用就是找到這其中最好的執行計劃。

      4)然后,mysql 默認使用的 BTREE 索引,并且一個大致方向是:無論怎么折騰 sql,至少在目前來說,mysql 最多只 用到表中的一個索引。

       

      6.2、SQL的執行順序

      一般來說,我們手寫SQL的順序如下:

       

      真正執行的順序: 隨著 Mysql 版本的更新換代,其優化器也在不斷的升級,優化器會分析不同執行順序產生的性能消耗不同而動 態調整執行順序。下面是經常出現的查詢順序:

       

       

      posted @ 2020-07-20 22:37  wenxuehai  閱讀(1911)  評論(0)    收藏  舉報
      //右下角添加目錄
      主站蜘蛛池模板: 固原市| 亚洲成在人线AV品善网好看| 精品av综合导航| 中文字幕亚洲人妻系列| 中文字幕人妻中文AV不卡专区| 亚洲精品有码在线观看| 亚洲中文字幕国产精品| 国产午夜三级一区二区三| 人妻饥渴偷公乱中文字幕| 托里县| 国产一区二区三区美女| 浮妇高潮喷白浆视频| 18av千部影片| 国产精品区一二三四久久| 久久精品国产亚洲不AV麻豆| 黑人大荫道bbwbbb高潮潮喷| 在线精品另类自拍视频| 久久精品国产99国产精品严洲| 国产网友愉拍精品视频手机| 精品人妻一区二区三区蜜臀| 久久精品国产亚洲av天海翼 | 国产婷婷综合在线视频中文| 久久影院午夜伦手机不四虎卡| 精品日韩亚洲AV无码| 亚洲色大成网站www永久一区 | 久久国产免费观看精品3| 伊人久久大香线蕉AV网禁呦| 布尔津县| 精品无码久久久久国产电影| 日韩亚洲国产综合高清| 国产一卡2卡三卡4卡免费网站| 国内自拍偷拍一区二区三区| 亚洲粉嫩av一区二区黑人| 综合图区亚洲另类偷窥| 国产中文字幕一区二区| 日韩av影院在线观看| 九九热在线视频免费观看| 大庆市| 久久亚洲精品11p| 亚洲人成在线观看网站不卡| 欧洲无码一区二区三区在线观看|