




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章 構(gòu)建進(jìn)銷存管理系統(tǒng)的流程控制 計(jì)算機(jī)運(yùn)用教研室教學(xué)內(nèi)容1、變量和常量聲明和賦值2、用戶自定義數(shù)據(jù)類型3、邏輯運(yùn)算符的運(yùn)用4、常用系統(tǒng)函數(shù)引見(jiàn)5.2.1 常量根據(jù)常量值的不同類型,常量分為字符串常量、整型常量、實(shí)型常量、日期時(shí)間常量、貨幣常量、獨(dú)一標(biāo)識(shí)常量。各類常量舉例闡明如下。1字符串常量字符串常量分為ASCII字符串常量和Unicode字符串常量。1ASCII字符串常量。ASCII字符串常量是用單引號(hào)括起來(lái),由ASCII字符構(gòu)成的符號(hào)串。ASCII字符串常量舉例如下:ChinaHow do you!OBbaar/*假設(shè)單引號(hào)中的字符串包含引號(hào),可以運(yùn)用兩個(gè)單引號(hào)來(lái)表示嵌入的單引號(hào)。*
2、/5.1 常量和變量2Unicode 字符串常量。Unicode 字符串常量與ASCII字符串常量類似,但它前面有一個(gè)N標(biāo)識(shí)符N代表 SQL-92規(guī)范中的國(guó)際言語(yǔ)National Language,N前綴必需為大寫字母。Unicode字符串常量舉例如下:NChina NHow do you!Unicode 數(shù)據(jù)中的每個(gè)字符用兩個(gè)字節(jié)存儲(chǔ),而每個(gè)ASCII字符用一個(gè)字節(jié)存儲(chǔ)。5.1 常量和變量2整型常量按照不同表示方式,整型常量又分為二進(jìn)制整型常量、十六進(jìn)制整型常量和十進(jìn)制整型常量。十六進(jìn)制整型常量的表示:前輟 0 x 后跟十六進(jìn)制數(shù)字串。十六進(jìn)制常量舉例:0 xEBF0 x69048AEFDD
3、010E0 x /*空十六進(jìn)制常量*/二進(jìn)制整型常量的表示:即數(shù)字 0 或1,并且不運(yùn)用引號(hào)。假設(shè)運(yùn)用一個(gè)大于 1 的數(shù)字,它將被轉(zhuǎn)換為1。十進(jìn)制整型常量即不帶小數(shù)點(diǎn)的十進(jìn)制數(shù),例如,1894,2,+145345234,-21474836485.1 常量和變量4日期時(shí)間常量日期時(shí)間常量:用單引號(hào)將表示日期時(shí)間的字符串括起來(lái)構(gòu)成。SQL Server可以識(shí)別如下格式的日期和時(shí)間。 字母日期格式,如April 20, 2000;數(shù)字日期格式,如4/15/1998,1998-04-15;未分隔的字符串格式,如20001207;以下是時(shí)間常量的例子:14:30:2404:24:PM以下是日期時(shí)間常量的
4、例子:April 20, 2000 14:30:245.1 常量和變量1系統(tǒng)數(shù)據(jù)類型系統(tǒng)數(shù)據(jù)類型又稱為根本數(shù)據(jù)類型。詳細(xì)地引見(jiàn)了系統(tǒng)數(shù)據(jù)類型,此處不再贅述。2用戶自定義數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型可看做系統(tǒng)數(shù)據(jù)類型的別名。用戶自定義數(shù)據(jù)類型并不是真正的數(shù)據(jù)類型,它只是提供了一種提高數(shù)據(jù)庫(kù)內(nèi)部元素和根本數(shù)據(jù)類型之間一致性的機(jī)制。5.2 數(shù)據(jù)類型1變量變量名必需是一個(gè)合法的標(biāo)識(shí)符。1標(biāo)識(shí)符。在SQL Server中標(biāo)識(shí)符分為兩類。常規(guī)標(biāo)識(shí)符:以ASCII字母、Unicode字母、下劃線_、或#開(kāi)頭,后續(xù)可跟一個(gè)或假設(shè)干個(gè)ASCII字符、Unicode字符、下劃線_、美圓符號(hào)$、或#,但不能全為下劃線
5、_、或#。留意:常規(guī)標(biāo)識(shí)符不能是T-SQL的保管字。常規(guī)標(biāo)識(shí)符中不允許嵌入空格或其他特殊字符。5.3 變量的聲明及賦值2變量的分類全局變量:全局變量由系統(tǒng)提供且預(yù)先聲明,經(jīng)過(guò)在稱號(hào)前加兩個(gè)“來(lái)區(qū)別于部分變量。T-SQL全局變量作為函數(shù)援用。例如,ERROR前往執(zhí)行的上一個(gè)T-SQL語(yǔ)句的錯(cuò)誤號(hào);CONNECTIONS前往自上次啟動(dòng)SQL Server以來(lái)銜接或試圖銜接的次數(shù)。全局變量的意義及運(yùn)用請(qǐng)參考附錄B。部分變量:部分變量用于保管單個(gè)數(shù)據(jù)值。例如,保管運(yùn)算的中間結(jié)果,作為循環(huán)變量等。當(dāng)首字母為“時(shí),表示該標(biāo)識(shí)符為部分變量名;當(dāng)首字母為“#時(shí),此標(biāo)識(shí)符為一暫時(shí)數(shù)據(jù)庫(kù)對(duì)象名,假設(shè)開(kāi)頭含一個(gè)“#
6、,表示部分暫時(shí)數(shù)據(jù)庫(kù)對(duì)象名;假設(shè)開(kāi)頭含兩個(gè)“#,表示全局暫時(shí)數(shù)據(jù)庫(kù)對(duì)象名。5.3 變量的聲明及賦值2部分變量的運(yùn)用1部分變量的定義與賦值。定義:DECLARE 變量名 數(shù)據(jù)類型n:表示可定義多個(gè)變量,各變量間用逗號(hào)隔開(kāi)。 部分變量的賦值。當(dāng)聲明部分變量后,可用SET或SELECT語(yǔ)句為其賦值。5.3 變量的聲明及賦值【例5.2】 創(chuàng)建部分變量var1、var2并賦值,然后輸出變量的值。DECLARE var1 char(10) ,var2 char(30)SET var1=中國(guó)/*一個(gè)SET語(yǔ)句只能為一個(gè)變量賦值*/SET var2=var1+是一個(gè)偉大的國(guó)家SELECT var1, var2
7、5.3 變量的聲明及賦值【例5.3】 創(chuàng)建一個(gè)名為sex的部分變量,并在SELECT語(yǔ)句中運(yùn)用該部分變量查找表學(xué)生中一切男同窗的學(xué)號(hào)、姓名。USE StuManagerCGO DECLARE sex char(2)SET sex=男SELECT 學(xué)號(hào), 姓名FROM 學(xué)生WHERE 性別=sex5.3 變量的聲明及賦值【例5.4】 運(yùn)用查詢?yōu)樽兞抠x值。DECLARE student char(8)SET student=(SELECT 姓名 FROM 學(xué)生 WHERE 學(xué)號(hào)= 090015101)SELECT student5.3 變量的聲明及賦值用SELECT語(yǔ)句賦值:語(yǔ)法格式:SELECT
8、 變量名=表達(dá)式或值本卷須知SELECT 變量名 通常用于將單個(gè)值前往到變量中。假設(shè)假設(shè)表達(dá)式前往多個(gè)值,此時(shí)將前往的最后一個(gè)值賦給變量。假設(shè)SELECT 語(yǔ)句沒(méi)有前往行,變量將保管當(dāng)前值。假設(shè)表達(dá)式是不前往值的標(biāo)量子查詢,那么將變量設(shè)為 NULL。一個(gè)SELECT語(yǔ)句可以初始化多個(gè)部分變量。5.3 變量的聲明及賦值【例5.5】 運(yùn)用SELECT語(yǔ)句為部分變量賦值。DECLARE var1 nvarchar(30)SELECT var1 =劉豐SELECT var1 AS NAME5.3 變量的聲明及賦值【例5.6】 為部分變量賦空值。DECLARE var1 nvarchar(30)SELE
9、CT var1 = 劉豐SELECT var1 =(SELECT 姓名FROM 學(xué)生WHERE 學(xué)號(hào)= 089999)SELECT var1 AS NAME5.3 變量的聲明及賦值【例5.10】 查詢成果高于“張偉最高成果的學(xué)生姓名、課程稱號(hào)及成果。select a.學(xué)號(hào),姓名,c.課程稱號(hào)稱,成果from 學(xué)生 a inner join 學(xué)生成果 b on a.學(xué)號(hào)=b.學(xué)號(hào) inner join 課程 c on c.課程編號(hào)=b.課程編號(hào)where 成果all( select 成果 from 學(xué)生 a inner join 學(xué)生成果 b on a.學(xué)號(hào)=b.學(xué)號(hào)and 姓名=張偉)5.4
10、邏輯運(yùn)算符的運(yùn)用練習(xí)1、查詢成果高于“大學(xué)英語(yǔ)最高成果的學(xué)生姓名、課程稱號(hào)及成果。5.4 邏輯運(yùn)算符的運(yùn)用4EXISTS與NOT EXISTS的運(yùn)用。語(yǔ)法格式:EXISTS subquery用于檢測(cè)一個(gè)子查詢的結(jié)果能否不為空,假設(shè)是那么運(yùn)算結(jié)果為真,否那么為假。subquery用于代表一個(gè)受限的SELECT語(yǔ)句。EXISTS子句的功能有時(shí)可用IN,而NOT EXISTS 的作用與EXISTS正相反。5.4 邏輯運(yùn)算符的運(yùn)用【例5.14】 查詢上交日期為2021-03-17,交了作業(yè)的學(xué)生的姓名select 姓名 from 學(xué)生 a where exists(select * from 作業(yè) b
11、 inner join 作業(yè)明細(xì) c on b.作業(yè)id=c.作業(yè)idwhere 上交日期=2021-3-17 and a.學(xué)號(hào)=c.學(xué)號(hào))5.4 邏輯運(yùn)算符的運(yùn)用5.4 邏輯運(yùn)算符的運(yùn)用練習(xí)1、查找同時(shí)選修程序設(shè)計(jì)根底和java根底的學(xué)生的學(xué)號(hào)和姓名經(jīng)過(guò)運(yùn)算符“+實(shí)現(xiàn)兩個(gè)字符串的銜接運(yùn)算。【例5.15】多個(gè)字符串的銜接。SELECT (學(xué)號(hào)+ , + 姓名) AS 學(xué)號(hào)及姓名 FROM 學(xué)生5.4 字符串銜接運(yùn)算符5.5 常用系統(tǒng)函數(shù)引見(jiàn)1、字符串函數(shù)函數(shù)名描述函數(shù)名描述Len返回字符串的字符數(shù)Left從左側(cè)起返回指定長(zhǎng)度字符串Right從右側(cè)起返回指定長(zhǎng)度字符串RTrim去掉右邊空格Ltr
12、im去掉左邊空格Substring從字符串中第i位開(kāi)始取m位字符Replace用第三個(gè)表達(dá)式替換第一個(gè)字符串表達(dá)式中出現(xiàn)的所有第二個(gè)給定字符串表達(dá)式。UpperLower轉(zhuǎn)換為大寫轉(zhuǎn)換為小寫5.5 常用系統(tǒng)函數(shù)引見(jiàn)2、數(shù)學(xué)函數(shù)函數(shù)名描述函數(shù)名描述Abs絕對(duì)值Round四舍五入5.5 常用系統(tǒng)函數(shù)引見(jiàn)3、日期函數(shù)及轉(zhuǎn)換函數(shù)函數(shù)名描述函數(shù)名描述Getdate返回當(dāng)前日期Convert轉(zhuǎn)換數(shù)據(jù)類型Cast轉(zhuǎn)換數(shù)據(jù)類型Datediff返回兩個(gè)日期的時(shí)間間隔Dateadd向指定日期添加間隔5.5 常用系統(tǒng)函數(shù)引見(jiàn)【例】獲得當(dāng)前效力器時(shí)間Declare currentDate datetimeSelect
13、 currentDate=getdate()Select currentDate 5.5 常用系統(tǒng)函數(shù)引見(jiàn)【例】獲得當(dāng)前效力器時(shí)間,并以YYYY-MM-DD方式顯示Declare currentDate datetimeSelect currentDate=getdate()Select convert(char(10),currentdate,111)Select convert(char(10),currentdate,121)Select convert(char(10),currentdate,101)5.5 常用系統(tǒng)函數(shù)引見(jiàn)【例】將1/3轉(zhuǎn)換為decimal(6,2),結(jié)果為0.33
14、Select convert(decimal(6,2),1*1.00/3)5.5 常用系統(tǒng)函數(shù)引見(jiàn)【例】計(jì)算間隔軟考還有多少天,軟考日期為2021-5-23select datediff(day,getdate(),2021-5-23)【例】計(jì)算間隔元旦還有多少個(gè)月select datediff(month,getdate(),2021-1-1)【例】計(jì)算畢業(yè)還有幾年(2021-7-30)select datediff(year,getdate(),2021-7-30)5.5 常用系統(tǒng)函數(shù)引見(jiàn)【例】計(jì)算昨天,明天,后天所對(duì)應(yīng)的年月日select dateadd(day,-1,getdate()
15、 as 昨天,dateadd(day,1,getdate() as 明天,dateadd(day,2,getdate() as 后天5.5 常用系統(tǒng)函數(shù)引見(jiàn)【練習(xí)】1、計(jì)算當(dāng)前月份的最后一天2、計(jì)算當(dāng)前月份有多少天實(shí)戰(zhàn)演練1、統(tǒng)計(jì)學(xué)生表中,姓氏排名前5位同窗的姓氏,人數(shù)2、統(tǒng)計(jì)學(xué)生信息,按姓名的字?jǐn)?shù)統(tǒng)計(jì)3、聲明變量str,str=chong Qing Zdsoft,分別轉(zhuǎn)換為小寫字符和大寫字符4、聲明變量str,str= zdsoft ,去掉首位空格5、聲明變量var,var為當(dāng)前日期加5天,顯示var在設(shè)計(jì)程序時(shí),經(jīng)常需求利用各種流程控制語(yǔ)句,改動(dòng)計(jì)算機(jī)的執(zhí)行流程以滿足程序設(shè)計(jì)的需求。在SQ
16、L Server中提供了如表5.11所示的流程控制語(yǔ)句。控 制 語(yǔ) 句說(shuō) 明控 制 語(yǔ) 句說(shuō) 明BEGINEND語(yǔ)句塊CONTINUE用于重新開(kāi)始下一次循環(huán)IFELSE條件語(yǔ)句BREAK用于退出最內(nèi)層的循環(huán)CASE分支語(yǔ)句RETURN無(wú)條件返回GOTO無(wú)條件轉(zhuǎn)移語(yǔ)句WAITFOR為語(yǔ)句的執(zhí)行設(shè)置延遲WHILE循環(huán)語(yǔ)句5.6 流程控制語(yǔ)句在T-SQL中可以定義BEGINEND語(yǔ)句塊。當(dāng)要執(zhí)行多條T-SQL語(yǔ)句時(shí),就需求運(yùn)用BEGINEND將這些語(yǔ)句定義成一個(gè)語(yǔ)句塊,作為一組語(yǔ)句來(lái)執(zhí)行。語(yǔ)法格式如下:BEGIN sql_statement | statement_block END 關(guān)鍵字BEGI
17、N是T-SQL語(yǔ)句塊的起始位置,END標(biāo)識(shí)同一個(gè)T-SQL語(yǔ)句塊的結(jié)尾。sql_statement是語(yǔ)句塊中的T-SQL語(yǔ)句。BEGINEND可以嵌套運(yùn)用,statement_block表示運(yùn)用BEGINEND定義的另一個(gè)語(yǔ)句塊。例如,USE StuManagerCGOBEGINSELECT * FROM 學(xué)生SELECT * FROM 課程END5.61 流程控制語(yǔ)句- BEGINEND在程序中假設(shè)要對(duì)給定的條件進(jìn)展斷定,當(dāng)條件為真或假時(shí)分別執(zhí)行不同的 T-SQL 語(yǔ)句,可用IFELSE語(yǔ)句實(shí)現(xiàn)。語(yǔ)法格式:IF Boolean_expression /*條件表達(dá)式*/ sql_stateme
18、nt | statement_block /*條件表達(dá)式為真時(shí)執(zhí)行*/ ELSE sql_statement | statement_block /*條件表達(dá)式為假時(shí)執(zhí)行*/由上述語(yǔ)法格式可看出,條件語(yǔ)句分帶ELSE部分和不帶ELSE部分兩種運(yùn)用方式。1帶ELSE部分:IF 條件表達(dá)式A /* T-SQL語(yǔ)句或語(yǔ)句塊*/ELSEB /*T-SQL語(yǔ)句或語(yǔ)句塊*/當(dāng)條件表達(dá)式的值為真時(shí)執(zhí)行A,然后執(zhí)行IF語(yǔ)句的下一語(yǔ)句;條件表達(dá)式的值為假時(shí)執(zhí)行B,然后執(zhí)行IF語(yǔ)句的下一語(yǔ)句。5.61 流程控制語(yǔ)句- IFELSE2不帶ELSE部分:IF 條件表達(dá)式A /*T-SQL語(yǔ)句或語(yǔ)句塊*/當(dāng)條件表達(dá)式的
19、值為真時(shí)執(zhí)行A,然后執(zhí)行IF語(yǔ)句的下一條語(yǔ)句;當(dāng)條件表達(dá)式的值為假時(shí)直接執(zhí)行IF語(yǔ)句的下一條語(yǔ)句。IF語(yǔ)句的執(zhí)行流程如圖5.3所示。圖5.3 IF語(yǔ)句的執(zhí)行流程5.61 流程控制語(yǔ)句- IFELSE【例5.17】 假設(shè)“程序設(shè)計(jì)根底課程的平均成果高于75分,那么顯示“平均成果高于75分。IF( SELECT AVG(成果) FROM 學(xué)生, 學(xué)生成果, 課程WHERE 學(xué)生.學(xué)號(hào)= 學(xué)生成果.學(xué)號(hào) AND 學(xué)生成果.課程編號(hào)=課程.課程編號(hào)AND 課程.課程稱號(hào)=程序設(shè)計(jì)根底 ) 75SELECT 平均成果低于75ELSESELECT 平均成果高于755.61 流程控制語(yǔ)句- IFELSE【例
20、5.18】 IFELSE語(yǔ)句的嵌套運(yùn)用。IF( SELECT AVG(成果) FROM 學(xué)生, 學(xué)生成果, 課程WHERE 學(xué)生.學(xué)號(hào)= 學(xué)生成果.學(xué)號(hào) AND 學(xué)生成果.課程編號(hào)=課程.課程編號(hào)AND 課程.課程稱號(hào)=程序設(shè)計(jì)根底 ) 75SELECT 平均成果高于755.61 流程控制語(yǔ)句- IFELSE5.61 流程控制語(yǔ)句- IFELSE【例】判別“學(xué)生表能否存在,假設(shè)存在刪除學(xué)生表,否那么創(chuàng)建學(xué)生表if exists(select * from sysobjects where name=學(xué)生)drop table 學(xué)生create table 學(xué)生(學(xué)號(hào) int primary k
21、ey,姓名 varchar(10)CASE語(yǔ)句在4.2.1小節(jié)引見(jiàn)選擇列的時(shí)候曾經(jīng)涉及過(guò)。這里引見(jiàn)CASE語(yǔ)句在流程控制中的用法,與之前略有不同。語(yǔ)法格式:CASE input_expression WHEN when_expression THEN result_expression .n ELSE else_result_expression END 或者CASE WHEN Boolean_expression THEN result_expression .n ELSE else_result_expression END5.62 流程控制語(yǔ)句- Case第一種格式中input_expr
22、ession是要判別的值或表達(dá)式,接下來(lái)是一系列的WHEN-THEN塊,每一塊的when_expression參數(shù)指定要與input_expression比較的值,假設(shè)為真,就執(zhí)行result_expression中的T-SQL語(yǔ)句。假設(shè)前面的每一塊都不匹配,就會(huì)執(zhí)行ELSE塊指定的語(yǔ)句。CASE語(yǔ)句最后以END關(guān)鍵字終了。第二種格式中CASE關(guān)鍵字后面沒(méi)有參數(shù),在WHEN-THEN塊中,Boolean_expression指定了一個(gè)比較表達(dá)式,表達(dá)式為真時(shí)執(zhí)行THEN后面的語(yǔ)句。與第一種格式相比,這種格式可以實(shí)現(xiàn)更為復(fù)雜的條件判別,運(yùn)用起來(lái)更方便。【例5.19】 運(yùn)用第一種格式的CASE語(yǔ)句,根據(jù)性別值輸出“男或“女。SELECT 學(xué)號(hào), 姓名, 專業(yè), SEX= CASE 性別WHEN 1 THEN 男WHEN 0 THEN 女ELSE 無(wú)ENDFR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理配藥計(jì)算講解
- 管理學(xué)原理組織結(jié)構(gòu)
- 居民議事協(xié)商能力提升培訓(xùn)
- 永煤消防考試題庫(kù)及答案
- 銀行研發(fā)面試題目及答案
- 中國(guó)好老師信息技術(shù)與學(xué)科教學(xué)深度融合培訓(xùn)心得體會(huì)模版
- 2025年蘇教版科學(xué)小學(xué)四年級(jí)下冊(cè)期末復(fù)習(xí)檢測(cè)題附答案(三)
- 陽(yáng)城公務(wù)員考試題及答案
- 敘永公務(wù)員考試題目及答案
- 行政公務(wù)員的考試題及答案
- 生產(chǎn)廠長(zhǎng)個(gè)人簡(jiǎn)歷參考范文
- 2025年華能長(zhǎng)興分公司招聘筆試參考題庫(kù)含答案解析
- 民事起訴狀(物業(yè)服務(wù)合同糾紛)示范文本
- 《廣東省城市軌道交通建設(shè)工程環(huán)境監(jiān)理指南》
- 公交年度客流報(bào)告范文
- 醫(yī)院感染管理制度培訓(xùn)
- 2024年高考政治學(xué)科高考萬(wàn)能答題模板(高分版)
- 2025年會(huì)計(jì)專業(yè)考試高級(jí)會(huì)計(jì)實(shí)務(wù)試題及解答參考
- 【MOOC】創(chuàng)新方法與實(shí)踐-河南理工大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- DB32T 4321-2022 公路工程施工安全管理信息系統(tǒng)技術(shù)規(guī)范
- 電影《白日夢(mèng)想家》課件
評(píng)論
0/150
提交評(píng)論