[MySQL] 零基础学MySQL 08
本博客是【韓順平講MySQL】零基礎(chǔ)一周學(xué)會(huì)MySQL -sql mysql教程 mysql視頻 mysql入門視頻的學(xué)習(xí)筆記
文章目錄
- 自增長
- MySQL索引
- 索引機(jī)制
- 創(chuàng)建索引
- 刪除索引、查詢索引
- 創(chuàng)建索引的規(guī)則
自增長
一個(gè)問題:在某張表中,存在一個(gè)id列(整數(shù)),我們希望在添加記錄的時(shí)候,該列從1開始,自動(dòng)地增長,該如何處理呢?
字段名 整形 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'); #如果不是自增長的話,下面這個(gè)語法是錯(cuò)誤的 INSERT INTO t24 (email,`name`) VALUES('lhq@qq.com','lhq'); SELECT * FROM t24;
自增長使用細(xì)節(jié):
5.如果添加數(shù)據(jù)時(shí),給自增長字段(列)指定的有值,則以指定的值為準(zhǔn)。如果指定了自增長,一般來說,就按照自增長的規(guī)則來添加數(shù)據(jù)
INSERT INTO t25 VALUES(666,'lhq@qq.com','lhq');
6.如果設(shè)置了自增長,刪除掉某條記錄后,自增長不會(huì)自動(dòng)填補(bǔ),會(huì)在刪除數(shù)據(jù)的id上加一
MySQL索引
說起提高數(shù)據(jù)庫性能,索引是最物美價(jià)廉的東西了。不用加內(nèi)存,不用改程序,不用調(diào)sql,查詢速度就可能提高百倍千倍。
這里我們舉例說明索引的好處【構(gòu)建海量表 有8000000條數(shù)】
我們已經(jīng)提前準(zhǔn)備好了一個(gè)數(shù)據(jù)庫和海量表。
#在沒有創(chuàng)建索引時(shí),我們查詢一條記錄 SELECT * FROM empWHERE empno=1234567
在沒有創(chuàng)建索引前,emp.ibd文件大小是524,288KB
創(chuàng)建索引后,emp.ibd文件大小是655,360KB
得出結(jié)論,創(chuàng)建的索引本身也會(huì)占用磁盤空間。
這里聯(lián)想到“以空間換時(shí)間”的算法思想。
SELECT * FROM empWHERE empno=1234568
提升速度非常顯著!
我們在ename上沒有創(chuàng)建索引,那么查詢ename時(shí)依然很慢
#創(chuàng)建索引后,只對創(chuàng)建了索引的列有效 SELECT * FROM emp WHERE ename='axJxCT';索引機(jī)制
索引的原理
圖片來自【韓順平講MySQL】零基礎(chǔ)一周學(xué)會(huì)MySQL -sql mysql教程 mysql視頻 mysql入門
索引的代價(jià)
1.磁盤占用會(huì)變大
2.對update delete insert語句的效率會(huì)有影響
以刪除為例,刪除一條數(shù)據(jù)會(huì)導(dǎo)致整個(gè)索引數(shù)據(jù)結(jié)構(gòu)的改變,需要重新更新調(diào)整數(shù)據(jù)結(jié)構(gòu),所以對速度會(huì)有影響。
在項(xiàng)目中,select操作比update、delete、insert多得多。
創(chuàng)建索引
索引的類型
普通索引?(index)
全文索引?(fulltext) [適用于MyISAM]
?一般開發(fā)不使用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;練習(xí):建立主鍵索引
要求:創(chuàng)建一張訂單表order(id,商品名,訂購人,數(shù)量)要求id號(hào)為主鍵,請使用兩種方式來創(chuàng)建主鍵。
練習(xí):建立唯一索引
要求:創(chuàng)建一張?zhí)貎r(jià)菜譜表menu(id,菜譜名,廚師,點(diǎn)餐人身份證,價(jià)格)要求id號(hào)為主鍵,點(diǎn)餐人身份證是unique,請使用兩種方式來創(chuàng)建unique
練習(xí):創(chuàng)建普通索引
要求:創(chuàng)建一張運(yùn)動(dòng)員表sportman(id,名字,特長)要求id號(hào)為主鍵,名字為普通索引。請使用三種方式來創(chuàng)建索引。
創(chuàng)建索引的規(guī)則
小結(jié):在哪些列上適合使用索引
select * from emp where empno=1
例如:性別
select * from emp where logincount=1
總結(jié)
以上是生活随笔為你收集整理的[MySQL] 零基础学MySQL 08的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于VCS使用VPI+PLI/DPI在v
- 下一篇: 移动公司岗位竞聘书