mysql練習 —— 關於一些函式的使用

程序计算机人發表於2024-05-07

  學校作業,拿來記錄一下。(老師出的習題貌似是從一本書上拿到的)

  Q1:

    使用RAND()函式來獲得3個隨機值。

  A1:

  解析:rand()函式,獲得隨機值,產生0-1的隨機值。(random ,隨機)

  Q2:

    求3和4的平方根。

  A2:

  解析:sqrt()用於求解平方根。

  Q3:

    求7.2和-7.2的絕對值。

  A3: 

  解析:直接使用abs()就行了(哦對了,解析一下,mysql的值是一個表,一個列也是一個表,所以可以直接用select function())

  Q4:

    求小於或等於-3.5或6.8的最大整數,大於或等於-3.5或6.8的最小整數。

  A4:

  解析:小於或者等於某個數使用floor() (floor 下限),大於或者等於某個數使用ceiling()(ceiling 天花板)

  Q5:

    求8.546小數點後2位的值和四捨五入的整數值。

  A5:

    解析:我覺得不用解析了。

  Q6:

    求X的ASCII碼值。

  A6:  

   Q7:    

    將ASCII碼值88、89、90組合成字串。

    A7:   

  

  Q8: 

    求joyful左側和右側開始的3個字元。

  A8:

  

  Q9:

    查詢字串”計算機網路”的長度。

  A9:   

  Q10:   

    將”資料庫原理與應用”中的”原理與應用”替換為”技術”。

  A10:    

  

  Q11:  

    返回字串joyful的從第4個字元開始的3個字元。

  A11: 

  Q12:   

    獲取當前日期。

  A12:  

  Q13:   

    獲取當前時間。

  A13:  

  Q14:     

   獲取當前日期和時間。

  A14:

  Q15:

    查詢成績表score,如果分數列的值大於或等於80分,則輸出”良好”,否則輸出”一般, 不及格或空值”。

  A15:

  Q16: 

    使用IFNULL()函式做條件判斷。

  A16:   

  解析:IFNULL() 函式用於判斷第一個表示式是否為 NULL,如果為 NULL 則返回第二個引數的值,如果不為 NULL 則返回第一個引數的值。(ifnull,將這裡的if看成mysql中的if語句就可以了)

  Q17: 

    獲取當前資料庫的版本號。

  A17:   

  Q18:   

    修改MySQL的結束符為“//”。

   A18: 

    解析:delimiter,翻譯過來是定界符。

  Q19:   

    建立一個不帶引數的儲存過程P_str,輸出“Hello MySQL!”。

  A19:

  解析:儲存過程需要修改定界符,儲存過程在之前的刷題中說過了。

  Q20:   

    建立一個帶引數的儲存過程P_maxGrade,查詢指定學號學生的最高分。

  A20:   

    解析:看實踐就懂了,很像類。

  Q21:

    建立儲存過程P_math,如果”高等數學”課程的平均成績大於80分,則顯示”高等數學成績良好”,否則顯示”高等數學成績一般”。

  A21:  

  

  Q22:   

    建立儲存過程P_title,將教師職稱轉變為職稱型別。

  A22:

    解析:建議手打一遍。declare宣告儲存過程內部變數。into 關鍵詞是用在select語句的賦值關鍵詞。在儲存過程中,case語句是如上圖寫的那樣子。out 參數列示一定會輸出。

    

    Q23:   

    建立儲存過程P_integerSum,計算1~100的整數和。:

    A23: 

    解析:邏輯都很簡單。需要注意的是while 在儲存過程中的寫法。(有點像dowhile欸)

  Q24:  

    建立儲存過程P_oddSum,計算1~100的奇數和。

  A24:  

   解析:

        然後就是,:= 和=都可以表示賦值,在set語句裡面。然後在其他語句裡面,=是表示比較的意思(目前來看是這樣的)       

1、while是滿足條件才執行迴圈,repeat是滿足條件退出迴圈;

2、while在首次迴圈執行之前就判斷條件,最少執行0次,repeat是在首次執行迴圈之後才判斷條件,迴圈至少執行一次。

  Q25:  

    建立儲存過程P_factorial,計算10的階乘。

  A25:    

  解析:• 標籤label可以加在begin…end語句以及loop, repeat和while語句
       • 語句中透過iterate和leave來控制流程,iterate表示返回指定標籤位置,leave表示跳出標籤

     可以理解成一個想要變成誰就變成誰的變形怪。至於為什麼要有標籤這個東西我還沒有搜到。

   Q26:    

    建立一個儲存過程,計算student表中行的數目。

   A26:  

    解析:

      1、解釋:

        在mysql的儲存過程中經常會看到這句話:DECLARE CONTINUE HANDLER FOR NOT FOUND。

        它的含義是:若沒有資料返回,程式繼續,並將變數IS_FOUND設為0 ,這種情況是出現在select XX into XXX from tablename的時候發生的。

      2、每個遊標必須使用不同的declare continue handler for not found set done=1來控制遊標的結束。(參考自DECLARE CONTINUE HANDLER FOR NOT FOUND - 雨的印記o - 部落格園 (cnblogs.com)

      大致意思其實是有一個declare ……handler ,如果沒有資料返回的話,那麼就將found設定成false。參考自MYSQL-DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND=FALSE_declare continue handler for not found set-CSDN部落格

       後面的語句也很簡單,就是一個遊標在讀資料。

  

    Q27:  

    建立向學生表插入一條記錄的過程P_insertStudent,並呼叫該過程。

    A27:

    Q28:  

    建立修改學生專業和總學分的過程P_updateSpecGrade,並呼叫該過程。

    A28:   

    Q29:   

    建立刪除學生記錄的過程P_deleteStudent,並呼叫該過程。

    A29: 

    Q30:  

    刪除儲存過程P_insertStudent。

    A30:  

    Q31:  

    建立一個儲存函式F_courseName,由課程號查課程名。

    呼叫儲存函式F_courseName。

    刪除儲存函式F_courseName。

    A31:

    解析:deterministic , 確定性。

    

相關文章