最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL索引與視圖詳解

 更新時間:2025年12月01日 09:37:12   作者:霍理迪  
MySQL中的索引類似于書籍的目錄,用于提高數(shù)據(jù)查詢效率,視圖是一種虛擬表,可以提高數(shù)據(jù)的安全性,并簡化查詢語句,索引可以提高查詢效率,但會占用磁盤空間,視圖可以保障數(shù)據(jù)的安全性,隱藏底層列名,并提供邏輯數(shù)據(jù)獨立性,感興趣的朋友跟隨小編一起看看吧

在MySQL中,索引類似于書籍的目錄,如果想要快速訪問數(shù)據(jù)表中的特定信息,可以建立索引加快數(shù)據(jù)查詢效率。

使用數(shù)據(jù)庫時,不僅需要提高對數(shù)據(jù)的查詢效率,也需要考慮數(shù)據(jù)的安全問題。在MySQL中可以創(chuàng)建一種叫作視圖的虛擬表,讓使用視圖的用戶只能訪問被允許訪問的結(jié)果集,從而提高數(shù)據(jù)的安全性。除了安全性,視圖還具備簡化查詢語句和邏輯數(shù)據(jù)獨立性等優(yōu)點。

在數(shù)據(jù)庫查詢數(shù)據(jù)時,默認(rèn)是對全表的數(shù)據(jù)進(jìn)行掃描,在項目開發(fā)中,MySQL的一張表可能就有千萬條數(shù)據(jù),多張表組合甚至有上億條數(shù)據(jù)。這樣查詢一條數(shù)據(jù)的效率實在是太低了,因此我們引入了索引,索引是數(shù)據(jù)庫中為提高數(shù)據(jù)查詢效率而常用的數(shù)據(jù)庫對象,它好比新華字典的音序表,通過音序表可以快速地查找內(nèi)容。索引在數(shù)據(jù)表中一列或多列的值與記錄行之間按照一定的順序建立關(guān)系,以提高對數(shù)據(jù)表中數(shù)據(jù)的查詢速度。

索引按照實現(xiàn)語法的不同大致分為五種(可以放一起寫,這里每個字段分開展示)

1、主鍵索引

主鍵索引是一種特殊的唯一性索引,用于根據(jù)主鍵自身的唯一性標(biāo)識每一條記錄。主鍵索引的字段不允許有NULL值。

CREATE TABLE dept_index(
id INT
PRIMARY KEY (INT)
);

2、唯一性索引

創(chuàng)建唯一性索引的字段允許有NULL值,但需要保證索引對應(yīng)字段中的值是唯一的。

CREATE TABLE dept_index(
deptno INT
UNIQUE INDEX (deptno)-- INDEX和KEY可以互相替換
);

3、普通索引

普通索引是MySQL中的基本索引類型,使用KEY或INDEX定義,不需要添加任何限制條件

CREATE TABLE dept_index(
dname VARCHAR(50)
INDEX (dname));

4、全文索引

全文索引主要用于提高在數(shù)據(jù)量較大的字段中的查詢效率。全文索引和SQL中給的LIKE模糊查詢類似,不同的是LIKE模糊查詢適用于在內(nèi)容較少的文本中進(jìn)行模糊匹配,全文檢索更擅長在大量的文本中進(jìn)行數(shù)據(jù)檢索。全文索引只能創(chuàng)建在CHAR、VARCHAR或TEXT類型的字段上。

CREATE TABLE dept_index(
introduction VARCHAR(200)
FULLTEXT (introduction));

5、空間索引

空間索引只能創(chuàng)建在空間數(shù)據(jù)類型的字段上??臻g數(shù)據(jù)類型存儲的空間數(shù)據(jù)是指含有位置、大小、形狀以及自身分布特征等多方面信息的數(shù)據(jù)。MySQL中的空間數(shù)據(jù)類型有4種,分別是GEOMETRY、POINT、LINESTRING、POLYGON。

對于創(chuàng)建空間索引的字段,必須將其聲明為NOT NULL

CREATE TABLE dept_index(
address GEOMETRY NOT NULL SRID 4326
SPATIAL INDEX (address)
);

上述都屬于單列索引,還存在復(fù)合索引如下

CREATE TABLE index_multi(
id INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
score FLOAT,
INDEX multi(id,NAME)
);

可以在創(chuàng)建表之后建立索引

CREATE UNIQUE INDEX unique_id ON dept_index02(id);

也可以通過修改表的形式添加索引

ALTER TABLE dept_index03 ADD UNIQUE INDEX index_id(id);-- index_id是起的索引名 

查看添加的索引

SHOW INDEX FROM dept_index;

刪除索引(兩種方式任選)

1、ALTER TABLE dept_index DROP INDEX introduction;-- 想多刪就在introduction索引后面加

2、DROP INDEX dname ON dept_index;-- 刪除數(shù)據(jù)表dept_index中名稱為dname的索引

注意:雖然索引可以提高數(shù)據(jù)的查詢效率,但它會占用一定的磁盤空間,并且在創(chuàng)建和維護(hù)索引時,其消耗的時間是隨著數(shù)據(jù)量的增加而增加的。因此,使用索引時,應(yīng)該綜合考慮其優(yōu)點和缺點

視圖的作用及意義

在實際開發(fā)中,有時候為了保障數(shù)據(jù)的安全性和提高查詢效率,希望創(chuàng)建一個只包含指定字段數(shù)據(jù)的虛擬表給用戶使用,此時可以使用視圖。視圖在數(shù)據(jù)庫中的作用類似于窗戶,用戶通過這個窗戶只能看到指定的數(shù)據(jù)。視圖本身不存儲數(shù)據(jù),它只是一個保存下來的 SELECT 語句,每次查詢視圖時,數(shù)據(jù)庫會執(zhí)行這個 SELECT 語句,從底層表中取出數(shù)據(jù)。

特點有下面三個

簡化查詢語句:比如日常開發(fā)需要經(jīng)常使用一個比較復(fù)雜的語句進(jìn)行查詢,此時就可以將該查詢語句定義為視圖,從而避免大量重復(fù)且復(fù)雜的操作

安全性:可以從數(shù)據(jù)庫指定字段給別人看,防止敏感信息泄露。還可以改視圖列名,隱藏底層列名

邏輯數(shù)據(jù)獨立性 :數(shù)據(jù)表增加字段不會影響基于該數(shù)據(jù)表查詢出數(shù)據(jù)的視圖(不改視圖本身,視圖就不會變)

1、基于單表創(chuàng)建視圖

CREATE VIEW view_emp AS SELECT empno,ename,job,deptno FROM emp;

2、查看視圖

SELECT * FROM view_emp;

指定視圖中字段的名稱,并創(chuàng)建

CREATE VIEW view_emp2(e_empno,e_ename,e_job,e_deptno) AS SELECT empno,ename,job,deptno FROM emp; 

3、基于多表創(chuàng)建視圖

CREATE VIEW view_emp_dept
AS 
SELECT e.empno,e.ename,e.job,e.deptno,d.dname
FROM emp e
LEFT OUTER JOIN dept d
ON e.deptno=d.deptno-- 紅色部分和之前左外連接一樣

4、查看視圖的狀態(tài)信息

SHOW TABLE STSTUS LIKE '視圖名';-- Comment 值為VIEW說明是視圖,為空則不是
SHOW TABLE STSTUS LIKE'view_emp';

SHOW TABLE STATUS LIKE 'dept';

5、查看視圖的創(chuàng)建語句

SHOW CREATE VIEW view_emp;

6、DESCRIBE:查看視圖結(jié)構(gòu),可縮寫成DESC

DESC `view_emp_dept`;

7、修改視圖

方法一  CREATE OR REPLACE VIEW 視圖名 AS SELECT語句; 創(chuàng)建一個新的視圖覆蓋舊的視圖

CREATE OR REPLACE   VIEW -- 如果刪除OR REPLACE 就會報錯建過視圖了
view_emp_dept(e_empno,e_ename,e_job,e_deptno,e_mgr,d_dname)
AS 
SELECT e.empno,e.ename,e.job,e.deptno,e.mgr,d.dname FROM emp e
LEFT OUTER JOIN dept d
ON e.deptno=d.deptno

方法二  ALTER VIEW <視圖名> AS <SELECT 語句>;

ALTER VIEW view_emp_dept(e_empno,e_ename,e_job,e_deptno,e_mgr,e_sal,d_dname)
AS 
SELECT e.empno,e.ename,e.job,e.deptno,e.mgr,e.sal,d.dname FROM emp e
LEFT OUTER JOIN dept d
ON e.deptno=d.deptno-- 這塊select語句基本不動,改上面紅的視圖名

8、刪除視圖

DROP VIEW view_emp_dept;

9、修改數(shù)據(jù)
通過視圖修改數(shù)據(jù),最終修改的也是基本表中的數(shù)據(jù)

UPDATE view_dept SET v_dname='工程部' WHERE v_deptno=50;

10、 刪除數(shù)據(jù)
通過視圖刪除數(shù)據(jù),最終刪除的也是基本表中的數(shù)據(jù)

DELETE FROM view_dept WHERE  v_deptno=6;

到此這篇關(guān)于MySQL索引與視圖的文章就介紹到這了,更多相關(guān)mysql索引與視圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL?SELECT數(shù)據(jù)查看WHERE(AND?OR?IN?NOT)語句

    MySQL?SELECT數(shù)據(jù)查看WHERE(AND?OR?IN?NOT)語句

    這篇文章主要介紹了MySQL?SELECT數(shù)據(jù)查看WHERE(AND?OR?IN?NOT)de?語句學(xué)習(xí),非常適合新手小白朋友,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解

    MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解

    這篇文章主要介紹了MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解,CONCAT 函數(shù)用于將兩個字符串連接為一個字符串,本文通過實例代碼詳細(xì)講解,需要的朋友可以參考下
    2023-02-02
  • mysql 從一個表中查數(shù)據(jù)并插入另一個表實現(xiàn)方法

    mysql 從一個表中查數(shù)據(jù)并插入另一個表實現(xiàn)方法

    這篇文章主要介紹了mysql 從一個表中查數(shù)據(jù)并插入另一個表實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • mysql 5.7.17 免安裝版配置方法圖文教程(windows10)

    mysql 5.7.17 免安裝版配置方法圖文教程(windows10)

    這篇文章主要為大家詳細(xì)介紹了windows10下mysql 5.7.17 免安裝版配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL數(shù)據(jù)庫分庫分表的方案

    MySQL數(shù)據(jù)庫分庫分表的方案

    隨著項目不斷迭代,使用人數(shù)的不斷增加,數(shù)據(jù)庫中某些表數(shù)據(jù)正在逐步膨脹,往單表千萬迅速靠攏,,所以最近也在考慮做一下分庫分表,本文就給大家詳細(xì)講解了什么分庫分表和分庫分表的方案,需要的朋友可以參考下
    2023-11-11
  • MySQL中查詢字段為空或者為null的方法

    MySQL中查詢字段為空或者為null的方法

    這篇文章主要介紹了MySQL中查詢字段為空或者為null的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • mysql給id設(shè)置默認(rèn)值為UUID的實現(xiàn)方法

    mysql給id設(shè)置默認(rèn)值為UUID的實現(xiàn)方法

    由于mysql并不支持默認(rèn)值為函數(shù)類型,給id設(shè)值有兩種方式,本文主要介紹了mysql給id設(shè)置默認(rèn)值為UUID的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)詳解

    Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)詳解

    這篇文章主要介紹了Navicat for MySQL定時備份數(shù)據(jù)庫及數(shù)據(jù)恢復(fù)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MySQL之my.cnf配置文件圖文詳解

    MySQL之my.cnf配置文件圖文詳解

    my.cnf是mysql啟動時加載的配置文件,一般會放在mysql的安裝目錄中,用戶也可以放在其他目錄加載,下面這篇文章主要給大家介紹了關(guān)于MySQL之my.cnf配置文件的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Mysql8.0.22解壓版安裝教程(小白專用)

    Mysql8.0.22解壓版安裝教程(小白專用)

    這篇文章主要介紹了Mysql8.0.22解壓版安裝教程(小白專用),文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

聂荣县| 托克逊县| 武隆县| 建瓯市| 海晏县| 深泽县| 盐城市| 大兴区| 嫩江县| 景洪市| 丹江口市| 海安县| 郯城县| 长岭县| 邢台县| 青冈县| 桂林市| 永顺县| 阿合奇县| 昆明市| 凌源市| 池州市| 喀喇沁旗| 黄山市| 湄潭县| 突泉县| 玉山县| 洪雅县| 台东市| 巨鹿县| 乌海市| 佛坪县| 陕西省| 胶州市| 丰镇市| 九龙城区| 靖江市| 荃湾区| 利津县| 隆化县| 蒙山县|