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是一種輕型的資料儲存方式,它的本質是基...