一篇文章帶你入門SQL編程
1.學(xué)習(xí)sql之前回憶一下,什么是變量?
變量:能存儲(chǔ)數(shù)據(jù)的值。變量是一塊內(nèi)存空間的表示。數(shù)組一連串空間變量是存儲(chǔ)數(shù)據(jù)的容器(通俗講)
2.變量分為局部變量和全局變量
局部變量的使用是先申明再賦值。
全局變量由系統(tǒng)定義和維護(hù),可以直接使用,但一般不自定義全局變量。
1:局部變量:
局部變量的名稱必須以標(biāo)記@作為前綴
聲明局部變量的語句如下:
declare @variable name
(局部變量名稱)
DataType
(數(shù)據(jù)類型)
局部變量賦值有兩種方法:Set語句或Select語句
如圖所示:
2:全局變量
SqlServer中的所有全局變量都使用兩個(gè)@符號(hào)作為前綴
常用的幾個(gè)全局變量:(@@error重點(diǎn))
@@error | 上一條SQL錯(cuò)誤號(hào) |
@@identity | 最后一次插入的標(biāo)識(shí)值 |
@@rowcount | 受上一個(gè)SQL語句影響的行數(shù) |
@@serviceName | 該計(jì)算機(jī)上的SQL服務(wù)名稱 |
@@Version | SQLServer的版本信息 |
注:程序員不能自己定義全局變量,不能給全局變量賦值
3.select語句和set語句區(qū)別
Set | Select | |
同時(shí)對(duì)多個(gè)變量賦值 | 不支持 | 支持 |
表達(dá)式返回多個(gè)值時(shí) | 出錯(cuò) | 將返回的最后一個(gè)值賦給變量 |
表達(dá)式未返回值時(shí) | 變量將賦值為NULL | 變量保持原值 |
注:被賦值的變量的數(shù)據(jù)來源于數(shù)據(jù)表的時(shí)候,不要用set,選用select
如下圖所示:
Declare @stuName nvarchar(32) Select @stuName=studentname from student Where studentno=23
4.數(shù)據(jù)類型轉(zhuǎn)換
cast()與convert()函數(shù)
基本語法:
cast(表達(dá)式 as 數(shù)據(jù)類型)
convert(數(shù)據(jù)類型[(長(zhǎng)度)],表達(dá)式[,樣式])
二者在本質(zhì)上無任何區(qū)別
唯一不同之處是:在將日期時(shí)間類型的數(shù)據(jù)轉(zhuǎn)換為字符串?dāng)?shù)據(jù)時(shí),convert()函數(shù)可以通過第三個(gè)參數(shù)指定轉(zhuǎn)換后字符數(shù)據(jù)的顯示格式不同。
5.邏輯控制語句
1:順序結(jié)構(gòu)控制語句
begin
語句或語句塊
end
2:If-else條件語句(重點(diǎn))
例如:
統(tǒng)計(jì)并顯示2013-08-09的oop考試平均分
如果平均分在70以上,顯示“考試成績(jī)優(yōu)秀”,并顯示前三名學(xué)生的考試信息
如果在70分以下,顯示“考試成績(jī)較差”,并顯示后三名學(xué)生的考試信息
3:while循環(huán)語句
示例:
檢查學(xué)生“oop”課最近一次考試是否有不及格(60分及格)的學(xué)生。
如有,每人加2分,高于95分的學(xué)生不再加分,直至所有學(xué)生這次考試成績(jī)均及格
注:在SQL中,只有while一種循環(huán),沒有do-while和for循環(huán)
4:case多分支語句
case-end語句計(jì)算一組條件表達(dá)式,并返回其中一個(gè)符合條件的結(jié)果
基本語法:
case
when 條件1 then 結(jié)果1
when 條件2 then 結(jié)果2
[ else 其他結(jié)果]
end
示例:
ABCDE五級(jí)打分制顯示學(xué)生oop課最近一次考試成績(jī)(姓名和等級(jí))
A級(jí):90分以上,B級(jí):80-分,C級(jí):70-分,D級(jí):60-分,E級(jí):60分以下
批處理
GO指令:
GO關(guān)鍵字標(biāo)志著批處理的結(jié)束,它是一條或多條SQL語句的集合
作用:
能簡(jiǎn)化數(shù)據(jù)庫的管理;
批處理可以提高語句執(zhí)行的效率;
提示: GO是SQL Server特有的批處理命令,只有SQL Server的查詢編輯器才能識(shí)別并處理,編輯其他應(yīng)用程序時(shí)不能使用該命令?!?/p>
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫、數(shù)據(jù)表的方法
這篇文章主要介紹了mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫、數(shù)據(jù)表的方法,有需要的朋友可以參考一下2013-11-11mysql優(yōu)化小技巧之去除重復(fù)項(xiàng)實(shí)現(xiàn)方法分析【百萬級(jí)數(shù)據(jù)】
這篇文章主要介紹了mysql優(yōu)化小技巧之去除重復(fù)項(xiàng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了mysql去除重復(fù)項(xiàng)的方法,并附帶了隨機(jī)查詢優(yōu)化的相關(guān)操作技巧,需要的朋友可以參考下2020-01-01MySQL優(yōu)化案例系列-mysql分頁優(yōu)化
這篇文章主要介紹了MySQL優(yōu)化案例系列-mysql分頁優(yōu)化,需要的朋友可以參考下2016-08-08MySQL數(shù)據(jù)庫高級(jí)操作實(shí)戰(zhàn)(克隆表、清空表、創(chuàng)建臨時(shí)表及約束)
多年工作中積累整理的數(shù)據(jù)庫高級(jí)操作分享給大家,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫高級(jí)操作實(shí)戰(zhàn)的相關(guān)資料,其中包括克隆表、清空表、創(chuàng)建臨時(shí)表及約束等,需要的朋友可以參考下2023-06-06從MySQL全庫備份中恢復(fù)某個(gè)庫和某張表的方法
這篇文章主要介紹了從MySQL全庫備份中恢復(fù)某個(gè)庫和某張表的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04MySQL中Order By多字段排序規(guī)則代碼示例
這篇文章主要介紹了MySQL中Order By多字段排序規(guī)則代碼示例,小編覺得挺不錯(cuò)的,這里給大家分享下,需要的朋友可以參考。2017-10-10教你如何讓spark?sql寫mysql的時(shí)候支持update操作
spark提供了一個(gè)枚舉類,用來支撐對(duì)接數(shù)據(jù)源的操作模式,本文重點(diǎn)給大家介紹如何讓spark?sql寫mysql的時(shí)候支持update操作,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-02-02Linux下MySql 1036 錯(cuò)誤碼解決(1036: Table ''xxxx'' is read only)
我們?cè)谶M(jìn)行數(shù)據(jù)庫搬家的時(shí)候,經(jīng)常會(huì)遇到(1036: Table 'xxxx' is read only)的問題,字面意思很明確,就是數(shù)據(jù)庫只有讀權(quán)限,無寫權(quán)限,那么我們來分享下我的處理辦法2014-07-07