1. 程式人生 > >SQL資料庫 儲存過程、索引、檢視與臨時表

SQL資料庫 儲存過程、索引、檢視與臨時表

--資料庫程式設計2.


--儲存過程  exec
  --執行速度快:儲存過程是編譯之後的語句,儲存在資料庫的內容;儲存過程的操作只有一次。

--系統儲存過程 存放在master資料庫中,都以“sp_”或“xp_”開頭

exec sp_databases
exec sp_renamedb 'studentmanager','sm'--修改資料庫的名稱
exec sp_columns a--查看錶a 列的資訊
use sm
exec sp_tablestable_stu8
--使用者自定義儲存過程
--無引數的定義儲存過程
--僅有輸入引數的儲存過程
create proc proc_add
@num1 int, --不加output 說明是輸入函式
@num2 int
as
declare @num int 
set @
[email protected]
[email protected]
print @sum
go


exec proc_add 6,2


 if exists(select *from sysobjects where name='proc_score2')
drop proc_score2
go


create proc proc_score2
as


declare @avgWritten float
declare @avgLab float
select @avgWritten=avg(writtenExam) from stuMarks
select @avgLab=avg(labExam) from stuMarks
print '筆試平均分:'+convert(varchar(20),@avgWritten)
print '機試平均分:'+convert(varchar(20),@avgLab)
if @avgWritten>=70 and @avgLab>=70
begin
print '成績情況:優秀'
end
else
begin
print '成績情況:不優秀'
end
select *from stuMarks where writtenExam<60 or labExam<60

go


  --呼叫儲存過程
exec proc_score2
  --可以指定預設值
select *from sysobjects
drop proc proc_score2


--既有輸入引數又有輸出引數
create proc proc_score3
@www float=60,
@qqq float=60,
@num int output,
@score float output
as


declare @avgWritten float
declare @avgLab float
select @avgWritten=avg(writtenExam) from stuMarks
select @avgLab=avg(labExam) from stuMarks
print '筆試平均分:'+convert(varchar(20),@avgWritten)
print '機試平均分:'+convert(varchar(20),@avgLab)
if @avgWritten>=70 and @avgLab>=70
begin
print '成績情況:優秀'
end
else
begin
print '成績情況:不優秀'
end
select *from stuMarks where writtenExam<@www or labExam<@qqq

select @num=count(*) from stuMarkswhere writtenExam<@www or labExam<@qqq
select @score=count(*) from stuMarkswhere writtenExam<@www or labExam<@qqq
go
--呼叫
declare @peoplenum int
declare @pscore int
exec proc_score3 60,60,@peoplenum output,@pscore output 
print @peoplenum
---------------------案例
--0901班/0902班/0903班 寫一個儲存過程  擷取資料
create proc proc_split
@str varchar(100),
@head varchar(20) output,
@tail varchar(100) output
as
--查詢/的位置
declare @position int 
set @position=charindex('/',@str)
if @position=0
begin
--說明傳入的只有一個班級
set @
[email protected]

set @tail=null
end
else
begin
--說明至少有兩個班級
set @head=substring(@str,1,@position-1)
set @tail=substring(@str,@position+1,len(@str)[email protected])
end
go
--呼叫
declare @head varchar(20)
declare @tail varchar(100)
exec proc_split '0901班/0902班/0903班',@head output,@tail output
print @head
print @tail


declare @head2 varchar(20)
declare @tail2 varchar(100)
declare @str1 varchar(100)
set @str1= '0901班/0902班/0903班/01班/02班/03班'
while @str1 is not null 
begin
exec proc_split @str1,@head2 output,@tail2 output
print @head2
set @
[email protected]

end



--檢視只能針對於查詢語句來寫  試圖在做查詢跟表是一樣的 檢視是一張虛表 並不儲存資料 資料來自於真實的表
-- 不能做增刪改  只能做查詢
use sm
create view view_show--建立檢視
as
select *from table_student
go
--使用
select *from view_show

--臨時表一旦關閉 則不存在斷開資料庫連線時,臨時表自動刪除
create table #aa
(
id int primary key,
name varchar(20) not null
)




--索引   可以提高查詢速度  但是減慢了增刪的速度   類似於書籍中的目錄 

--唯一索引
--主鍵索引
--聚集索引
--非聚集索引
  --加索引的原則
1.建立索引依據 (非聚集索引)
where age>15    order by createtime desc
2.建立聚集索引(只能有一個),一般選取唯一的額列,列的大小長度儘量小





   --建立索引
  create clustered index index_lname 
on A(lname) --在表A的lname列上建立索引


--使用索引
  select *from A with(index=index_lname)
where lname='sasas'

相關推薦

SQL資料庫 儲存過程索引檢視臨時

--資料庫程式設計2. --儲存過程  exec  --執行速度快:儲存過程是編譯之後的語句,儲存在資料庫的內容;儲存過程的操作只有一次。--系統儲存過程 存放在master資料庫中,都以“sp_”或“xp_”開頭 exec sp_databasesexec sp_r

資料庫-儲存過程(概念優缺點分類)

(1)概念:     ① 儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集。經編譯後儲存在資料庫 中。     ② 儲存過程是資料庫中的一個重要物件,使用者通過指定儲存

Sql資料庫儲存過程傳值(傳遞資料名,列名),sp_executesql函式的使用

遇到的專案需求是:對幾個不同的資料表和相應的欄位進行類似的操作,表的名稱和相關的列名可以作為儲存過程的引數傳遞,這樣可以使用遊標遍歷不同表格的不同的列,再使用相同函式求出返回值進行統一的處理。由於專案中表的資料龐大,關係複雜,此處做簡化處理,描述大致意思。(此處的資料庫是SQ

MySQL中Updateselect聯用操作單,及檢視臨時的區別

一、MySQL中使用從表A中取出資料來更新表B的內容 例如:要update表data中的一些列屬性,但是修改屬性的內容來源是來自表chanpin。SQL語言中不要顯示的出現select關鍵字 update data d,chanpin c set d.zhulei=c.z

sql語句使用內嵌檢視臨時示例

某些時候,查詢需要將資料與其他一些可能只能通過執行 GROUP BY 然後執行標準查詢才能收集的資料進行聯接。例如,如果要查詢最新五個定單的有關資訊,您首先需要知道是哪些定單。這可以使用返回定單 ID 的 SQL 查詢來檢索。此資料就會儲存在臨時表(這是一個常用技術)中,然後

oracle查詢資料庫儲存過程索引檢視等的數量

select count(1) from user_objects where object_type = 'PROCEDURE' select count(1) from user_objects where object_type = 'INDEX' select co

檢視索引儲存過程簡述優缺點

1.檢視 (1).什麼是檢視? 檢視(View)作為一種資料庫物件,為使用者提供了一個可以檢索資料表中的資料方式。使用者通過檢視來瀏覽資料表中感興趣的部分或全部資料,而資料的物理儲存位置仍然在表中。 檢視是一個虛擬表,並不代表任何物理資料,只是用來檢視資料的視窗而已。檢視並不是以一組資料的形式儲存在

mybaits(查詢別名日誌框架顯示sql語句物件屬性和資料庫表字段不匹配resultMap使用mysql資料查詢分頁執行sql儲存過程動態SQL語句)

主要是各種配置檔案,建議把整個專案搬到自己電腦上慢慢看。 建立maven專案 首先是各種配置檔案: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m

資料庫學習SQL Server 第三章 約束索引檢視

第三章 約束、索引和檢視@TOC 1.簡介 約束,比如說要求欄位非空,就是最簡單的非空約束; 表格阻止更改和重新建立的問題(工具–選項–設計–取消阻止保護) 2.CHEAK約束 表設計器,右鍵–選擇cheak約束,比如要求收入=工資+獎金的約束,若新增值的時候,

資料庫學習SQL Server 第三章 約束索引檢視

第三章 約束、索引和檢視@TOC 1.簡介 約束,比如說要求欄位非空,就是最簡單的非空約束; 表格阻止更改和重新建立的問題(工具–選項–設計–取消阻止保護) 2.CHEAK約束 表設計器,右鍵–選擇cheak約束,比如要求收入=工資+獎金的約束,若新增值的時候,不遵循chea

檢視索引儲存過程優缺點

1.檢視 (1).什麼是檢視? 檢視(View)作為一種資料庫物件,為使用者提供了一個可以檢索資料表中資料的方式。使用者通過檢視來瀏覽資料表中感興趣的部分或全部資料,而資料的物理儲存位置仍然在表中。 檢視是一個虛擬表,並不代表任何物理資料,只是用來檢視資料

資料庫視訊】第五章 操作架構索引檢視

一.建立檢視 1.語法格式 CREATE VIEW view_name(view_column_name) AS query_expression [WITH CHECK OPTION] 方法:①通過圖形化介面建立檢視 新建檢視,新增表,定義需要檢視

資料庫物件檢視索引遊標觸發器簡介

檢視 1.檢視概述 1) 檢視是什麼: 檢視是基於 SQL 語句的結果集的視覺化的表(虛擬表),一個檢視並不真正包含真實的資料,只是從另一個視角檢視或改變表裡的資料。 2) 檢視的作用: 檢視可以起到隱藏資料的功能,可以選擇性的顯示錶中的欄位和行(隱藏資料) 檢視可以將複雜的

SQL語法(十) 序列索引檢視

前言            本章將學習序列、索引、檢視的相關知識 範例 1.建立序列 --使用 create sequence 序列名       --特點1:預設開始是沒有值的,也就是指標指在了沒有值的位置。       --特點2:序列名.nextval每次執行都

sql語句---儲存過程函式和觸發器

儲存過程、函式和觸發器的原理: 實際上都是使用Transact-SQL語言編寫的程式。儲存過程和函式需要顯式呼叫才能執行,而觸發器則在滿足指定條件時自動執行。 1、儲存過程 1.1 定義 儲存過程是Transact-SQL語句的預編譯集合,這些語句在一個名稱下儲

SQL Server儲存過程Returnoutput引數及使用技巧

SQL Server目前正日益成為WindowNT作業系統上面最為重要的一種資料庫管理系統,隨著 SQL Server2000的推出,微軟的這種資料庫服務系統真正地實現了在WindowsNT/2000系列作業系統一統天下的局面,在微軟的作業系統上,沒有任何一種資料庫系統能

【MYSQL筆記3】MYSQL過程式資料庫物件之儲存過程的呼叫刪除和修改

mysql從5.0版本開始支援儲存過程、儲存函式、觸發器和事件功能的實現。 我們以一本書中的例題為例:建立xscj資料庫的儲存過程,判斷兩個輸入的引數哪個更大。並呼叫該儲存過程。 (1)呼叫 首先,建立儲存過程(procedure),名為xscj.compar delimiter $$ crea

建立空間建立(子查詢建立的約束事務資料庫物件(檢視序列索引同義詞)PLSQL程式設計(if,迴圈)資料的匯入匯出備份

DDL語句管理表 DML管理表資料 1)語法: 建立 和 刪除 表空間 / 建立使用者 create tablespace 表空間的名稱 datafile '檔案路徑' //這個檔案是儲存在伺服器端的電腦上的

MySQL知識(十五)——儲存過程的呼叫檢視修改和刪除

2 呼叫儲存過程   儲存過程必須使用CALL語句呼叫,並且儲存過程和資料庫相關,如果要執行其他資料庫中的儲存過程,需要指定資料庫名稱,例如CALL dbname.procname。儲存函式的呼叫與MySQL中預定義的函式的呼叫方式相同。   呼叫儲存過程示

SQl中的UDF(使用者自定義函式)儲存過程的區別優點

UDF定義: 和儲存過程很類似,使用者自定義函式是一組有序的T_SQL語句,這些語句被預先優化和編譯,並且可以作為一個單元來進行呼叫。UDF和儲存過程的主要區別在於結果的返回方式。為了能支援多種的不同的返回值,UDF比儲存過程有更多的限制。 UDF和儲存過程的具體區別: 儲