[MySQL] 零基础学MySQL 08
本博客是【韓順平講MySQL】零基礎一周學會MySQL -sql mysql教程 mysql視頻 mysql入門視頻的學習筆記
文章目錄
- 自增長
- MySQL索引
- 索引機制
- 創建索引
- 刪除索引、查詢索引
- 創建索引的規則
自增長
一個問題:在某張表中,存在一個id列(整數),我們希望在添加記錄的時候,該列從1開始,自動地增長,該如何處理呢?
字段名 整形 primary key auto_increment添加自增長字段的方式
如果字段1是自增長的,給字段1賦值要寫null,或者不給字段1賦值。
#自增長 CREATE TABLE t24(id INT PRIMARY KEY AUTO_INCREMENT,email VARCHAR(32) NOT NULL DEFAULT '' ,`name` VARCHAR(32) NOT NULL DEFAULT '') DESC t24; #測試自增長的使用 INSERT INTO t24 (id,email,`name`) VALUES(NULL,'jack@qq.com','jack'); INSERT INTO t24 VALUES(NULL,'tom@qq.com','tom'); #如果不是自增長的話,下面這個語法是錯誤的 INSERT INTO t24 (email,`name`) VALUES('lhq@qq.com','lhq'); SELECT * FROM t24;
自增長使用細節:
5.如果添加數據時,給自增長字段(列)指定的有值,則以指定的值為準。如果指定了自增長,一般來說,就按照自增長的規則來添加數據
INSERT INTO t25 VALUES(666,'lhq@qq.com','lhq');
6.如果設置了自增長,刪除掉某條記錄后,自增長不會自動填補,會在刪除數據的id上加一
MySQL索引
說起提高數據庫性能,索引是最物美價廉的東西了。不用加內存,不用改程序,不用調sql,查詢速度就可能提高百倍千倍。
這里我們舉例說明索引的好處【構建海量表 有8000000條數】
我們已經提前準備好了一個數據庫和海量表。
#在沒有創建索引時,我們查詢一條記錄 SELECT * FROM empWHERE empno=1234567
在沒有創建索引前,emp.ibd文件大小是524,288KB
創建索引后,emp.ibd文件大小是655,360KB
得出結論,創建的索引本身也會占用磁盤空間。
這里聯想到“以空間換時間”的算法思想。
SELECT * FROM empWHERE empno=1234568
提升速度非常顯著!
我們在ename上沒有創建索引,那么查詢ename時依然很慢
#創建索引后,只對創建了索引的列有效 SELECT * FROM emp WHERE ename='axJxCT';索引機制
索引的原理
圖片來自【韓順平講MySQL】零基礎一周學會MySQL -sql mysql教程 mysql視頻 mysql入門
索引的代價
1.磁盤占用會變大
2.對update delete insert語句的效率會有影響
以刪除為例,刪除一條數據會導致整個索引數據結構的改變,需要重新更新調整數據結構,所以對速度會有影響。
在項目中,select操作比update、delete、insert多得多。
創建索引
索引的類型
普通索引?(index)
全文索引?(fulltext) [適用于MyISAM]
?一般開發不使用Mysql自帶的全文索引,而是使用全文搜索 Solr 和 ElasticSearch (ES)
刪除索引、查詢索引
#刪除索引 DROP INDEX id_index ON t26; SHOW INDEX FROM t26; #刪除主鍵索引 ALTER TABLE t26 DROP PRIMARY KEY;#修改索引就是先刪除,再添加新的索引#查詢索引 #1. SHOW INDEX FROM t26; #2. SHOW INDEXES FROM t26; #3. SHOW KEYS FROM t26; #4. DESC t26;練習:建立主鍵索引
要求:創建一張訂單表order(id,商品名,訂購人,數量)要求id號為主鍵,請使用兩種方式來創建主鍵。
練習:建立唯一索引
要求:創建一張特價菜譜表menu(id,菜譜名,廚師,點餐人身份證,價格)要求id號為主鍵,點餐人身份證是unique,請使用兩種方式來創建unique
練習:創建普通索引
要求:創建一張運動員表sportman(id,名字,特長)要求id號為主鍵,名字為普通索引。請使用三種方式來創建索引。
創建索引的規則
小結:在哪些列上適合使用索引
select * from emp where empno=1
例如:性別
select * from emp where logincount=1
總結
以上是生活随笔為你收集整理的[MySQL] 零基础学MySQL 08的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于VCS使用VPI+PLI/DPI在v
- 下一篇: ksweb调试php,KSWEB PHP