標籤:
a. show tables或show tables from database_name; -- 顯示當前資料庫中所有表的名稱
b. show databases; -- 顯示mysql中所有資料庫的名稱
c. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 顯示表中列名稱
d. show grants for user_name; -- 顯示一個使用者的許可權,顯示結果類似於grant 命令
e. show index from table_name; -- 顯示表的索引
f. show status; -- 顯示一些系統特定資源的資訊,例如,正在啟動並執行線程數量
g. show variables; -- 顯示系統變數的名稱和值
h. show processlist; -- 顯示系統中正在啟動並執行所有進程,也就是當前正在執行的查詢。大多數使用者可以查看他們自己的進程,但是如果他們擁有process許可權,就可以查看所有人的進程,包括密碼。
i. show table status; -- 顯示當前使用或者指定的database中的每個表的資訊。資訊包括表類型和表的最新更新時間
j. show privileges; -- 顯示伺服器所支援的不同許可權
k. show create database database_name; -- 顯示create database 語句是否能夠建立指定的資料庫
l. show create table table_name; -- 顯示create database 語句是否能夠建立指定的資料庫
m. show engies; -- 顯示安裝以後可用的儲存引擎和預設引擎。
n. show innodb status; -- 顯示innoDB儲存引擎的狀態
o. show logs; -- 顯示BDB儲存引擎的日誌
p. show warnings; -- 顯示最後一個執行的語句所產生的錯誤、警告和通知
q. show errors; -- 只顯示最後一個執行語句所產生的錯誤
r. show [storage] engines; --顯示安裝後的可用儲存引擎和預設引擎
s. show procedure status --顯示資料庫中所有儲存的預存程序基本資料,包括所屬資料庫,儲存過
程名稱,建立時間等
t. show create procedure sp_name --顯示某一個預存程序的詳細資料
一下午研究了兩個內容:觸發器與過程.
觸發器是在執行某種操作(插入,更新,刪除)時(前,後)進行的操作. 這個功能完全可以由C語言實現,而且更簡單. mysql中觸發器的使用還要涉及到變數之類的,不如用C實現起來簡單,所以這裡就不介紹了.
過程(procedure)相當於C語言中的子函數:
1,建立:
create procedure procedure_name() select * from table_name;
2,調用:
call procedure_name;
3,查看:
查看過程的內容有三種方法:
1,show create procedure procedure_name;
2,show procedure status like ‘procedure_name‘
3,select * from mysql.proc where name=‘procedure_name‘
4,刪除:
drop procedure procedure_name;
一些預存程序以及函數的例子
delimiter |
定義procedure
create procedure p2_test1 (OUT para1 int)
begin
select sum(val) into para1 from test1;
end
|
調用procedure
call p2_test1(@sum)|
select @sum|
alter procedure沒有研究出來
定義函數
create function f_test1(name char(20)) returns char(20) //參數沒有IN,OUT,都是IN
begin
return concat(‘Hello ‘,name,‘ !‘);
end
|
調用函數
select f_test1(‘hongjian‘)|
三種不同的show的用法
show procedure status
show function status
show triggers //注意,沒有status
文法:
CREATE PROCEDURE sp_name ([IN |OUT |INOUT] param type,...)
begin
routine_body
end
CREATE FUNCTION sp_name (para,...) RETURNS type
begin
routing_body
end
mysql5支援的預存程序語句
聲明 描述 CREATE PROCEDURE 建立一個存放在MySQL資料庫的表格的預存程序。
REATE FUNCTION 建立一個使用者自訂的函數,尤其是返回資料的預存程序。
ALTER PROCEDURE 更改用CREATE PROCEDURE 建立的預先指定的預存程序,其不會影響相關預存程序或儲存功能。.
ALTER FUNCTION 更改用CREATE FUNCTION 建立的預先指定的預存程序,其不會影響相關預存程序或儲存功能。.
DROP PROCEDURE 從MySQL的表格中刪除一個或多個預存程序。
DROP FUNCTION 從MySQL的表格中刪除一個或多個儲存函數。
SHOW CREATE PROCEDURE 返回使用CREATE PROCEDURE 建立的預先指定的預存程序的文本。這一聲明是SQL:2003規範的一個MySQL擴充。
SHOW CREATE FUNCTION 返回使用CREATE FUNCTION建立的預先指定的預存程序的文本。這一聲明是SQL:2003規範的一個MySQL擴充。
SHOW PROCEDURE STATUS 返回一個預先指定的預存程序的特性,包括名稱、類型、建立者、建立日期、以及更改日期。這一聲明是SQL:2003規範的一個MySQL擴充。
SHOW FUNCTION STATUS 返回一個預先指定的儲存函數的特性,包括名稱、類型、建立者、建立日期、以及更改日期。這一聲明是SQL:2003規範的一個MySQL擴充。
CALL 調用一個使用CREATE PROCEDURE建立的預先指定的預存程序。
BEGIN ... END 包含一組執行的多聲明。
DECLARE 用於指定當地變數、環境、處理器,以及指標。
SET 用於更改當地和全域伺服器變數的值。
SELECT ... INTO 用於儲存顯示變數的縱列。
OPEN 用於開啟一個指標。
FETCH 使用特定指標來獲得下一列。
CLOSE 用於關閉和開啟指標。
IF 一個An if-then-else-end if 聲明。
CASE ... WHEN 一個 case聲明的結構
LOOP 一個簡單的迴圈結構;可以使用LE***E 語句來退出。
LE***E 用於退出IF,CASE,LOOP,REPEAT以及WHILE 語句。
ITERATE 用於重新開始迴圈。
REPEAT 在結束時測試的迴圈。
WHILE 在開始時測試的迴圈。
RETURNS 返回一個預存程序的值
建一個預存程序
create procedure p1(appid varchar(50))
begin
select APPNAME from APPINFO where ID=appid;
end
在mysq1中不支援create or replace procedure p1()
刪除預存程序
drop procedure p1;
若要查看當前資料庫中所有已存在的預存程序,則輸入:show procedure status;
若要查看某一個預存程序,則輸入:show create procedure proc_name;
//使用遊標
create procedure p3()
begin
//可以把相同類型的變數放在一起聲明
declare sum,t,no_more_record Integer;
DECLARE cursor_total CURSOR FOR select Total from PNUMBER;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_record=1;//此處必須先聲明no_more_record
//必須把所有變數都聲明完後,才能給變數賦值
set sum=0,t=0,no_more_record=0;//可以在同一行給多個變數賦值
open cursor_total;
repeat
fetch cursor_total into t;//mysql在取下一條記錄時,若為空白,則將no_more_record賦為1,但其記錄還是最後一條記錄
if(no_more_record!=1) then
set sum=sum+t;
end if;
until no_more_record
end repeat;//此處必須有分號
close cursor_total;
set no_more_record=0;
end
mysql show命令集合