1. 程式人生 > >SQL從零到迅速精通【實用函數(2)】

SQL從零到迅速精通【實用函數(2)】

表的操作 deny 獲取 拒絕 分享 子字符串 evo sci ever

1.對查詢結果進行排序

查詢stu_info表中所有學生信息,並按照成績由高到底進行排序,輸入語句如下。

SELECT * FROM stu_info ORDER BY s_score DESC; --asc是指定列按升序排列,desc則是指定列按降序排列。

2.數據控制語句【授權、禁止和收回】

(1)授權權限操作

對名稱為guest的用戶進行授權,允許其對stu_info數據表執行更新和刪除的操作權限,輸入語句如下。

GRANT UPDATE,DELETE ON stu_info --UPDATE和DALETE為允許被授予的操作權限

TO guest WITH GRANT OPTION

(2)拒絕權限操作

禁止guest用戶對stu_info表的操作更新權限,輸入語句如下。

DENY UPDATE ON stu_info TO guest CASCADE; --CASCADE這裏記住就行了,說什麽和級聯有關系,算是固定語法吧。

(3)收回權限操作

收回guest用戶對stu_info表的刪除權限,輸入語句如下。

REVOKE DELETE ON stu_info FROM guest;

3.BEGIN...END語句【與選擇語句IF...ELSE和循環語句WHILE搭配使用】

[email protected],[email protected]

/* */,執行WHILE循環操作中的語句塊,輸入語句如下。

DECLARE @count INT;

SELECT @count=0;

WHILE @count < 10

BEGIN

PRINT ‘count=‘ + CONVERT(VARCHAR(8),@count) --CONVERT用來把INT類型轉化成浮動字符型VARCHAR

SELECT @[email protected]+1

END

PRINT ‘loop over count = ‘ + CONVERT(VARCHAR(8),@count);

4.IF...ELSE語句

DECLARE @age INT;

SELECT @age=40

IF @age<30

PRINT ‘This is a young man!‘

ELSE

PRINT ‘This is an old man!‘

5.CASE語句(簡記:CASE/WHEN/THEN/END)【盡可能全部采用CASE語句,非常清晰】

使用CASE語句根據學生姓名判斷個個學生在班級的職位,輸入語句如下。

USE test_db

SELECT s_id,s_name,

CASE s_name

WHEN ‘Jack‘ THEN ‘BOSS‘

WHEN ‘Rose‘ THEN ‘BEAUTY‘

WHEN ‘Osmond‘ THEN ‘MILIINIARE‘

ELSE ‘NO‘ --除上面這三個人名之外,其他人全部的職位都是無。如果需要這樣設計的話,CASE很好,如果不需要這樣設計的話,可以不加ELSE。

END

AS ‘JOB‘

FROM stu_info

6.使用CASE語句對考試成績進行評定,輸入語句如下。

SELECT s_id,s_name,s_score

CASE

WHEN s_score >90 THEN ‘perfect‘

WHEN s_score >80 THEN ‘good‘

WHEN s_score >70 THEN ‘ok‘

WHEN s_score >60 THEN ‘just soso‘

END

AS ‘評價‘

FROM stu_info

7.GOTO【用來跳轉】

USE test_db;

BEGIN

SELECT s_name FROM stu_info;

GOTO jump

SELECT s_score FROM stu_info;

jump:

PRINT ‘第二條SELECT語句沒有執行’;

END

8.WAITFOR語句

10s的延遲後執行PRINT語句,輸入語句如下。

DECLARE @name VARCHAR(50);

SET @name=‘admin‘;

BEGIN

WAITFOR DELAY ‘00:00:10‘;

PRINT @name;

END;

9.RETURN【無條件退出】

10.ASCII()函數

查看指定字符的ASCII值,輸入語句如下。

SELECT ASCII(‘s‘);

11.CHAR()函數

查看ASCII值115和49對應的字符,輸入語句如下。

SELECT CHAR(115),CHAR(49);

12.LEFT()函數

使用LEFT函數返回字符串中左邊的字符,輸入語句如下。

SELECT LEFT(‘football‘,4); 》》》》》》foot

13.RIGHT()函數

使用RIGHT函數返回字符串中右邊的字符,輸入語句如下。

SELECT RIGHT(‘football‘,4); 》》》》》》ball

14.LTRIM()函數

使用LTRIM函數刪除字符串左邊的空格,輸入語句如下。

SELECT LTRIM(‘ book ‘);

15.RTRIM()函數(和上面對應)

16.STR()函數

使用STR函數將數字數據轉換為字符數據,輸入語句如下。

SELECT STR(3141.59,6,1),STR(123.45,5,7);技術分享

17.字符串逆序的函數REVERSE(s)

使用REVERSE函數反轉字符串,輸入語句如下。

SELECT REVERSE(‘abc‘);技術分享

18.LEN(str)函數

SELECT LEN(‘no‘),LEN(‘日期‘),LEN(12345);技術分享

19.查找A在數據中的位置(高級查找)

使用CHARINDEX函數查找字符串中指定子字符串的開始位置,輸入語句如下。

SELECT CHARINDEX(‘a‘,‘banana‘),CHARINDEX(‘na‘,‘banana‘,4);技術分享

20.範圍內取內容

使用SUBSTRING函數獲取指定位置處的子字符串,輸入語句如下。

SELECT

SUBSTRING(‘breakfast‘1,5),SUBSTRING(‘breakfast‘,LEN(‘breakfast‘)/2,LEN(‘breakfast’));

>>>>>>>>break akfast

SQL從零到迅速精通【實用函數(2)】