日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java数据库篇8——索引、视图、存储过程、触发器

發布時間:2025/3/12 java 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java数据库篇8——索引、视图、存储过程、触发器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java數據庫篇8——索引、視圖、存儲過程、觸發器

1、索引

1.1、索引是什么

在數據庫表中,對字段建立索引可以大大提高查詢速度。通過善用這些索引,可以令MySQL的查詢和 運行更加高效

如果合理的設計且使用索引的MySQL是一輛蘭博基尼的話,那么沒有設計和使用索引的MySQL就是 一個人力三輪車。拿漢語字典的目錄頁(索引)打比方,我們可以按拼音、筆畫、偏旁部首等排序的目 錄(索引)快速查找到需要的字

1.2、索引分類

索引名稱說明
主鍵索引 (primary key)主鍵是一種唯一性索引,每個表只能有一個主鍵, 用于標識數據表中的每一 條記錄
唯一索引 (unique)唯一索引指的是 索引列的所有值都只能出現一次, 必須唯一
普通索引 (index)最常見的索引,作用就是 加快對數據的訪問速度

1.3、主鍵索引

特點: 主鍵是一種唯一性索引,每個表只能有一個主鍵,用于標識數據表中的某一條記錄

一個表可以沒有主鍵,但最多只能有一個主鍵,并且主鍵值不能包含NULL

#建表時創建索引 CREATE TABLE 表名(-- 添加主鍵 (主鍵是唯一性索引,不能為null,不能重復,)字段名 類型 PRIMARY KEY, ); #建表后添加索引 ALTER TABLE 表名 ADD PRIMARY KEY ( 列名 )

1.4、唯一索引

特點: 索引列的所有值都只能出現一次, 必須唯一

唯一索引可以保證數據記錄的唯一性。事實上,在許多場合,人們創建唯一索引的目的往往不是為了 提高訪問速度,而只是為了避免數據出現重復

#建表時創建索引 CREATE TABLE 表名(列名 類型(長度),-- 添加唯一索引UNIQUE [索引名稱] (列名) ); #建表后添加索引 create unique index 索引名 on 表名(列名(長度)) ALTER TABLE 表名 ADD UNIQUE ( 列名 )

1.5、普通索引

#建表后添加索引 create index 索引名 on 表名(列名[長度]) ALTER TABLE 表名 ADD INDEX 索引名 (列名)

1.6、刪除索引

ALTER TABLE table_name DROP INDEX index_name;

1.7、索引的優缺點

添加索引首先應考慮在 where 及 order by 涉及的列上建立索引

索引的優點

  • 大大的提高查詢速度
  • 可以顯著的減少查詢中分組和排序的時間

索引的缺點

  • 創建索引和維護索引需要時間,而且數據量越大時間越長
  • 當對表中的數據進行增加,修改,刪除的時候,索引也要同時進行維護,降低了數據的維護速度

2、視圖

  • 視圖是一種虛擬表
  • 視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基表
  • 向視圖提供數據內容的語句為 SELECT 語句, 可以將視圖理解為存儲起來的 SELECT 語句
  • 視圖向用戶提供基表數據的另一種表現形式
  • 就當成一個表用就可以
  • 相當于一個只讀的表

2.1、視圖的作用

權限控制:比如,某幾個列可以運行用戶查詢,其他列不允許,可以開通視圖 查詢特定的列, 起到權限控制的作用

簡化復雜的多表查詢:視圖本身就是一條查詢SQL,我們可以將一次復雜的查詢 構建成一張視圖, 用戶只要查詢視圖 就可以獲取想要得到的信息(不需要再編寫復雜的SQL) 視圖主要就是為了簡化多表的查詢

2.2、視圖的創建

create view 視圖名 [column_list] as select語句; #view: 表示視圖 #column_list: 可選參數,表示屬性清單,指定視圖中各個屬性的名稱,默認情況下,與SELECT語句中查詢的屬性相同 #as : 表示視圖要執行的操作 #select語句: 向視圖提供數據內容

2.3、視圖的使用

就當成一個只讀表用就可以

3、存儲過程

存儲過程(Stored Procedure)是一種在數據庫中存儲復雜程序,以便外部程序調用的一種數據 庫對象。存儲過程是為了完成特定功能的SQL語句集,經編譯創建并保存在數據庫中,用戶可通過 指定存儲過程的名字并給定參數(需要時)來調用執行

優點

  • 存儲過程一旦調試完成后,就可以穩定運行,(前提是,業務需求要相對穩定,沒有變化)
  • 存儲過程減少業務系統與數據庫的交互,降低耦合,數據庫交互更加快捷(應用服務器,與 數據庫服務器不在同一個地區)

缺點

  • 在互聯網行業中,大量使用MySQL,MySQL的存儲過程與Oracle的相比較弱,所以較少使用,并且互聯網行業需求變化較快也是原因之一
  • 盡量在簡單的邏輯中使用,存儲過程移植十分困難,數據庫集群環境,保證各個庫之間存儲 過程變更一致也十分困難
  • 阿里的代碼規范里也提出了禁止使用存儲過程,存儲過程維護起來的確麻煩

3.1、存儲過程格式

DELIMITER $$ -- 聲明語句結束符,可以自定義 一般使用$$ CREATE PROCEDURE 過程名稱() -- 聲明存儲過程 BEGIN -- 開始編寫存儲過程 -- 要執行的操作 END $$ -- 存儲過程結束 DELIMITER $$ CREATE PROCEDURE goods_proc02(IN goods_id INT) BEGIN DELETE FROM goods WHERE gid = goods_id ; END $$ DELIMITER $$ CREATE PROCEDURE orders_proc(IN o_oid INT , IN o_gid INT ,IN o_price INT, OUT out_num INT) BEGIN -- 執行插入操作 INSERT INTO orders VALUES(o_oid,o_gid,o_price); -- 設置 num的值為 1 SET @out_num = 1; -- 返回 out_num的值 SELECT @out_num; END $$

4、觸發器

觸發器(trigger)是MySQL提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事 件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對 一個表進行操作(insert,delete, update)時就會激活它執行

4.1、觸發器格式

delimiter $ -- 將Mysql的結束符號從 ; 改為 $,避免執行出現錯誤 CREATE TRIGGER Trigger_Name -- 觸發器名,在一個數據庫中觸發器名是唯一的 before/afterinsert/update/delete-- 觸發的時機 和 監視的事件 on table_Name -- 觸發器所在的表 for each row -- 固定寫法 叫做行觸發器, 每一行受影響,觸發事件都執行 begin -- begin和end之間寫觸發事件 end $ -- 結束標記

總結

以上是生活随笔為你收集整理的Java数据库篇8——索引、视图、存储过程、触发器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。