關於SQL 儲存過程入門基礎 基礎知識

2022-09-24 20:30:17 字數 2811 閱讀 2095

大學裡面對儲存過程沒有講到什麼,工作了一段時間,對儲存過程還是沒有用到,根本不需要去寫儲存過程,可能是做的軟體方向的原因吧。為了以後發展,決定從零開始學習下。

這裡看看儲存過程的定義,

儲存過程(stored procedure),是一組為了完成特定功能的sql 語句,集經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出參www.cppcns.com數,如果該儲存過程帶有引數來執行。

在sql server 的系列版本中,儲存過程分為兩類:系統提供的儲存過程和使用者自定義儲存過程。

系統sp,主要儲存master 資料庫中,並以sp_為字首並且系統儲存過程主要是從系統表中獲取資訊,從而為系統管理員管理sql server。

常用系統儲存過程有:

複製** **如下:

exec sp_databases; --檢視資料庫

exec sp_tables;        --檢視表

exec sp_columns student;--檢視列

exec sp_helpindex student;--檢視索引

exec sp_helpconstraint student;--約束

exec sp_stored_procedures;

exec sp_helptext 'sp_stored_procedures';--檢視儲存過程建立、定義語句

exec sp_rename student, stuinfo;--修改表、索引、列的名稱

exec sp_renamedb mytempdb, mydb;--更改資料庫名稱

exec sp_defaultdb 'master', 'mydb';--更改登入名的預設資料庫

exec sp_helpdb;--資料庫幫助,查詢資料庫資訊

exec sp_helpdb master;

使用者自定義儲存過程是由使用者建立,並能完成某一特定功能,如:查詢使用者所需資料資訊的儲存過程。

這裡我們看看儲存過程的好處;

(1)重複使用。儲存過程可以重複使用,從而可以減少資料庫開發人員的工作量。

(2)提高效能。儲存過程在建立的時候就進行了編譯,將來使用的時候不用再重新編譯。一般的sql語句每執行一次就需要編譯一次,所以使用儲存過程提高了效率。

(3)減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。

(4)安全性。引數化的儲存過程可以防止sql注入式的攻擊,而且可以將grant、deny以及revoke許可權應用於儲存過程。

好了,我們來看看建立的基本語法

複製** **如下:

定義儲存過程的語法

create  proc[edure]  儲存過程名

@引數1  資料型別 = 預設值,

&www.cppcns.comnbsp;       …… ,

@引數n  資料型別 output

assql語句

go,引數是可選的

,引數分為輸入引數、輸出引數

,輸入引數允許有預設值

這裡來建立乙個簡單的儲存過程

create procedure userlogin

@name varchar(20),

@password varchar(20)

as-- 定義乙個臨時用來儲存密碼的變數

--declare @strpwd nvarchar(20) 這裡先不介紹變數。稍後的文章會詳細講到

begin

select * from userinfo where username=@name anwww.cppcns.comd userpass=@password

endgo

首先我們用簡單的sql查詢

select * from userinfo where username='admin'

查詢結果:

username  userpass

admin      admin

現在我們來執行我們的儲存過程

exec userlogin admin,admin

--或這樣呼叫:

exec userlogin @name='admin',@password='admin'

查詢結果:

username  userpass

admin      admin

注意,在sql server中,所有使用者定義的變數都以「@」開頭,output關鍵字表示這個引數是用來輸出的,as之後就是儲存過程內容了。只要將以上**在「查詢分析器」裡執行一次,sql server就會在當前資料庫中建立乙個名為「userlogin」的儲存過程。你可以開啟「企業管理器」,選擇當前操作的資料庫,然後在左邊的樹型列表中選擇"可程式設計性->儲存過程",此時就可以在右邊的列表中看到你剛剛建立的儲存過程了(如果沒有,重新整理一下即可)。

看到了在資料中呼叫儲存過程的方法有兩種(這裡exec與execute等效);

exec  過程名  引數值1,引數值2,....

或者  exec 引數1=引數值1,引數2=引數值2....

上面我們也看到了。

如果要刪除乙個儲存過程,用drop

像這樣複製** **如下:

drop procedure userlogin

建立這樣的儲存過程有什麼用呢,不是只能在資料中檢視賽。

我們在做web或者winform 程式,假設需要個登入,好,我們可以呼叫用這個儲存過程來登入,根據傳入的引數,如果查詢出來有記錄,那麼這條記錄在資料庫中存在,表示登入成功,否則失敗。

這樣做的目的更加安全,可以防止sql注入。

本文標題: 關於sql 儲存過程入門基礎(基礎知識)

本文位址: /shujuku/mssql/93617.html

SQL基礎 儲存過程

儲存過程 stored procedure 是一種儲存在資料庫中的批處理,它由一組完成特定功能的sql語句集組成,具有輸入引數,輸出引數以及返回值。資料庫表 查詢學生表並按姓名排序 go create procedure getorderedstudents asselect from studen...

SQL基礎之儲存過程

網上有個比較通俗易懂的理解 儲存過程就是預先定義好的sql語句,然後儲存起來,等你用的時候再把自己所需要的匹配的sql語句用execute 即exec 呼叫就行!使用儲存過程的優勢 1.效能高 一條sql語句可以被多個地方使用,這樣進行複雜的操作時 比如多張表連表查詢 可將那些複雜的操作用儲存過程先...

sql基礎之四 儲存過程

網上有個比較通俗易懂的理解 儲存過程就是預先定義好的 sql語句,然後儲存起來,等你用的時候再把自己所需要的匹配的sql語句用execute 即exec 呼叫就行!使用儲存過程的優勢 1.效能高 一條sql語句可以被多個地方使用,這樣進行複雜的操作時 比如多張表連表查詢 可將那些複雜的操作用儲存過程...