我把MySQL的内容整理成9篇部落格,學完這9篇部落格雖不能說能成為大神,但是應付一般中小企業的開發已經足夠了,有疑問或建議的歡迎留言讨論。
子查詢,從原有的查詢語句中 嵌入新的查詢 來得到我們想要的結果,也可稱為嵌套查詢。
1、查詢課程名為“Java”的學生資訊
2、用子查詢實作查詢出PHP 和 Java的學生
注意:
1、IN 的元素不能超過1000個。
2、in的效率會較低。有時候會用exists代替 in。
3、所有的關聯查詢都可以轉換為子查詢。但是并不是所有的子查詢都能轉化成關聯查詢。
把内層的查詢結果集作為臨時表 供外層sql再次查詢。
例:
将學号為J1609004 的class_id更新成PHP的class_id
資料庫索引:資料庫管理系統中的一個排序的資料結構,以協助快速查詢,更新資料庫表中的資料。簡單來說,建立了索引後會在資料庫裡面單獨一塊區域建立一個小空間,把資料排好序,這樣查找起來就快得多。
a.資料庫的存儲空間的占用
b.插入或修改資料的時候要花費較多的時間 - 重建立立索引
a.單表資料太少,索引反而會影響速度,資料較少的表不需要建立索引
b.資料較多的情況下, where 後的條件、order by 、group by等過濾時,後面的字段最好加上索引,根據實際情況,選擇primary key,unique index,索引不是越多越好。
c.聯合查詢,子查詢等多表操作時對關聯字段加索引。
文法:create index 索引名 on 表名(列名)
文法:create unique index 索引名 on 表名(列名)
文法:create index 索引名 on 表名(列名1,列名2.);
1、組合索引頁可以是唯一索引。
2、當查詢條件有組合查詢的第一個字段(s_name)的時候就一定會用該索引去查詢,無論where後面的查詢條件的順是怎樣的,無論有沒有其他查詢條件。
1、在上例中,如果不存在索引,查找時将會掃描全表的s_name字段。
2、在一張表中可以建立多個是以,但是是以不是越多越好。
3、唯一索引的意思是這個字段的每個值都不一樣,可以根據索引值唯一确定一條資料,而其他索引不能根據索引值确定唯一的資料。
修改文法:alter index 索引名 (生産系統不建議使用索引的修改,資料庫執行時無法進行查詢操作)
删除文法:drop index 索引名 on 表名
1.越小的資料類型越好。
2.簡單的資料類型越好,給日期做索引的 使用datetime 。
3.盡量避免使用NULL,指定列為 not null 有空值的列很難進行查詢優化。可以使用0或者一個特殊的值或者空字元串來代替。
優點:加快查詢速度
缺點:降低增 改 删的速度,增大了表的檔案大小