1. 程式人生 > >儲存過程、觸發器和使用者自定義函式實驗 (儲存過程)

儲存過程、觸發器和使用者自定義函式實驗 (儲存過程)

儲存過程、觸發器和使用者自定義函式實驗

實驗內容一

練習教材中儲存過程、觸發器和使用者自定義函式的例子。教材中的BookSales資料庫,在群共享中,檔名為BookSales.bak。

實驗內容二

針對附件1中的教學活動資料庫,完成下面的實驗內容。

1儲存過程

(1)建立一個儲存過程,該儲存過程統計“高等數學”的成績分佈情況,即按照各分數段統計人數。

CREATE Proc MATH_NUM @MATH CHAR(20)='高等數學'
AS
SELECT @MATH as canme,
count(case when score>=90 then 1 end)as[90以上],
 count(case when score>=80 and score<90 then 1 end)as[80-90],
count(case when score>=70 and score<80 then 1 end)as[70-80],
count(case when score>=60 and score<70 then 1 end)as[60-70],
count(case when score<60 then 1 end)as[60以下] FROM study,course
WHERE study.cno=course.cno and

[email protected]
GROUP BY course.cname



(2)建立一個儲存過程,該儲存過程有一個引數用來接收課程號,該儲存過程統計給定課程的平均成績。

CREATE Proc AVG_SCORE @cno CHAR(20)
AS
SELECT @cno as 課程號,course.cname as 課程名,STR(AVG(score),5,2) as 平均成績
FROM study,course
WHERE study.cno=course.cno and [email protected]
GROUP BY course.cname


(3)建立一個儲存過程,該儲存過程將學生選課成績從百分制改為等級制(即

ABCDE)。

CREATE Proc SCORE_CHANGE
AS
SELECT course.cname as 課程名,study.sno as 學號,study.cno as 課程號,study.score as 成績,
case
when score>=90 and score<=100 then'A'
when score>=80 and score<90 then'B'
when score>=70 and score<80 then'C'
when score>=60 and score<70 then'D'
when score<60 then'E'
end as '等級'
from study,course
where study.cno=course.cno




(4建立一個儲存過程,該儲存過程有一個引數用來接收學生姓名,該儲存過程查詢該學生的學號以及選修課程的門數。

CREATE Proc STUDENT_STUDY @name varchar(20)
AS
select @name as 姓名,study.sno as 學號,count(cno) as 選修門數
from study,student
where study.sno=student.sno and [email protected]
group by study.sno




(5建立一個儲存過程,該儲存過程有兩個輸入引數用來接收學號和課程號,一個輸出引數用於獲取相應學號和課程號對應的成績。


CREATE Proc STU_COR_SCORE @sno varchar(20),@cno char(20),@word smallint output
 AS
select @word=score
from study
where [email protected] and [email protected]



實驗資料庫說明

教學活動資料庫包括studentcoursestudy三個基本表,三個基本表的結構說明和資料如下:

1)學生表(student)

學生表的結構

列名

資料型別

長度

是否允許為空值

欄位說明

sno

char

5

NO

學號

sname

char

8

NO

姓名

age

smallint

年齡

sex

nchar

1

性別

說明:sno為主鍵,age的範圍為15~35之間,sex只能為“男”或“女”。

CREATE TABLE student ( 
age smallint check (age >= 15 and age <= 35), 
sex varchar(20) check (sex in('男','女')) --性別

sno varchar(20) PRIMARY KEY not null, 
sname varchar(20) not null, --姓名 
 )

insert into student values( '98601' ,'李強',20,'男')
insert into student values( '98602', '劉麗', 21, '男'); 
insert into student values( '98603', '張兵', 20, '男'); 
insert into student values( '98604', '陳志堅', 22, '男');
 insert into student values( '98605', '王穎', 21,'男'); 

學生表的記錄

sno

sname

age

sex

98601

李強

20

98602

劉麗

21

98603

張兵

20

98604

陳志堅

22

98605

王穎

21

2)課程表(course)

課程表的結構

列名

資料型別

長度

是否允許為空值

說明

cno

char

4

NO

課程號

cname

char

20

NO

課程名

teacher

char

8

任課教師

說明:cno為主鍵。

create table course
(
cno char(20) not null primary key, --課程編號 
cname char(20) not null ,--課程名稱
teacher char(20)
)

insert into course
values(
'C601','高等數學','周振興')
insert into course
values(
'C602','資料結構','劉建平')
insert into course
values(
'C603','作業系統','劉建平')
insert into course
values(
'C604','編譯原理','王志偉')

課程表的記錄

cno

cname

teacher

C601

高等數學

周振興

C602

資料結構

劉建平

C603

作業系統

劉建平

C604

編譯原理

王志偉

3)選課表(study)

create table study
 (
sno varchar(20) not null ,--學生學號 
cno char(20),--上課編號 
score smallint ,
primary key(sno,cno),
foreign key(sno) references student(sno),
foreign key(cno) references course(cno)
 )

insert into study
values
('98601','C601',90)




insert into study
values(
'98601','C602',90)
insert into study
values(
'98601','C603',85)
insert into study
values(
'98601','C604',87)
insert into study
values(
'98602','C601',90)
insert into study
values(
'98603','C601',75)
insert into study
values(
'98603','C602',70)
insert into study
values(
'98603','C604',56)
insert into study
values(
'98604','C601',90)
insert into study values(
'98604','C604',85)
insert into study 
values(
'98605','C601',95)
insert into study
values(
'98605','C603',80)

選課表的結構

列名

資料型別

長度

是否允許為空值

說明

sno

char

5

NO

學號

cno

char

4

NO

課程號

score

smallint

成績

說明:snocno為主鍵,sno為外來鍵(參照student表的sno),cno為外來鍵(參照course表的cno),score的範圍為0~100之間。

選課表的記錄

sno

cno

score

98601

C601

90

98601

C602

90

98601

C603

85

98601

C604

87

98602

C601

90

98603

C601

75

98603

C602

70

98603

C604

56

98604

C601

90

98604

C604

85

98605

C601

95

98605

C603

80

相關推薦

儲存過程觸發器使用者定義函式實驗 儲存過程

儲存過程、觸發器和使用者自定義函式實驗 實驗內容一 練習教材中儲存過程、觸發器和使用者自定義函式的例子。教材中的BookSales資料庫,在群共享中,檔名為BookSales.bak。 實驗內容二 針對附件1中的教學活動資料庫,完成下面的實驗內容。 1、儲存過程 (

利用navicat建立儲存過程觸發器使用遊標的簡單例項

建立儲存過程和觸發器 1、建表 首先先建兩張表(users表和number表),具體設計如下圖: 2、儲存過程 寫一個儲存過程,往users表中插入資料,建立過程如下:     程式碼如下: BEGIN #Routine body goes here... d

SQL儲存過程觸發器遊標

儲存過程 1、儲存過程是事先編好的、儲存在資料庫中的程式,這些程式用來完成對資料庫的指定操作。 2、系統儲存過程: SQL Server本身提供了一些儲存過程,用於管理有關資料庫和使用者的資訊。 使用者儲存過程: 使用者也可以編寫自己的儲存過程,並把它存放在資料庫中,供客戶端呼叫。 3、這樣安排的主要目的就

利用navicat創建存儲過程觸發器使用遊標的簡單實例

.net fill student default hand 結果 alt 神奇 行記錄 原文鏈接 創建存儲過程和觸發器 1、建表 首先先建兩張表(users表和number表),具體設計如下圖: 2、存儲過程 寫一個存儲過程,往users表中插入數據,創建

C# WinForm中如何定義config檔案XML檔案,並且讀取儲存

我這裡以連結資料庫為例子, 其中書寫的Config的xml檔案如下: <?xml version="1.0" encoding="utf-8"?> <configuration>   <appSettings>     <add k

Excel--使用VBA Code 動態建立修改刪除定義窗體程式碼摘抄

Sub CreateUserform()'PURPOSE: Create & Modify a Userform with VBA Code'AUTHOR: John Walkenbach (www.SpreadsheetPage.com)'SOURCE: www.

配置RedisTemplateJedisPoolConfigJedisConnectionFactory+定義序列化 java方式

java方式配置RedisTemplate   //spring注入ben    //@Bean(name = "redisTemplate") public RedisTemplate initRedisTemplate(){ JedisPoolConfig poolCo

【jmeter二次開發】二Jmeter擴充套件--實現定義函式ApacheJMeter_functions

Jmater函式擴充套件的步驟1、 匯入Jmeter原始碼,或使用maven專案,引入依賴的jar包2、 繼承AbstractFunction,實現自定義Function3、 繼承JMeterTestCase,對自定義的函式進行單元測試4、 對自定義函式進行編譯打包,並放在l

Jasper Report之定義組件Custom Visualization環境配置

win 進行 studio one component add 。。 版本 inf Jasper Report提供的功能已經足夠強大了,但是仍不能完全對接客戶的需求,因此需要我們自定義組件完成對我們Report的設計,開發前的環境配置還是個麻煩事。。。 系統:Linux I

樹莓派小車樹莓派小車紅外線模塊連接多圖

post ges pos logs -m img gem 讀者 alt 正文之前 上一篇文章介紹了小車底盤以及驅動板的安裝,這一次來講一講樹莓派與驅動板以及紅外線模塊的安裝。 正文 1. 樹莓派的GPIO引腳定義: 樹莓派的GPIO引腳共分為兩種類型,一種是PHYSIC

vue中定義組件插件

comment tty index all target mark cal ali lan vue中自定義組件(插件) 原創 2017年01月04日 22:46:43 標簽: 插件 在vue項目中,可以自定義組件像vue-resource一樣使用Vue.use(

Python進階-----通過類的內置方法__str____repr__定制輸出打印對象時的字符串信息

對象 pre 信息 控制臺 定制 def -- 執行 ini __str__方法其實是在print()對象時調用,所以可以自己定義str字符串顯示信息,在該方法return一個字符串,如果不是字符串則報錯print(obj) 等同於-->str(obj) 等同於

Xamarin定義佈局系列——ListView的一個定義實現ItemsControl橫向列表

原文: Xamarin自定義佈局系列——ListView的一個自定義實現ItemsControl(橫向列表) 在以前寫UWP程式的時候,瞭解到在ListView或者ListBox這類的列表空間中,有一個叫做ItemsPannel的屬性,它是所有列表中子元素實際的容器,如果要讓列表進行橫向排列,只需要在Xam

VSCode 如何操作使用者定義程式碼片段快捷鍵

如何操作使用者自定義程式碼片段(快捷鍵)? 第一步:檔案==>首選項==>使用者程式碼片段 第二步:選擇程式碼片段檔案 html.json   第三步:輸入要自定義的快捷鍵 和 模板程式碼段 { "vh": { "prefix

Django 框架中的定義模板標籤template.Library()

某一些標籤(例如:選單欄、css、JS、以及一些複雜計算後的資料等)需要我們自定義。 然後再在指定的html中引用並顯示。 之所以要用到標籤,主要作用就是想讓一些內容在多個模板(HTML)中都要有,比如選單欄。 我們絕對不想在每個檢視函式(views中)都寫一次這些變數內容。 即每個頁面

centos7下mysql5.7修改密碼外部能訪問的步驟講解所遇到的那些坑最全

登入mysql報錯 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 1、登入安裝資料庫的機器 輸入vi /etc/my.cnf,在該配置檔案增加一

SSD-Tensorflow 目標檢測定義資料集VOC2007格式

一、準備 搭建SSD框架,下載解壓即可 下載pascalvoc資料,自己的資料根據voc格式改寫(圖片的名稱,不用拘泥於6位數字,其他命名也可以)資料集下載點選 解壓後不要混合在一個資料夾下 VOCtrainval用來訓練,VOCtest用來測試。 VOCtrai

SpringBoot定義配置檔案xxx.properties

轉載 :https://www.cnblogs.com/V1haoge/p/7183408.htmlSpringBoot中免除了大部分手動配置,但是對於一些特定的情況,還是需要我們進行手動配置的,SpringBoot為我們提供了application.properties配置檔案,讓我們可以進行自定義配置,來

Rabbit MQ 定義監聽器容器Listener Container的啟動與停止

專案中會遇到,MQ佇列的監聽是在某一前提條件準備好的情況下才啟動,比如MQ接收到一系列資料,這些資料的儲存依賴於另外一個MQ訊息的一些配置接收之後才能完成。 指定屬性autoStartup為false,並啟動對應的listener id @RabbitHandl

spring-security 個性化使用者認證流程——定義登入頁面可配置

1.定義自己的登入頁面我們需要根據自己的業務系統構建自己的登入頁面以及登入成功、失敗處理在spring security提供給我的登入頁面中,只有使用者名稱、密碼框,而自帶的登入成功頁面是空白頁面(可以重定向之前請求的路徑中),而登入失敗時也只是提示使用者被鎖定、過期等資訊。 在實際的開發中,則需要更