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所使用的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件采用了雙授權(quán)政策(本詞條“授權(quán)政策”),它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。

【功能介紹】
高速高速是MySQL的顯著特性,在MySQL中,使用了極快的“B樹(shù)”磁盤(pán)表(MyISAM)和索引壓縮;通過(guò)使用優(yōu)化的“單掃描多連接”,能夠?qū)崿F(xiàn)極快的連接。一直以來(lái),高速都是MySQL吸引眾多用戶的特性之一,這一點(diǎn)可能只有親自使用才能體會(huì)。
支持多平臺(tái)
MySQL支持超過(guò)20種開(kāi)發(fā)平臺(tái),包括Linux、Windows、FreeBSD、IBM AIX、HP-UX、Mac OS、OpenBSD、Solaris等,這使得用戶可以選擇多種平臺(tái)實(shí)現(xiàn)自己的應(yīng)用,并且在不同平臺(tái)上開(kāi)發(fā)的應(yīng)用系統(tǒng)可以很容易在各種平臺(tái)之間進(jìn)行移植。
支持各種開(kāi)發(fā)語(yǔ)言
MySQL為各種流行的程序設(shè)計(jì)語(yǔ)言提供支持,為它們提供了很多API函數(shù),包括C、C++、Java、Perl、PHP等。
提供多種存儲(chǔ)器引擎
MySQL中提供了多種數(shù)據(jù)庫(kù)存儲(chǔ)引擎,各引擎各有所長(zhǎng),適用于不同的應(yīng)用場(chǎng)合,用戶可以選擇最合適的引擎以得到最高性能。
功能強(qiáng)大
強(qiáng)大的存儲(chǔ)引擎使MySQL能夠有效應(yīng)用于任何數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),高效完成各種任務(wù),無(wú)論是大量數(shù)據(jù)的高速傳輸系統(tǒng),還是每天訪問(wèn)量超過(guò)數(shù)億的高強(qiáng)度的搜索Web站點(diǎn)。
支持大型數(shù)據(jù)庫(kù)
InnoDB存儲(chǔ)引擎將InnoDB表保存在一個(gè)表空間內(nèi),該表空間可由數(shù)個(gè)文件創(chuàng)建。這樣,表的大小就能超過(guò)單獨(dú)文件的最大容量。表空間還可以包括原始磁盤(pán)分區(qū),從而使構(gòu)建很大的表成為可能,最大容量可以達(dá)到64TB。
安全
靈活和安全的權(quán)限和密碼系統(tǒng),允許基于主機(jī)的驗(yàn)證。連接到服務(wù)器時(shí),所有的密碼傳輸均采用加密形式,從而保證了密碼安全。
價(jià)格低廉
MySQL采用GPL許可,很多情況下,用戶可以免費(fèi)使用MySQL;對(duì)于一些商業(yè)用途,需要購(gòu)買MySQL商業(yè)許可,但價(jià)格相對(duì)低廉。

【軟件特色】
1、 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面帶來(lái)了更好的性能:讀/寫(xiě)工作負(fù)載、IO 密集型工作負(fù)載、以及高競(jìng)爭(zhēng)("hot spot"熱點(diǎn)競(jìng)爭(zhēng)問(wèn)題)工作負(fù)載。
2、 NoSQL:MySQL 從 5.7 版本開(kāi)始提供 NoSQL 存儲(chǔ)功能,目前在 8.0 版本中這部分功能也得到了更大的改進(jìn)。該項(xiàng)功能消除了對(duì)獨(dú)立的 NoSQL 文檔數(shù)據(jù)庫(kù)的需求,而 MySQL 文檔存儲(chǔ)也為 schema-less 模式的 JSON 文檔提供了多文檔事務(wù)支持和完整的 ACID 合規(guī)性。

3、 窗口函數(shù)(Window Functions):從 MySQL 8.0 開(kāi)始,新增了一個(gè)叫窗口函數(shù)的概念,它可以用來(lái)實(shí)現(xiàn)若干新的查詢方式。窗口函數(shù)與 SUM()、COUNT() 這種集合函數(shù)類似,但它不會(huì)將多行查詢結(jié)果合并為一行,而是將結(jié)果放回多行當(dāng)中。即窗口函數(shù)不需要 GROUP BY。
4、隱藏索引:在 MySQL 8.0 中,索引可以被“隱藏”和“顯示”。當(dāng)對(duì)索引進(jìn)行隱藏時(shí),它不會(huì)被查詢優(yōu)化器所使用。我們可以使用這個(gè)特性用于性能調(diào)試,例如我們先隱藏一個(gè)索引,然后觀察其對(duì)數(shù)據(jù)庫(kù)的影響。如果數(shù)據(jù)庫(kù)性能有所下降,說(shuō)明這個(gè)索引是有用的,然后將其“恢復(fù)顯示”即可;如果數(shù)據(jù)庫(kù)性能看不出變化,說(shuō)明這個(gè)索引是多余的,可以考慮刪掉。
5、 降序索引:MySQL 8.0 為索引提供按降序方式進(jìn)行排序的支持,在這種索引中的值也會(huì)按降序的方式進(jìn)行排序。
6、 通用表表達(dá)式(Common Table Expressions CTE):在復(fù)雜的查詢中使用嵌入式表時(shí),使用 CTE 使得查詢語(yǔ)句更清晰。
7、 UTF-8 編碼:從 MySQL 8 開(kāi)始,使用 utf8mb4 作為 MySQL 的默認(rèn)字符集。
8、 JSON:MySQL 8 大幅改進(jìn)了對(duì) JSON 的支持,添加了基于路徑查詢參數(shù)從 JSON 字段中抽取數(shù)據(jù)的 JSON_EXTRACT() 函數(shù),以及用于將數(shù)據(jù)分別組合到 JSON 數(shù)組和對(duì)象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函數(shù)。
9、 可靠性:InnoDB 現(xiàn)在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以實(shí)現(xiàn)事務(wù)完整性,要么失敗回滾,要么成功提交,不至于出現(xiàn) DDL 時(shí)部分成功的問(wèn)題,此外還支持 crash-safe 特性,元數(shù)據(jù)存儲(chǔ)在單個(gè)事務(wù)數(shù)據(jù)字典中。
10、高可用性(High Availability):InnoDB 集群為您的數(shù)據(jù)庫(kù)提供集成的原生 HA 解決方案。
11、安全性:對(duì) OpenSSL 的改進(jìn)、新的默認(rèn)身份驗(yàn)證、SQL 角色、密碼強(qiáng)度、授權(quán)。

【使用技巧】
MySql常用命令總結(jié)1、使用SHOW語(yǔ)句找出在服務(wù)器上當(dāng)前存在什么數(shù)據(jù)庫(kù):
mysql> SHOW DATABASES;
2、創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3、選擇你所創(chuàng)建的數(shù)據(jù)庫(kù)
mysql> USE MYSQLDATA; (按回車鍵出現(xiàn)Database changed 時(shí)說(shuō)明操作成功!)
4、查看現(xiàn)在的數(shù)據(jù)庫(kù)中存在什么表
mysql> SHOW TABLES;
5、創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6、顯示表的結(jié)構(gòu):
mysql> DESCRIBE MYTABLE;
7、往表中加入記錄
mysql> insert into MYTABLE values (”hyq”,”M”);
8、用文本方式將數(shù)據(jù)裝入數(shù)據(jù)庫(kù)表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
9、導(dǎo)入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10、刪除表
mysql>drop TABLE MYTABLE;
11、清空表
mysql>delete from MYTABLE;
12、更新表中數(shù)據(jù)
mysql>update MYTABLE set sex=”f” where name=’hyq’;

【mysql安裝教程】

2、選擇安裝類型
第一個(gè)選項(xiàng)包含了一些MySQL其他組件,如果只安裝MySQL數(shù)據(jù)庫(kù),選擇第二項(xiàng)Server only就行。這里我直接選擇默認(rèn)的Developer Default

3、檢查必需項(xiàng)(Check Requirements)
Execute-->Next;出現(xiàn)警告框點(diǎn)擊“是”繼續(xù)

4、Installation
點(diǎn)擊Execute開(kāi)始執(zhí)行安裝,等全部安裝完之后,點(diǎn)擊Next

5、進(jìn)入配置界面 Product Configuration,Next

6、進(jìn)行服務(wù)配置,MySQL默認(rèn)端口為3306,Next

7、Accounts and Roles
這里一般不添加具有普通用戶權(quán)限的MySQL用戶賬戶,而是用root賬戶。

8、Windows Service
這里注意MySQL服務(wù)名(Windows Service Name)為:MySQL80

9、Apply Configuration(應(yīng)用配置)
點(diǎn)擊Execute

10、配置完成之后Finish

11、然后再配置MySQL的實(shí)例,點(diǎn)擊next
Check-->Next-->Execute

12、執(zhí)行完畢之后點(diǎn)擊Finish,又回到了主程序,然后點(diǎn)擊Next

13、安裝完成,F(xiàn)inish

【使用教程】
mysql怎么打開(kāi)?mysql怎么建立數(shù)據(jù)庫(kù)?1、點(diǎn)擊左下角開(kāi)始菜單按鈕

2、打開(kāi)開(kāi)始菜單

3、在開(kāi)始菜單下方搜索框中搜索cmd

4、敲下回車鍵,打開(kāi)cmd窗口

5、輸入mysql -u root -p命令,然后回車

6、提示輸入密碼,輸入正確的密碼,進(jìn)入mysql控制臺(tái)

7、輸入create database book;命令,意思是創(chuàng)建名為book的數(shù)據(jù)庫(kù),創(chuàng)建成功之后在使用show databases命令,來(lái)查看數(shù)據(jù)庫(kù)列表

【mysql打開(kāi)技巧】
mysql怎么用cmd打開(kāi)?1、右鍵“計(jì)算機(jī)”,選擇屬性,點(diǎn)擊“高級(jí)系統(tǒng)設(shè)置”,如下圖所示:

2、在高級(jí)系統(tǒng)設(shè)置里面,選擇“環(huán)境變量”,如下圖所示:

3、在環(huán)境變量系統(tǒng)變量里面找到"path",點(diǎn)擊編輯,如下圖所示:

4、按“win+D”切換到桌面,找到mysql的安裝目錄,復(fù)制其地址,如下圖所示:

5、將mysql的安裝目錄地址復(fù)制到path中,用英文分號(hào)分割path先前的內(nèi)容,然后一直點(diǎn)擊確定,如下圖所示:

6、在cmd中輸入“mysql -uroot -p123456”,root是mysql用戶名,123456是密碼,可以看到可以直接打開(kāi),如下圖所示:

【mysql存儲(chǔ)過(guò)程】
mysql怎么存儲(chǔ)?1、使用常規(guī)的創(chuàng)建存儲(chǔ)過(guò)程方法,發(fā)現(xiàn)各種報(bào)錯(cuò),無(wú)法執(zhí)行,在SQL SERVER下很容易成功的寫(xiě)法,在MySQL下居然不行,經(jīng)過(guò)查找資料發(fā)現(xiàn)在MySQL中需要設(shè)置DELIMITER

2、這是正確的存儲(chǔ)過(guò)程寫(xiě)法,可以成功執(zhí)行,相比較上圖的報(bào)錯(cuò),增加了DELIMITER,簡(jiǎn)單解釋下這個(gè)命令的用途,在MySQL中每行命令都是用“;”結(jié)尾,回車后自動(dòng)執(zhí)行,在存儲(chǔ)過(guò)程中“;”往往不代表指令結(jié)束,馬上運(yùn)行,而DELIMITER原本就是“;”的意思,因此用這個(gè)命令轉(zhuǎn)換一下“;”為“//”,這樣只有收到“//”才認(rèn)為指令結(jié)束可以執(zhí)行

3、該存儲(chǔ)過(guò)程的功能是將“編號(hào)”這行記錄的流水號(hào)+1,在執(zhí)行存儲(chǔ)過(guò)程之前,我們查看下數(shù)據(jù)庫(kù)中該表的數(shù)據(jù)情況

4、執(zhí)行存儲(chǔ)過(guò)程使用call命令,與SQL SERVER的exec用法一樣,執(zhí)行后發(fā)現(xiàn)了返回值,流水號(hào)已經(jīng)+1

5、為了確認(rèn)數(shù)據(jù)庫(kù)中數(shù)據(jù)確實(shí)修改,重新執(zhí)行遍查詢操作

6、該例中使用了start transaction;事務(wù)處理,功能就不解釋了,但用法與SQL SERVER有點(diǎn)區(qū)別,事實(shí)上MySQL在很多地方的語(yǔ)法上與SQL SERVER不一樣,但功能類似,需要大家多接觸,多練習(xí)
7、還有一點(diǎn)需要補(bǔ)充下,在MySQL中似乎沒(méi)有修改存儲(chǔ)過(guò)程的命令,執(zhí)行alter procedure報(bào)錯(cuò)

8、分析了下mysql workbench工具中的alter命令,其實(shí)是先執(zhí)行的drop然后在create,沒(méi)有直接用alter操作

【卸載教程】

2、然后刪除mysql文件夾下的my.ini文件及所有文件

3、運(yùn)行“regedit”文件,如圖,打開(kāi)注冊(cè)表

4、刪除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL文件夾

5、刪除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL文件夾。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL的文件夾。如圖低端的地址。如果沒(méi)有可以不用刪除了。

6、刪除C盤(pán)下的“C:\ProgramData\MySQL ”所以文件,如果刪除不了則用360粉碎掉即可,該programData文件是隱藏的默認(rèn),設(shè)置顯示后即可見(jiàn),或者直接復(fù)制上邊的地址到地址欄回車即可進(jìn)入!刪除后重啟電腦,重裝MYsql數(shù)據(jù)庫(kù)應(yīng)該就成功了。

【更新日志】
MySQL8.0新功能事務(wù)住數(shù)據(jù)字典,完全脫離了MylSAM存儲(chǔ)引擎
真正將數(shù)據(jù)字典放到了1nnoOB中的一些表中,夕J長(zhǎng)下再需要FRM、TRG、pAR文件啦!InfrmationSchema現(xiàn)在以數(shù)據(jù)字典表的一個(gè)視圖出現(xiàn)。原則上可以完全不需要MylSAM數(shù)據(jù)表類型了,所有的系統(tǒng)表都可以放到Inn0OB之中。
SQL角色
角色是一系列嘆限的集臺(tái)??梢詣?chuàng)建角色,給莫個(gè)用戶授子和去除角色。這對(duì)于權(quán)限管理很方便。
uttsmb4字芍集將成為默認(rèn)字符集,并支持Unicode 9默認(rèn)字符集將從1atinl改為uttsmb4,默認(rèn)走序collatlon將從latlnl_swedish_ci改為utf8mb4_800_ci_ai。
不可見(jiàn)的索引
可以將一些索引設(shè)置為不可見(jiàn),這樣SOL優(yōu)化器就不會(huì)用到它,但是它會(huì)繼續(xù)在后臺(tái)板紛寺更新。當(dāng)有需要時(shí),可以隨時(shí)恢復(fù)可見(jiàn)。
對(duì)二進(jìn)制數(shù)據(jù)可以進(jìn)行位操作
不僅僅可以對(duì)BIGIN下進(jìn)行位操作,從8.0開(kāi)始也支持對(duì)[VAR]BINARY/[TINY|MEDIUM|LONG]BLOB進(jìn)行位操作了。
持續(xù)性的全球變量
lnnoDB緩沖區(qū)現(xiàn)在可以估算主內(nèi)存緩存區(qū)中的有多少表和索引,這可以讓優(yōu)化器選擇訪問(wèn)
方式時(shí)知道數(shù)據(jù)是否可以存儲(chǔ)在陣存中環(huán)旱必須存儲(chǔ)到磁盤(pán)上。
重構(gòu)BLOB
加速了片段讀取/更新操作,可以加速JSON數(shù)據(jù)的操作。
重構(gòu)SQL分析器
持續(xù)不斷的逐步改進(jìn)SQL分析器。舊的分析器由于其語(yǔ)法復(fù)雜性和目頂向下的分析方式從而有嚴(yán)重的限制,導(dǎo)致難以維護(hù)和擴(kuò)展。
成本模型
1nn0OB緩沖區(qū)現(xiàn)在可以估算主內(nèi)存緩存區(qū)中的有多少表和索引,這可以讓優(yōu)化器選擇訪問(wèn)
方式時(shí)知道數(shù)據(jù)是否可以存儲(chǔ)在陣存中環(huán)旱必須存儲(chǔ)到磁盤(pán)上。
持久化自增值
Inn0OB會(huì)持久化保持自增序列的最大值到redo日志中。這個(gè)改講環(huán)修復(fù)了一個(gè)非營(yíng)老的19g號(hào)bug。
改進(jìn)掃描性能
改進(jìn)了lnnOOB范圍里到旬的性能,可提升全表查詢和范圍查詢5一20%的性能。
臨時(shí)表
取消對(duì)壓縮臨時(shí)表的支持,并存儲(chǔ)臨時(shí)表的元數(shù)據(jù)到內(nèi)存中。



































