資料庫儲存工程

2021-09-02 05:17:10 字數 3913 閱讀 1995

1.1、delimiter

在mysql資料庫環境下,修改 delimiter 可以參照以下方式:

mysq >  delimiter $

mysql > select now() from dual ;

-> select current_timestamp from dual ;

-> $

+---------------------+

| now() |

+---------------------+

| 2018-11-29 14:23:16 |

+---------------------+

1 row in set (0.00 sec)

+---------------------+

| current_timestamp |

+---------------------+

| 2018-11-29 14:23:16 |

+---------------------+

1 row in set (0.00 sec)

1.2、變數

使用 set 指令顯式宣告變數並賦值

mysql>  set  @變數名 = 取值 ;
比如:

mysql> set  @name = '穆桂英' ;
查詢變數的值

mysql> select @變數名 from dual ;
比如

mysql> select  @name from dual ;
在 mysql 中 , @ 開頭的是使用者自定義變數,首次在函式或過程中使用時即宣告

呼叫函式或過程時即宣告變數:

mysql> call count_human_male( @male_count ) ;

通過 select 可以查詢該變數的值:

mysql> select @male_count from dual ;

比如 事務隔離級別: @@tx_isolation

查詢系統變數,獲取當前事務的隔離級別

mysql> select @@tx_isolation from dual ;

修改當前會話的事務隔離級別 ( 讀未已提交 )

mysql> set session tx_isolation = 'read-uncommitted';

修改當前會話的事務隔離級別 ( 讀已提交 )

mysql> set session tx_isolation = 'read-committed';

修改當前會話的事務隔離級別 ( 可重複讀 )

mysql> set session tx_isolation = 'repeatable-read';

修改當前會話的事務隔離級別 ( 序列化 )

mysql> set session tx_isolation = 'serializable';

比如 事務提交方式: @@autocommit

查詢系統變數,獲取當前事務提交方式

mysql> select @@autocommit from dual ;

1 表示 自動提交 ( 每執行一條 dml 語句就提交一次事務 )

0 表示 手動提交 ( 需要通過 commit 來提交事務 或 通過 rollback 回滾事務 )

設定事務提交方式

mysql> set autocommit = false ; -- 不要再自動提交

mysql> set autocommit = true ; -- 自動提交 (預設值)

資料庫中的過程( procedure ) ,就是儲存過程( stored procedure )。

2.1、建立過程

建立過程的語法:

create procedure 過程名稱 (  引數型別   名稱   資料型別  [ ,  引數型別   名稱   資料型別 ] ) 

begin

-- 在 begin 和 end 之間書寫 過程要完成的操作

end

其中:

2.2、 引數型別

create procedure remove_human( in hid int(10) )

begin

delete from t_humans where id = hid ;

end;

呼叫過程

mysql> call remove_human( 12 ) ;
定義帶有傳出引數的過程:

create procedure count_human_male ( out mcount int )

begin

select count(*) into mcount from t_humans where gender = '男' ;

end ;

呼叫帶有傳出引數的 過程:

mysql> call 過程名稱( @使用者變數 )
比如呼叫 count_human_male 過程,並向其傳遞引數( 這裡的 @male_count 為使用者自定義變數 )

mysql>  call  count_human_male( @male_count ) ;
通過查詢 @male_count 變數來獲取 過程 傳出的數值

mysql>  select @male_count from dual ;
create procedure get_name( in hid int(5) , inout x  varchar(50) )

begin

select name into x from t_humans where id = hid and married = x ;

end;

呼叫過程:

mysql> set @suibian = 'n' ;

mysql> call get_name( 1 , @suibian );

mysql> select @suibian from dual ;

2.3、檢視過程

查詢方式為:

select name from mysql.proc where db = '資料庫名' and type = 'procedure' ;
其中:

mysql 為 資料庫名稱 ( 這個資料庫由 mysql 來維護 )

proc 為 mysql 資料庫 中的表

name 、db 、 type 都是 proc 表中的列

比如查詢 ycpower 資料庫中的所有過程,可以使用:

mysql> select name from mysql.proc where type='procedure' and db='ycpower' ;
mysql> show create procedure 過程名稱 ;
比如:

mysql> show create procedure count_human_male ;
mysql> show procedure status ;
2.4、刪除過程
mysql> drop procedure 過程名稱 ;
資料庫中的函式( function ) ,也被某些人稱作 儲存函式( stored function )。

資料庫儲存

sqlite資料庫儲存 android 系統竟然是內建了資料庫的,sqlite 是散輕量級的關係型資料庫,它的運算速度非常快,古用資源很少,通常只需要幾百kb的記憶體就足夠了,因而特別適合在移動裝置上用。sqlite不僅支援標準的sol語法,還遵循了資料庫acid事務,所以只要你以前使用過其他的關係...

資料庫儲存優化

一 資料庫設計過程中的優化 資料庫設計過程中的優化,指的是索引優化及欄位設計的優化等。mysql的索引優化尤為重要,合理地進行索引優化,可以大大提高資料庫效能,避免資料庫瓶頸。在進行資料庫設計時,應該盡量把資料庫設計得佔磁碟空間更小。資料庫設計過程中的一些優化技巧如下 盡可能使用更小的整數型別 me...

android 資料庫儲存

專案開發我們都逃不過資料庫的儲存。在android 中 sqlite 是最好不過的資料儲存方式,但是有時候我們只需要某個變數的值。這樣要用sqlite就顯得得不償失了。這時候 sharedpreferences 是個不錯的選擇。sharedpreferences是一種輕型的資料儲存方式,它的本質是基...