課程目錄

一、數(shù)據(jù)庫基礎(chǔ)(Database)

1.1 認(rèn)識(shí)數(shù)據(jù)庫

1.1.1 基本概念

        DB:能將大量數(shù)據(jù)保存起來,通過計(jì)算機(jī)加工而成的可以進(jìn)行高效訪問的數(shù)據(jù)集合稱為數(shù)據(jù)庫(database,db)

        DBMS:用來管理數(shù)據(jù)庫的計(jì)算機(jī)系統(tǒng)稱為數(shù)據(jù)庫管理系統(tǒng)(database management system,dbms)。

        RDBMS:關(guān)系型數(shù)據(jù)庫通過關(guān)系數(shù)據(jù)庫管理系統(tǒng)(relational database management system,rdbms)進(jìn)行管理。

        我們常常會(huì)用“數(shù)據(jù)庫”簡(jiǎn)單代稱上面的三個(gè)概念,但是要注意使用場(chǎng)景。

1.1.2 數(shù)據(jù)庫作用

        B站等網(wǎng)站、微信等APP背后都是一個(gè)巨大的數(shù)據(jù)庫系統(tǒng),我們點(diǎn)擊或者輸入文字都會(huì)存儲(chǔ)在數(shù)據(jù)庫中或者從數(shù)據(jù)庫中取出對(duì)應(yīng)數(shù)據(jù)。

數(shù)據(jù)庫管理系統(tǒng)的構(gòu)成:

      a.能讓我們使用表、列和索引實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(如何存入數(shù)據(jù))

      b.解析和執(zhí)行一個(gè)SQL查詢,并將結(jié)果返回給客戶端(如何讀出數(shù)據(jù))

      c.提供管理接口(如何管理數(shù)據(jù)I/O過程)

數(shù)據(jù)庫的構(gòu)成:

     a.(子)數(shù)據(jù)庫:是表的集合,帶有相關(guān)的元數(shù)據(jù)。

     b.表:)一個(gè)表是由列和行組成的數(shù)據(jù)矩陣。數(shù)據(jù)庫基礎(chǔ)對(duì)象。

     c.列(字段):一個(gè)列(數(shù)據(jù)元素)包含同一類型的數(shù)據(jù)。

     d.行(記錄):是一組相關(guān)的數(shù)據(jù)。

     e.約束:用于確保數(shù)據(jù)庫滿足業(yè)務(wù)規(guī)則。

1.1.3 數(shù)據(jù)庫分類

a.關(guān)系型數(shù)據(jù)庫:

        MySQL,oracle,SQLserver,db2,access等,傳統(tǒng)數(shù)據(jù)庫一般都是使用這類關(guān)系型數(shù)據(jù)庫。所有的數(shù)據(jù)存儲(chǔ)在不同表中,使用主鍵或外鍵建立表間的關(guān)系。

b.非關(guān)系型數(shù)據(jù)庫(NoSQL):

       文檔型數(shù)據(jù)庫(mongodb),鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(redis),列存儲(chǔ)數(shù)據(jù)庫(Cassandra),圖形(Graph)數(shù)據(jù)庫等,為解決大規(guī)模數(shù)據(jù)集合、多重?cái)?shù)據(jù)種類、高并發(fā)的新需求。

1.1.4 數(shù)據(jù)庫管理系統(tǒng)(DBMS)

a.數(shù)據(jù)庫文件

        按照一定規(guī)則,存放在硬盤上的數(shù)據(jù)文件集合。所以,MySQL 里的數(shù)據(jù)庫都能在計(jì)算機(jī)硬盤內(nèi)某個(gè)文件夾里找到對(duì)應(yīng)的數(shù)據(jù)文件。

b.數(shù)據(jù)庫管理系統(tǒng)

        用來管理數(shù)據(jù)庫文件一套程序(比如關(guān)系型/非關(guān)系型數(shù)據(jù)庫)。

c.數(shù)據(jù)庫實(shí)例

        指計(jì)算機(jī)內(nèi)存中處于運(yùn)行狀態(tài)的數(shù)據(jù)庫程序,以及為這些程序分配的一些內(nèi)存空間。

        實(shí)例是位于內(nèi)存中,只在數(shù)據(jù)庫處運(yùn)行狀態(tài)時(shí)才存在。簡(jiǎn)單點(diǎn)來講,數(shù)據(jù)庫實(shí)例就是把數(shù)據(jù)庫加載到內(nèi)存里面。

d.數(shù)據(jù)庫應(yīng)用

        建立在數(shù)據(jù)庫上,對(duì)其功能進(jìn)行擴(kuò)充的程序。比如支付寶和微信都屬于數(shù)據(jù)庫應(yīng)用程序,它們的后臺(tái)都需要數(shù)據(jù)庫來存儲(chǔ)數(shù)據(jù)。

1.2 MySQL

1.2.1 MySQL官方下載地址

    MySQL :: Download MySQL Community Server

1.2.2 MySQL的種類

        MySQL community server 社區(qū)版本,開源免費(fèi),但不提供官方技術(shù)支持,通常情況下都是選擇社區(qū)版。

        MySQL enterprise edition 企業(yè)版本,需付費(fèi),可以試用30天。

        MySQL cluster集群版,開源免費(fèi)。可將幾個(gè)MySQLserver封裝成一個(gè)server。

        MySQL clustercge高級(jí)集群版,需付費(fèi)。

       對(duì)MySQL的二次開發(fā):percona(淘寶在用,用作定制化開發(fā));mariadb(銀行經(jīng)常它用來取代MySQL)

1.2.3 MySQL版本

       MySQL 的命名是根據(jù)發(fā)行版本不同由三個(gè)數(shù)字和一個(gè)后綴組成,如:MySQL-5.7.2。發(fā)行版名稱中的數(shù)字使用如下規(guī)則解析:

      5表示主版本(major version),同時(shí)也定義了文件格式(file format)。所有主版本相同的版本有著同樣的文件格式,不用主版本的差別會(huì)很大;

       7表示發(fā)行版本(release level),主版本和發(fā)行版本一同構(gòu)成該發(fā)行版序列號(hào)(series number);

       5表示該發(fā)行版系列的小版本(version),該數(shù)字隨著發(fā)行版本的每次新發(fā)布遞增,通常我們會(huì)選擇最新的次版本。

1.3如何訪問數(shù)據(jù)庫

        要訪問數(shù)據(jù)庫服務(wù)器,必須通過客戶端.客戶端可以分為兩大類:命令行(自帶),可視化工具。

1.3.1 通過命令行客戶端訪問數(shù)據(jù)庫服務(wù)器

第一步:配置環(huán)境變量path

  第二步:打開命令窗口

        在“開始”輸入“cmd”+回車,也可以按鍵盤上的“微軟logo”+“R”

第三步:?jiǎn)?dòng)MySQL客戶端程序

       如果數(shù)據(jù)庫在當(dāng)前電腦上,可以直接輸入指定賬戶和密碼,連接服務(wù)。如下圖輸入:

mysql -u -root -p

        如果數(shù)據(jù)庫在服務(wù)器上,不在你電腦上。比如你們公司數(shù)據(jù)庫的ip 地址是:192.168.1.122。上面輸入命令行的時(shí)候需要改成輸入:

mysql -h 192.168.1.122-u -root -p

第四步:退出命令行模式

        執(zhí)行退出語句“exit”

1.3.2 內(nèi)置的命令行模式訪問

      也可以不在cmd進(jìn)入命令行模式,通過MySQL內(nèi)置的命令行模式:

1.3.3 圖形化界面工具訪問

常用的MySQL可視化工具:

        MySQL workbench:官方自帶免費(fèi)工具

        navicat:收費(fèi)版本,界面和功能更加強(qiáng)大,還可以支持SQLserver

MySQL workbench的使用

        添加連接數(shù)據(jù)庫名字和IP地址,默認(rèn)的地址是本機(jī)數(shù)據(jù)庫地址。

1.4MySQL服務(wù)啟動(dòng)與關(guān)閉命令

        從命令行或者圖形化界面客戶端連接數(shù)據(jù)庫服務(wù)器時(shí),一般都會(huì)自動(dòng)啟動(dòng)MySQL服務(wù)實(shí)例,但是有時(shí)候會(huì)出現(xiàn)意外,服務(wù)沒有啟動(dòng),這時(shí)候需要手動(dòng)啟動(dòng)。

方法一:命令行模式

        在開始菜單中輸入cmd,然后右擊“命令提示符”,用管理員權(quán)限打開,否則有可能無法訪問。

        使用啟動(dòng)或者關(guān)閉MySQL默認(rèn)服務(wù)實(shí)例:

        使用net start/stop mysql57啟動(dòng)或者關(guān)閉MySQL默認(rèn)服務(wù)實(shí)例: 

        方法二:窗口模式

        進(jìn)入控制面板-管理工具-服務(wù)-MySQL57,右鍵啟動(dòng)或關(guān)閉MySQL默認(rèn)服務(wù)實(shí)例。

       右擊 MySQL57這一行,可以啟動(dòng)和關(guān)閉 MySQL57。

二、MySQL簡(jiǎn)介

2.1 SQL和MySQL

        SQL:結(jié)構(gòu)化查詢語言(structured query language),是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。

        MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是一種開源的數(shù)據(jù)庫軟件,簡(jiǎn)單一點(diǎn)的理解就是 MySQL 用來存儲(chǔ)數(shù)據(jù),而 SQL 是用來管理 MySQL 的一種語言。

        SQL是一種語言,MySQL 是一種數(shù)據(jù)庫軟件。

        SQL的標(biāo)準(zhǔn)并不強(qiáng)制每種RDMS都必須使用。

2.2 SQL的基本書寫規(guī)則

        SQL 語句以分號(hào)“;”結(jié)尾。

        SQL語句不區(qū)分大小寫,但是插入到表中的數(shù)據(jù)是區(qū)分大小寫的。

        字符串和日期常數(shù)需要使用單引號(hào)“ ' ”括起來,數(shù)字直接寫即可。

        單行注釋可以用“-- ”

        多行注釋可以用快捷鍵:ctrl+/(小鍵盤的”/”)

2.3 數(shù)據(jù)庫基本操作

        SQL用關(guān)鍵字、表名、列名等組合而成的一條語句(SQL語句)來描述操作的內(nèi)容。關(guān)鍵字是指那些含義或使用方法已事先定義好的英語單詞。

2.4 SQL語句分類

        根據(jù)對(duì)RDBMS 賦予的指令種類的不同,SQL語句可以分為以下三類。

DDL

        DDL(data definition language,數(shù)據(jù)定義語言)用來創(chuàng)建或者刪除存儲(chǔ)數(shù)據(jù)用的數(shù)據(jù)庫以及數(shù)據(jù)庫中的表等對(duì)象。DDL包含以下幾種指令。

        create:創(chuàng)建數(shù)據(jù)庫和表等對(duì)象

        alter:修改數(shù)據(jù)庫和表等對(duì)象的結(jié)構(gòu)

        drop:刪除數(shù)據(jù)庫和表等對(duì)象

DML

        DML(data manipulation language,數(shù)據(jù)操縱語言)用來查詢或者變更表中的記錄。DML 包含以下幾種指令。

        insert:向表中插入新數(shù)據(jù)

        update:更新表中的數(shù)據(jù)

        delete:刪除表中的數(shù)據(jù)

DCL

        DCL(data control language,數(shù)據(jù)控制語言)用來確認(rèn)或者取消對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更。除此之外,還可以對(duì) RDBMS的用戶是否有權(quán)限操作數(shù)據(jù)庫中的對(duì)象(數(shù)據(jù)庫表等)進(jìn)行設(shè)定。DCL 包含以下幾種指令。

        commit:確認(rèn)對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更

        rollback:取消對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更

        grant:賦予用戶操作權(quán)限

        revoke:取消用戶的操作權(quán)限

DQL

        DQL(data query language)數(shù)據(jù)查詢語言(select),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫中數(shù)據(jù)的讀操作。是數(shù)據(jù)分析重點(diǎn)學(xué)習(xí)的重點(diǎn)。

TCL

        TCL(transaction control language) 事務(wù)控制語言(save commit roll back)用于事務(wù)的操作。

2.5 創(chuàng)建數(shù)據(jù)庫

方法一:使用SQL代碼

create database school;

use school;

方法二:在數(shù)據(jù)庫區(qū)域點(diǎn)擊建庫

2.6 顯示和使用數(shù)據(jù)庫

Show databases;

use school;

        MySQL自身會(huì)有一些系統(tǒng)庫,一般不要?jiǎng)h除或變動(dòng)。

        sys庫:MySQL5.7增加了sys系統(tǒng)數(shù)據(jù)庫,通過這個(gè)庫可以快速的了解系統(tǒng)的元數(shù)據(jù)信息。

        information_schema庫:提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式。

        mysql庫:主要負(fù)責(zé)存儲(chǔ)數(shù)據(jù)庫的用戶、權(quán)限設(shè)置、關(guān)鍵字等MySQL自己需要使用的控制和管理信息。

        performance_schema庫:主要用于收集數(shù)據(jù)庫服務(wù)器性能參數(shù)。

2.7 刪除數(shù)據(jù)庫

方法一:SQL代碼

drop database school;

方法二:在workbench上刪除

2.8 創(chuàng)建表

方法一:SQL代碼

在建一個(gè)新表之前就指定數(shù)據(jù)庫,這里指定數(shù)據(jù)庫school。

use school;

creat table+表名;

方法二:在workbench上建表

2.9 數(shù)據(jù)庫引擎

2.9.1 什么是數(shù)據(jù)庫引擎

        相當(dāng)于數(shù)據(jù)庫實(shí)例的發(fā)動(dòng)機(jī)。數(shù)據(jù)庫引擎是用于存儲(chǔ)、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。利用數(shù)據(jù)庫引擎可控制訪問權(quán)限并快速處理事務(wù),從而滿足企業(yè)內(nèi)大多數(shù)需要處理大量數(shù)據(jù)的應(yīng)用程序的要求。使用數(shù)據(jù)庫引擎創(chuàng)建用于聯(lián)機(jī)事務(wù)處理或聯(lián)機(jī)分析處理數(shù)據(jù)的關(guān)系數(shù)據(jù)庫。這包括創(chuàng)建用于存儲(chǔ)數(shù)據(jù)的表和用于查看、管理和保護(hù)數(shù)據(jù)安全的數(shù)據(jù)庫對(duì)象(如索引、視圖和存儲(chǔ)過程)。

        不同的數(shù)據(jù)庫引擎有不同的特點(diǎn),可以滿足各種不同的業(yè)務(wù)場(chǎng)景。MySQL。

2.9.2 常見的數(shù)據(jù)庫引擎

        包括innodb、myisam、memery、csv、blackhole、archive、federated、performance_schema。其中innodb和myisam占到95%以上。

        innodb是一個(gè)強(qiáng)大的事務(wù)型存儲(chǔ)引擎,這種存儲(chǔ)引擎已經(jīng)被很多互聯(lián)網(wǎng)公司使用,為用戶操作非常大的數(shù)據(jù)存儲(chǔ)提供了一個(gè)強(qiáng)大的解決方案。               

        innodb還引入了行級(jí)鎖定和外鍵約束,在以下場(chǎng)合下,使用innodb 是最理想的選擇:

        更新密集的表:innodb 存儲(chǔ)引擎特別適合處理多重并發(fā)的更新請(qǐng)求。

        事務(wù):innodb 存儲(chǔ)引擎是支持事務(wù)的標(biāo)準(zhǔn) MySQL 存儲(chǔ)引擎。

        外鍵約束:MySQL支持外鍵的存儲(chǔ)引擎只有innodb

課程聯(lián)系1:
大學(xué)資源網(wǎng)客服

課程聯(lián)系2:
大學(xué)資源網(wǎng)客服

課程聯(lián)系3:
大學(xué)資源網(wǎng)客服

服務(wù)時(shí)間:
8:00-21:00(工作日)

晋宁县| 来宾市| 武冈市| 衡南县| 城步| 天津市| 盱眙县| 东乌| 阿坝县| 甘肃省| 孟连| 仁怀市| 定日县| 义马市| 周宁县| 仙桃市| 景东| 定襄县| 漯河市| 翁牛特旗| 香河县| 留坝县| 容城县| 白水县| 东乡县| 应城市| 西乌珠穆沁旗| 白朗县| 育儿| 清流县| 鲁甸县| 柳河县| 梁河县| 镇坪县| 科技| 安平县| 凤山县| 大埔区| 海宁市| 石楼县| 磐石市|