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 --顯示某一個存儲過程的詳細信息mysql
一下午研究了兩個內容:觸發器與過程.sql
觸發器是在執行某種操做(插入,更新,刪除)時(前,後)進行的操做. 這個功能徹底能夠由C語言實現,並且更簡單. mysql中觸發器的使用還要涉及到變量之類的,不如用C實現起來簡單,因此這裏就不介紹了.數據庫
過程(procedure)至關於C語言中的子函數:服務器
1,建立:app
create procedure procedure_name() select * from table_name;函數
2,調用:測試
call procedure_name;fetch
3,查看:spa
查看過程的內容有三種方法:
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_recordend repeat;//此處必須有分號close cursor_total;set no_more_record=0;end