大型資料庫技術-實驗一T-SQL語句的使用
大型資料庫技術-實驗一T-SQL
實驗內容及步驟
1.使用區域性變數、全域性變數
(1)定義一個tinyint的整型變數,為其賦值45,並顯示變數的值。
declare @A tinyint
set @A=45
print @A
go
(2)定義一個長度為20的可變長度型字元變數,為其賦值“Welcome to SWPU”, 並顯示變數的值。
declare @B varchar(20)
set @B='Welcome to SWPU'
print @B
go
(3)查詢當前資料庫伺服器名@@SERVERNAME。
select @@SERVERNAME
go
(4)查詢當前資料庫管理系統版本@@VERSION。
SELECT @@VERSION
go
2.函式的使用
(1) 數學函式的使用
分別用ABS,SQRT,POWER函式求出-3的絕對值,16的平方根,5的三次方。
select ABS(-3) '-3的絕對值',SQRT(16) '16的平方根',POWER(5,3) '5的3次方'
GO
(2) 字串函式的使用
1)用UPPER和LOWER函式分別將字串“china”、“MACHINE”轉換成大寫、小寫字母;
select UPPER('china') '大寫',LOWER('MACHINE') '小寫'
GO
2)用LTRIM函式去掉字串“ machine ”左邊的空格,再與“china”及“press“連線起來;
select LTRIM(' machine ')+'china'+'press' '去左空格'
go
3)用RTRIM函式去掉字串“ machine ”右邊的空格,再與“china”及“press“連線起來;
select RTRIM(' machine ')+'china'+'press' '去又空格'
GO
4)去掉字串“ machine ”左右兩邊的空格,再與“china”及“press“連線起來;
select LTRIM(RTRIM(' machine '))+'china'+'press' '去兩邊空格'
GO
5)用LEN函式計算字串‘I am a teacher.’的長度,並使用REPLACE函式將“teacher”替換為“student”。
select LEN('I am a teacher.') '長度',REPLACE('I am a teacher.','teacher','student') '替換'
GO
(3) 日期、時間函式的使用
1)用GETDATE,DAY,MONTH,YEAR等函式返回系統當前日期並以整數形式返回當前日期的年份、月份、日;
declare @date date
set @date=GETDATE()
select YEAR(@date) '年',MONTH(@date) '月',day(@date) '日'
go
2)用DATEDIFF函式返回你的生日與當前日期相差的天數、月數及年數。
select DATEDIFF(dd,'2000-04-07','2020-12-06') '天數',
DATEDIFF(MM,'2000-04-07','2020-12-06') '月數',
DATEDIFF(YY,'2000-04-07','2020-12-06') '年數'
GO
(4) 系統函式與元資料函式的使用
1)顯示正在使用的使用者名稱(USER_NAME)、資料庫名(DB_NAME);
select USER_NAME() '使用者名稱',DB_NAME() '資料庫名'
GO
2)返回當前主機標識(HOST_ID)及主機名稱(HOST_NAME)。
select HOST_ID(),HOST_NAME()
GO
3.編寫較複雜的Transact-SQL程式
(1) 在教學管理資料庫中,我們將學生的課程考試成績水平分為3類,即低於60為不及格,61到79為及格,大於等於80為優秀,成績為NULL的不統計。請顯示所有學生的姓名、所選各個課程的課程名和成績水平。
use 教學管理
SELECT 姓名,課名,CASE
WHEN 成績<60 THEN '不及格'
WHEN 成績<80 THEN '及格'
ELSE '優秀'
END AS '等級表'
FROM dbo.學生表,dbo.選課表,dbo.課程表,dbo.開課表
WHERE dbo.學生表.學號=dbo.選課表.學號
AND dbo.選課表.開課號=dbo.開課表.開課號
AND dbo.開課表.課號=dbo.課程表.課號
AND 成績 IS NOT NULL
GO
(2) 用Transact-SQL語言編寫程式計算1~100之間所有能被7整除的數的總和。
DECLARE @SUM INT,@START INT,@END INT,@NUM INT
SELECT @SUM=0,@START=1,@END=100,@NUM=7
WHILE @START<@END
BEGIN
IF(@START%@NUM=0)
BEGIN
PRINT @START
SET @SUM=@SUM+@START
END
SET @START=@START+1
END
PRINT '-----------------'
PRINT @SUM
GO