好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > SQL中一些小巧但常用的關鍵字小結

SQL中一些小巧但常用的關鍵字小結

熱門標簽:簡單的智能語音電銷機器人 小程序智能電話機器人 南昌呼叫中心外呼系統哪家好 ai電話電話機器人 怎么申請400熱線電話 泗洪正規電話機器人找哪家 河北便宜電銷機器人軟件 湖南保險智能外呼系統產品介紹 怎么去開發一個電銷機器人

前言

前面的幾篇文章中,我們大體上介紹了 SQL 中基本的創建、查詢語句,甚至也學習了相對復雜的連接查詢和子查詢,這些基本功相信你也一定掌握的不錯,那么本篇則著重介紹幾個技巧方面的關鍵字,能夠讓你更快更有效率的寫出一些 SQL。

下面話不多說了,來一起看看詳細的介紹吧

起別名

在實際的項目中,有時候我們的表名、字段名過于復雜以致于我們的 SQL 寫出來過長、過于復雜,這時候我們往往會通過起別名的方式將一些名字較長、較為復雜的字段或是表名簡化。

我們可以使用別名(Alias)來對數據表或者列進行臨時命名,既然是別名,也就是說并不會修改原表或列的原始名稱,僅僅用于當前查詢的簡介化顯示。

給表起別名:

select * from person as p
where p.id = 1;

一旦為表執行了別名,那么本次查詢的子查詢語句中都可以直接引用別名替代原表的引用。

給列起別名:

select name as n,age as a from perosn;

除了使用關鍵字 as 來給表或是列起別名外,還可以直接使用空格字符達到同樣的效果,但是個人認為要么全部使用 as 進行別名,要么全部使用空格進行別名,不要交叉使用使得你的 SQL 復雜又難以看懂。

消除重復記錄

有時候,我們的數據庫中會存在兩條完全一樣的數據,我們也叫做冗余數據,當然不希望在查詢數據的時候查出來這么些冗余的重復數據,我們要把它們過濾掉。

LeetCode 上的一道簡單題:

有一個courses 表 ,有: student (學生) 和 class (課程)。

請列出所有超過或等于5名學生的課。

例如,表:

+---------+------------+
| student | class  |
+---------+------------+
| A  | Math  |
| B  | English |
| C  | Math  |
| D  | Biology |
| E  | Math  |
| F  | Computer |
| G  | Math  |
| H  | Math  |
| I  | Math  |
+---------+------------+

應該輸出:

+---------+
| class   |
+---------+
| Math    |
+---------+

你可以花個一分鐘思考一下,運用我們之前的基本功,應該是不難的。

顯然是需要用到分組的,想要統計每門課有多少人選,就得按照學科進行分組,每個分組內就是該門學科選修的學生記錄。

那么 SQL 語句也就信手拈來了:

select class from courses
group by class
having count(student) >=5 

但是你提交后在海量測試用例下,會返回給你解答錯誤的提示,不信你試試,問題出在哪?

問題就出現在冗余數據這個邊界條件沒有被考慮,如果 A 選了兩次 Math,當我們對 Math 這個分組進行計數時就會多算一次選 Math 的人數,實際上這是不符合邏輯的,我們需要過濾掉那些重復選擇的數據記錄。

解決方案如下:

select class from courses
group by class
having count(distinct student) >=5 

有些人可能看出來了,我們在 count 函數的列參數前添加了一個 distinct 關鍵字,它表示如果 student 列的值重復出現的話只計數一次。

當然,distinct 除了可以在聚合函數中使用外,也可以直接用在查詢語句的列篩選階段,例如:

//取出所有的學生,不允許重復名字的學生同時出現
select distinct name from students

連接結果集

UNION 運算符可以將一個或多個 SELECT 語句的結果連接組合成一個結果集,但要求兩個或多個結果具有相同數量的列,列的數據類型相同,舉個例子:

構建一個學生表:

+----+------+----------+-------+
| id | name | uNo  | fees |
+----+------+----------+-------+
| 1 | 張三 | 15263501 | 18000 |
| 2 | 李四 | 15263506 | 15960 |
| 3 | 王二 | 15263512 | 2500 |
+----+------+----------+-------+

學生表主要有學生的姓名,學號和學費。

構建一個教師表:

+----+--------+------+--------+
| id | name | tNo | salary |
+----+--------+------+--------+
| 1 | 李老師 | 1001 | 10000 |
| 2 | 楊老師 | 1002 | 15000 |
| 3 | 曹老師 | 1030 | 5000 |
+----+--------+------+--------+

現在有一個需求,需要拿到全校所有人的姓名和編號,包括學生和老師。一般來說,我們兩次 select 查詢就好了,但是沒法合并在一個結果集中顯示,這是一個問題。

于是我們可以使用 union 來連接兩個結果并在一張表中顯示出來:

select name,uNo from students
union
select name,tNo from teacher

查詢結果:

+--------+----------+
| name   | uNo      |
+--------+----------+
| 張三   | 15263501 |
| 李四   | 15263506 |
| 王二   | 15263512 |
| 李老師 | 1001     |
| 楊老師 | 1002     |
| 曹老師 | 1030     |
+--------+----------+

看起來是不是直觀了很多,除此之外的是,如果兩個結果集中存在完全重復的數據記錄,合并后的結果集中不會重復出現該數據記錄。

當然了,如果你不需要在合并結果集的時候刪除掉重復的數據行,你可以轉而使用關鍵字 UNION ALL 替代 UNION。

TOP

TOP 子句用于從一張數據表中取回前 N 個或者 X% 的記錄,但是需要注意的是,沒有一個數據庫實現是支持 TOP 的,各自有各自的關鍵字作為替代,例如 MySQL 和 SQLserver 使用 LIMIT 關鍵字,Oracle 使用 ROWNUM 關鍵字。

例如:

select * from students limit 2;

MySQL 數據庫取出前兩條數據,等效的 Oracle 數據庫寫法:

select * from students
rownum = 2

以上的一些關鍵字雖然逐個看起來很簡單,但有時候可能會幫上你大忙的,不要忘記使用它們!。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • SQL語句的各個關鍵字的解析過程詳細總結
  • sql連接查詢中,where關鍵字的位置講解
  • sql中的left join及on、where條件關鍵字的區別詳解
  • Mysql帶And關鍵字的多條件查詢語句
  • MySQL單表多關鍵字模糊查詢的實現方法
  • MySQL 5.7中的關鍵字與保留字詳解
  • sql server關鍵字詳解大全(圖文)

標簽:柳州 荊門 景德鎮 淮安 瀘州 威海 江蘇 那曲

巨人網絡通訊聲明:本文標題《SQL中一些小巧但常用的關鍵字小結》,本文關鍵詞  SQL,中,一些,小巧,但,常用的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL中一些小巧但常用的關鍵字小結》相關的同類信息!
  • 本頁收集關于SQL中一些小巧但常用的關鍵字小結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美老肥妇bbwbbwbbwpics| 精品伊人久久久大香线蕉欧美| 久久精品久久综合| 新毛片基地| 艳妇的名器| 国产??老女人??| 美女一级毛片免费观看| 又爽又黄又无遮挡的电影| 91啪国自产在线高清观看| yy6080午夜一级毛片超清| 公交车上3p嗯啊呻吟18p| 日本动态图45式动态激烈图| 日韩欧美一二三区| 色黄大片十大禁片| 日本人妻精品动漫H无码樱花动漫| 亚色网址| 久久久久综合| 5060网午夜一级毛片在线看| 国产午夜福利片国产一级A片小说| 日本精品99| 亚洲sss综合天堂久久久| 曰夲卖婬片免费看9.1| 刘玥AV无码专区88| 湿濡的女人免费观看| 朱可娃传小说| 久久精品亚洲综合| 无码精品日韩专区第一页| 亚洲欧美在线中文| 欧美老妞| 男男gaygay男男巨大的| 色欲av人妻精品一区二| 欧美AAAAAA一片色情A片| 高清欧美不卡一区二区三区| 国产一区二区三区不卡观| 电影鸭完整版国语| 边摸边脱边吃奶啪啪流水| 黄大片日本一级在线a| 狠狠狠地啪香蕉| 老师办公室被吃奶好爽在线观看| 美女被羞羞在线观看漫画| 零的骚浪日记H在线观看|