1. 程式人生 > 資料庫 >大型資料庫技術-實驗一T-SQL語句的使用

大型資料庫技術-實驗一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