day05(information_schema、show逛艰、索引)

1. distinct對某個列進行去重

select distinct(cno) from score;


mysql> select distinct(cno) from score;
+------+
| cno  |
+------+
| 1001 |
| 1002 |
| 1003 |
+------+
3 rows in set (0.00 sec)



mysql> select count(*) from world.city;
+----------+
| count(*) |
+----------+
|     4079 |
+----------+
1 row in set (0.05 sec)

mysql> select count(distinct(name)) from world.city;
+-----------------------+
| count(distinct(name)) |
+-----------------------+
|                  3998 |
+-----------------------+
1 row in set (0.01 sec)

2. 別名

表別名
SELECT stu.sname,co.cname
FROM student as stu
JOIN score as sc
ON stu.sno = sc.sno
JOIN course as co
ON sc.cno = co.cno
WHERE stu.sname = 'zhang3';



列別名
mysql> select count(distinct(name)) as 個數(shù) from world.city;
+--------+
| 個數(shù)   |
+--------+
|   3998 |
+--------+
1 row in set (0.01 sec)


3. 外連接(優(yōu)化)

左外鏈接(左邊是小數(shù)據(jù)右邊是大數(shù)據(jù))
select a.name,b.name,b.surfacearea 
from city as a 
left join country as b 
on a.countrycode=b.code 
where a.population<100 ;



4. information_schema

1.  視圖
--- 8. 查詢zhang3,學(xué)習(xí)的課程名稱有哪些?

create view zs_v as
SELECT stu.sname,co.cname
FROM student as stu
JOIN score as sc
ON stusno = sc.sno
JOIN course as co
ON sc.cno = co.cno
WHERE stu.sname = 'zhang3';
 
select * from zs_v;

information_schema視圖庫(虛擬庫)

use information_schema
show tables;
表:元數(shù)據(jù)+數(shù)據(jù)行
------->元數(shù)據(jù)存儲在“基表“,無法直接查詢和修改
------->DDL搞旭、DCL對元數(shù)據(jù)進行修改
------->information_schema(全局類的統(tǒng)計和)和show的語句查詢元數(shù)據(jù)

mysql> mysql> desc tables;
TABLE_SCHEMA          表所在的庫
TABLE_NAME            表名
ENGINE                表的存儲引擎
TABLE_ROWS            表的行數(shù)
AVG_ROW_LENGTH        平均行長度
INDEX_LENGTH          索引長度
                                                                                                    
-----查詢整個數(shù)據(jù)庫中所有庫對應(yīng)的表名
select table_schema,table_name
from information_schema.`TABLES`;

----查詢world和school庫對應(yīng)的所有表名
select table_schema,table_name
from information_schema.`TABLES`
where table_schema='world';
union all
select table_schema,table_name
from information_schema.`TABLES`
where table_schema='school';

----統(tǒng)計一下每個庫下的表的個數(shù)
select table_schema,count(table_name)
from information_schema.`TABLES`
group by table_schema;

--- 查詢整個數(shù)據(jù)庫中所有的庫對應(yīng)的表名散怖,每個庫顯示成一行
select table_schema,group_concat(table_name)
from information_schema.`TABLES`
group by table_schema;



---統(tǒng)計一下每個庫的真實數(shù)據(jù)量
每張表數(shù)量=AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH
select 
table_schema,
count(table_name),
sum(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024/1024 as table_mb
from information_schema.`TABLES`
group by table_schema;


----模仿以上命令,對整個數(shù)據(jù)庫下的1000張表進行單獨備份肄渗,排除sys,performance,information_schema
select concat("mysqlump -uroot -p123 ",table_schema," ",table_name,">/tmp/",table_schema,"_",table_name,".sql")
from information_schema.tables
where table_schema not in('sys','performance','information_schema')
into outfile '/tmp/bak.sh';


5. show

show databases;                               查看所有庫名
show tables;                                  查看當前庫下的表名 
show tables from world;                       查看world數(shù)據(jù)庫下所有表名
show create database;                         查看建庫語句
show create table;                            查看建表語句
show grants for root@'localhost'              查看用戶權(quán)限信息
show charset;                                 查看所有字符集
show collation                                查看校對規(guī)則
show  full processlist                        查看數(shù)據(jù)庫連接情況
show status                                   查看數(shù)據(jù)庫的整體狀態(tài)
show status like '%lock%'                     模糊查看數(shù)據(jù)庫的整體狀態(tài)
show variables                                查看數(shù)據(jù)庫所有變量情況
show variables like '%innodb%'                查看數(shù)據(jù)庫所有變量情況
show engines;                                 查看所有支持存儲引擎
show engines innodb status                    查看所有innodb存儲引擎狀態(tài)
show binary logs                              查看二進制日志情況
show binlog events in                         查看二進制日志事件
show relaylog events in                       查看relay日志事件
show slave status                             查看從庫狀態(tài)
show master status                            查看數(shù)據(jù)庫binlog位置信息
show index from world.city                    查看表的索引情況

6杭抠、索引

6.0、學(xué)習(xí)環(huán)境準備

mysqlslap --defaults-file=/etc/my.cnf \
--concurrency=100 --iterations=1 --create-schema='oldboy' \
--query="select * from oldboy.t100w where k2='pqde'" engine=innodb \
--number-of-queries=2000 -uroot -p123 -verbose


6.1恳啥、索引作用:

提供類似書中目錄的作用,優(yōu)化查詢

6.2丹诀、索引的種類(算法):

B樹索引
hash索引
R樹
Full test
GIS

6.3钝的、B樹基于不同的查找算法分類介紹

image.png
image.png
取下一層的最小值組成B樹結(jié)構(gòu)
葉子節(jié)點---------------->枝節(jié)點------------>根節(jié)點


B+tree是優(yōu)化范圍查詢的效率,必須是相鄰節(jié)點
B-tree
B*tree(現(xiàn)在使用)

三者統(tǒng)稱B樹索引

6.4铆遭、在功能上的分類*****

6.4.1硝桩、輔助索引(s)怎么構(gòu)建B樹結(jié)構(gòu)的?

(1)輔助索引基于表的列進行生成
(2)取出索引列的所有值(取出所有鍵值)
(3)進行所有鍵值的排序
(4)將所有的鍵值按順序落到BTree索引的葉子節(jié)點上
(5)進而生成枝節(jié)點和根節(jié)點
(6)葉子節(jié)點除了存儲鍵值外枚荣,還存儲了相鄰葉子節(jié)點的指針碗脊,另外還會保存原表數(shù)據(jù)的指針。

6.4.2橄妆、聚集索引(c)怎么構(gòu)建B樹結(jié)構(gòu)的衙伶?

規(guī)劃和存儲數(shù)據(jù)
(1)建表時設(shè)置主鍵列(ID)
(2)表中進行數(shù)據(jù)存儲祈坠,會按照ID列的順序,有序的存儲一行一行的數(shù)據(jù)到數(shù)據(jù)頁上(這個動作叫做聚集索引組織表)
(3)表中的數(shù)據(jù)頁被作為聚集索引的葉子節(jié)點
(4)把葉子節(jié)點的主鍵值生成上層的枝節(jié)點和根節(jié)點矢劲。

6.4.3赦拘、聚集索引和輔助索引構(gòu)成區(qū)別總結(jié)?

(1)聚集索引只能有一個芬沉,非空唯一躺同,一般是主鍵
(2)輔助索引可以有多個,是配合聚集索引使用
(3)聚集索引葉子節(jié)點就是磁盤的數(shù)據(jù)行存儲的數(shù)據(jù)頁(整行數(shù)據(jù))
(4)mysql是根據(jù)聚集索引組織存儲數(shù)據(jù)丸逸,存儲數(shù)據(jù)時就是按照聚集索引的順序進行存儲數(shù)據(jù)
輔助索引只會提取索引鍵值進行自動排序生成B樹結(jié)構(gòu)

6.5蹋艺、輔助索引細分

單列的輔助索引
聯(lián)合多列輔助索引(覆蓋索引)
唯一索引

6.6、關(guān)于索引樹的高度受什么影響黄刚?(解決方法僅限于大表)

高度最多3層或4層
(1)數(shù)據(jù)行捎谨,分表
(2)索引列字符長度,前綴索引
(3)char varchar(char比varchar高)隘击,表設(shè)計
(4)enum大大減少將來作為索引列的高度侍芝,優(yōu)化索引高度,能用則用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埋同,一起剝皮案震驚了整個濱河市州叠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凶赁,老刑警劉巖咧栗,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虱肄,居然都是意外死亡致板,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門咏窿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斟或,“玉大人,你說我怎么就攤上這事集嵌÷芗罚” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵根欧,是天一觀的道長怜珍。 經(jīng)常有香客問我,道長凤粗,這世上最難降的妖魔是什么酥泛? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上柔袁,老公的妹妹穿的比我還像新娘呆躲。我一直安慰自己,他們只是感情好瘦馍,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布歼秽。 她就那樣靜靜地躺著,像睡著了一般情组。 火紅的嫁衣襯著肌膚如雪燥筷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天院崇,我揣著相機與錄音肆氓,去河邊找鬼。 笑死底瓣,一個胖子當著我的面吹牛谢揪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捐凭,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拨扶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茁肠?” 一聲冷哼從身側(cè)響起患民,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垦梆,沒想到半個月后匹颤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡托猩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年印蓖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片京腥。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赦肃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出公浪,到底是詐尸還是另有隱情他宛,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布因悲,位于F島的核電站,受9級特大地震影響勺爱,放射性物質(zhì)發(fā)生泄漏晃琳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卫旱。 院中可真熱鬧人灼,春花似錦、人聲如沸顾翼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽适贸。三九已至灸芳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拜姿,已是汗流浹背烙样。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕊肥,地道東北人谒获。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像壁却,于是被迫代替她去往敵國和親批狱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容