日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL操作实战(一):关键字 函数

發布時間:2024/1/17 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL操作实战(一):关键字 函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


以下為數據庫sqltest中的三張表,其結構和內容(部分)如下:

1. 關鍵字

①EXISTS、NOT EXISTS

EXISTS關鍵字:當EXISTS里的條件語句能夠返回記錄行時,條件為真,返回當前loop到的這條記錄;反之,當前loop到的這條記錄被丟棄。
NOT EXISTS關鍵字:NOT EXISTS與EXISTS相反,也就是當EXISTS條件有結果集返回時,loop到的記錄將被丟棄,否則將loop到的記錄加入結果集。

  • 統計沒有參加所有考試的學生
mysql> SELECT *-> FROM t_stu_profile b-> WHERE NOT EXISTS(-> SELECT *-> FROM t_score a-> WHERE a.stu_id = b.stu_id)-> ; +--------+----------+--------+------+----------+ | Stu_id | Stu_Name | Gender | Age | Class_id | +--------+----------+--------+------+----------+ | 5 | 王五 | F | 17 | 0614 | | 6 | 趙七 | F | 16 | 0615 | +--------+----------+--------+------+----------+

2. 函數

①COUNT()

COUNT()函數有兩種使用方式:
①COUNT(*):對表中行的數目進行計數,不管表列中包含的是空值(NULL)還是非空值;
②COUNT(col_name):對特定列中具有值的行進行計數,忽略NULL值;
③COUNT(col_order):效果同上,當col_order=1,則表明對第1列進行計數。

  • 應用場景:查找各門課程的記錄數量
# COUNT(*) mysql> SELECT lesson_id, COUNT(*) AS nums-> FROM t_score-> GROUP BY lesson_id-> ; +-----------+------+ | lesson_id | nums | +-----------+------+ | L001 | 4 | | L002 | 4 | | L004 | 1 | | L003 | 3 | | L005 | 2 | +-----------+------+# COUNT(col_name) mysql> SELECT lesson_id, COUNT(lesson_id) AS nums-> FROM t_score-> GROUP BY lesson_id-> ;# COUNT(col_order) mysql> SELECT lesson_id, COUNT(2) AS nums-> FROM t_score-> GROUP BY lesson_id-> ;
②GROUP_CONCAT()

GROUP_CONCAT()函數:實現分組聚合

GROUP_CONCAT(id ORDER BY id DESC SEPARATOR ‘_’)

③SUBSTRING_INDEX()

SUBSTRING_INDEX()函數:切分

SUBSTRING_INDEX(str, delim, count)
str:被截取字段
delim:分隔符
count:計數,count為正,從左往右數,取第n個分隔符的左邊的全部內容;count為負,從右往左數,取第n個分隔符的右邊的全部內容

  • 應用場景:查找每科的最高分

實現步驟:
①將表t_score中的記錄按 lesson_id 分組,GROUP_CONCAT(score ORDER BY score DESC SEPARATOR '_');
②利用SUBSTRING_INDEX(t.scores, '_', 1)函數進行切分。

mysql> SELECT t.lesson_id, SUBSTRING_INDEX(t.scores, '_', 1) AS max_score-> FROM(-> SELECT lesson_id, GROUP_CONCAT(score ORDER BY score DESC SEPARATOR '_') AS scores-> FROM t_score-> GROUP BY lesson_id) t-> GROUP BY t.lesson_id-> ; +-----------+-----------+ | lesson_id | max_score | +-----------+-----------+ | L001 | 100 | | L002 | 91 | | L003 | 86 | | L004 | 75 | | L005 | 98 | +-----------+-----------+

總結

以上是生活随笔為你收集整理的MySQL操作实战(一):关键字 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。