mysql的高階用法 mysql的一些高階用法

2021-10-18 11:48:38 字數 3107 閱讀 5549

軟體安裝:裝機軟體必備包

sql是structured query language(結構化查詢語言)的縮寫。sql是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。在使用它時,只需要發出「做什麼」的命令,「怎麼做」是不用使用者考慮的。sql功能強大、簡單易學、使用方便,已經成為了資料庫操作的基礎,並且現在幾乎所有的資料庫均支援sql。當我們掌握了mysql的基本操作,比如建表語句,簡單的sql語句等,我們還可以對mysql本身做一些配置操作,甚至是對mysql進行優化。

1、mysql的配置檔案。

在windows中是my.ini檔案:

1)、log-bin:表示主從複製的日誌檔案,用於主從複製。

2)、log-error="so3jfynn8ew6gmo.err":表示錯誤日誌。

3)、server-id=1:表示本機的序號為1。

4)、datadir=d:/mysql5.7/data:存放資料庫資訊的目錄,

2、mysql的架構從上到下分成四層:

2)、服務層:完成sql的優化,分析,快取等功能。

3)、引擎層:負責儲存和提取資料。

4)、儲存層:資料儲存層,主要將資料儲存在檔案系統之中,並完成與引擎的互動。

3、mysql引擎

1)檢視使用的引擎:

show engins或者show

myisam和innodb的比較

不支援主外鍵值對;支援

不支援事務;支援

表鎖,不適合高併發;行鎖,適合高併發

只快取索引;快取索引和資料,對記憶體要求更高

表空間小;表空間大

4、mysql效能優化下降原因

1)、查詢語句寫的爛

2)、索引失效

單值索引

create index idx_user_name on user(name)

復合索引

create index idx_user_name_email on user(name,email)

3)、查詢有太多的join

4)、伺服器調優及各個引數

5、mysql的執行順序

機器從from開始讀。

1)、內連線

select *from tablea a inner join tableb b on a.key=b.key。

2)、左外連線

select *from tablea a left join tableb b on a.key= b.key

當b沒有的,用null補全。

3)、右外連線

select *from tablea a right join tableb b on a.key=b.key

當a沒有時,用null補全

4)、左外連線,去除右表部分

select *from tablea a left join tableb b on a.key=b.key where b.key is null

a的獨有,這此時b的用null補齊,所以此時b是為空的。

5)、右外連線,去除左表部分

select *from tablea a right join tableb b on a.key = b.key where a.key is null

6)、全連線(可以採用兩者相加)union 可以組合並去重

select *from tablea a left join tableb b on a.key=b.key union

(select *from tablea a right join tableb b )

7)、中心空出來

select *from tablea a left join tableb b on a.key=b.key where b.key is null union

(select *from tablea a right join tableb b on a.key=b.key where a.key is null)

6、什麼是索引

1)、索引是一種資料結構,在於提高查詢效率。

排好順序的快速查詢資料結構。

資料庫維護著滿足特定演算法的資料結構,這種資料結構以

某種方式指向資料,這樣可以在這些資料結構上實現高階的超找

演算法,這種資料結構稱為索引。

btree索引(沒有特殊指定的情況下)

頻繁刪改的字段,不適合建索引。

2)、優勢

提高資料檢索的效率,降低資料庫的io成本

通過索引列對資料進行 排序,降低資料排序的成本,降低了cpu的消耗

3)、劣勢

索引也是一張表,佔磁碟空間。

更新表時要維護索引,會降更新效率。

索引只是乙個提高效率的因素,建立索引需要花時間和精力。

4)、單值索引,只包含乙個列,一張表可以有多個單值索引。

5)、唯一索引,索引列的值必須唯一,允許為空。

6)、復合索引,包含多個列。

7)、索引的相關操作

create index idx_user_name on user(name)

alter user add index idx_user_name on (name)

show index from user

drop index idx_user_name on user

8)、索引結構

hash索引

full-text全文索引

r-tree 索引

btree索引 :

7、哪些情況要建立索引:

1)、主建自動建立唯一索引

2)、頻繁作為查詢條件的字段應該建立索引

3)、查詢中與其他表關聯的字段,外建關係建立索引。

4)、頻繁更新的字段,不適合建立索引

5)、where條件裡用不到的字段補建立索引。

6)、單建或者組合索引的選擇問題,在高併發下傾向於建立復合索引

7)、查詢中排序的字段,排序的字段如果按照索引去訪問,將提高效率

8)、查詢中統計或者分組字段

8、哪些情況不需要建立索引:

1)、表記錄太少

2)、經常增刪的表

3)、資料重複且分布平均的字段。

9、效能分析:

mysql query optimizer

以上是我總結的一些mysql高階的知識,希望對大家有所幫助。

mysql高階用法

1.建立檢視 create table weather id int 11 not null auto increment,date char 24 default null,week char 24 default null,img char 128 default null,temperatur...

mysql查詢高階用法

聯合查詢 select a.b.adress b.name from a b where a.sbno b.cdid order bya.sbno a.stime select a.a id,a.a name,b.b name from a a,b a where a.b id b.b id 聯合查...

mysql 高階 mysql高階知識

一.儲存引擎 引擎 指的是乙個系統的核心部分 引擎有不同分類是為了適應不同的使用場景 檢視mysql支援所有引擎 show engines mrg myisam 是一堆myisam表的集合 用於做水平分表,如果乙個表中資料量太大 將導致效率降低 水平分表就是把整個大表拆成不同的小表,每一次查詢 會判...