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

weixin_30639719發表於2020-04-05

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搭配使用】

定義佈局變數@count,如果@count值小於10,執行WHILE迴圈操作中的語句塊,輸入語句如下。

DECLARE @count INT;

SELECT @count=0;

WHILE @count < 10

BEGIN

          PRINT 'count=' + CONVERT(VARCHAR(8),@count)  --CONVERT用來把INT型別轉化成浮動字元型VARCHAR

          SELECT @count=@count+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

 

 

    

 

 

 

        

轉載於:https://www.cnblogs.com/osmondwang/p/7253060.html

相關文章