讀SQL學習指南(第3版)筆記04_查詢入門

来源:https://www.cnblogs.com/lying7/archive/2023/08/24/17648220.html
-Advertisement-
Play Games

![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230822115524099-438612716.png) # 1. 在執行語句之前,會先檢查下列事項 ## 1.1. 是否有許可權執行該語句 ## 1.2. 是否有許可權訪問指 ...


1. 在執行語句之前,會先檢查下列事項

1.1. 是否有許可權執行該語句

1.2. 是否有許可權訪問指定的數據

1.3. 語句的語法是否正確

2. select子句

2.1. select子句是select語句中的第一個子句,但最後才會被資料庫伺服器評估

2.2. 決定哪些列應該包含在查詢的結果集中

2.3. 字面量

2.4. 表達式

2.5. 內建函數調用

2.6. 用戶自定義函數調用

2.7. select  version(),database(),user()

2.8. 列的別名

2.8.1. AS是可選項

2.9. 移除重覆數據

2.9.1. select後面直接添加關鍵字distinct來實現

2.10. 關鍵字all是預設的

2.10.1. 不需要指明

2.10.2. 如果不想讓伺服器移除重覆數據或者確定結果集中不會出現重覆數據,可以使用關鍵字all代替distinct

2.11. 生成一組不同的結果時需要對數據進行排序,這對於大型結果集會很耗時

2.12. 不要陷入為了確保沒有重覆數據而使用distinct的陷阱,而應該花時間充分理解所處理的數據,以便瞭解是否可能出現重覆數據

3. from子句

3.1. 定義了查詢要用到的數據表以及連接數據表的方式

3.2. 寬泛定義的數據表

3.2.1. 永久數據表(使用create table語句創建)

3.2.2. 派生數據表(由子查詢返回並保存在記憶體中的行)

3.2.2.1. 子查詢由一對小括弧包圍,可以出現在select語句的各個部分中

3.2.2.2. 子查詢的作用在於生成其他所有查詢子句中可見的派生數據表,以及與from子句中的其他數據表交互

3.2.3. 臨時數據表(保存在記憶體中的易失數據)

3.2.3.1. mysql

   -> CREATE TEMPORARY TABLE actors_j
    ->  (actor_id smallint(5),
    ->   first_name varchar(45),
    ->   last_name varchar(45)
    ->  );

3.2.3.2. 臨時保留在記憶體中,會話結束後就消失了

3.2.3.3. Oracle Database是一個例外,它會保留臨時數據表定義,以備後續會話使用

3.2.4. 虛擬數據表(使用create view語句創建)

3.2.4.1. 視圖是存儲在數據目錄中的查詢,其行為表現就像數據表,但是並沒有與之關聯的數據(這就是將其稱為虛擬數據表的原因)

3.2.4.2. 創建視圖時,不會生成或存儲額外的數據

3.2.4.3. 伺服器只是保留select語句,以備後用

3.2.4.4. 創建視圖的原因各種各樣,包含對用戶隱藏列、簡化複雜的資料庫設計

4. 數據錶鏈接

4.1. 如果from子句中出現多個數據表,則必須包含用於鏈接(link)這些數據表的條件

4.2. 定義數據表別名

4.2.1. 使用完整的數據表名稱

4.2.2. 為每個數據表指定別名,在查詢中使用該別名

4.2.3. 使用別名可以在不造成困惑的情況下(只要選擇合理的別名)編寫出更緊湊的語句

5. where子句

5.1. 一種機制,用於過濾掉結果集中不想要的行

5.2. 在混用不同的運算符時,應該堅持使用括弧對條件進行分組

5.2.1. 以便你自己、資料庫伺服器和後續人員都能夠意見統一地修改代碼

6. group by和having子句

6.1. 在返回結果集之前對數據進行處理,以便發現數據呈現的規律

7. order by子句

7.1. 使用原始列數據或基於列數據的表達式對結果集進行排序的一種機制

7.2. 可以通過關鍵字asc和desc來指定升序排序或降序排序

7.3. 預設為按照升序排序,如果希望按照降序排序,需要加入desc關鍵字

7.4. 降序排序多用於評級查詢

7.5. MySQL提供了limit子句以允許對數據進行排序,然後只保留前X行

7.6. 比如“顯示餘額最多的前5個賬戶”

7.7. 通過數字占位符進行排序

7.7.1. 查詢使用select子句中的第3列,按照降序進行排序

7.7.2. mysql

   -> SELECT c.first_name, c.last_name,
    ->   time(r.rental_date) rental_time
    -> FROM customer c
    ->   INNER JOIN rental r
    ->   ON c.customer_id = r.customer_id
    -> WHERE date(r.rental_date) = '2005-06-14'
    -> ORDER BY 3 desc;

7.7.3. 在編寫臨時查詢的時候使用位置引用列

7.8. 在編寫代碼時,則堅持按照名稱引用列


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近建立一個新項目準備寫一個小demo,新建項目時選的時.Net7。寫代碼的時候發現。Net7沒有系統的中文註釋,去官網下載的時候發現沒有關於.Net7的漢化文件包,最新的漢化包是。Net5的,可能是我沒找到,我這裡是把.Net5漢化包放到了.Net7下麵了,測試好用。 一、.NET Framewo ...
  • # C#文本轉語音(科大訊飛離線版) ### 引言 文本轉語音(Text To Speech),簡稱TTS,在很多業務場景會用到,比如廣播大廳,人機互動等。C#要實現TTS有不少選擇,比如調用System.Speech,此處就不細說了,下麵主要介紹一下C#調用科大訊飛的離線語音合成SDK來實現文本轉 ...
  • 本文主要介紹SignalR在實際項目中的應用,以及.NET Framework和.NET Core中如何去使用SignalR。SignalR是一個開放源代碼庫,可用於簡化嚮應用添加實時Web功能,實時Web功能使伺服器端代碼能夠將內容推送到客戶端。 ...
  • ## 一、為什麼要使用 LINQ 要理解為什麼使用 LINQ,先來看下下麵的例子 例子:要統計字元串中每個字母出現的頻率(忽略大小寫),然後按照從高到低的順序輸出出現頻率高於2次和其出現的的頻率。如果用傳統的 Sql 語句來寫,一定是非常的繁雜,如果用 LINQ 語句來寫,效果如下 ```c# st ...
  • [toc] # Linux運維工程師面試題(1) > 祝各位小伙伴們早日找到自己心儀的工作。 > 持續學習才不會被淘汰。 > 地球不爆炸,我們不放假。 > 機會總是留給有有準備的人的。 > 加油,打工人! ## 1 別名、內部命令、外部命令的執行順序 命令執行尋找順序:別名 > 內部命令 > 外部命 ...
  • [toc] ### 1.文件操作 #### 1.1 創建文件 ``` shell # touch+文件名 # 例子: # 創建一個文件 touch hello.c # 創建多個文件 touch hello.c hi.c ``` #### 1.2 刪除文件 ``` shell # rm+文件名 # 例 ...
  • 因為我用的是windows伺服器,因此需要一臺虛擬機,用來安裝centos,虛擬機的安裝網上好多教程,這裡不做過多介紹 這次同樣是按步操作 在本地伺服器創建下載目錄 -> 將yum文件下載到本地 -> 在遠程伺服器上創建目錄 -> 上傳文件到遠程伺服器目錄 -> 使用命令安裝yum到伺服器上 這次的 ...
  • # 任務與協程 ## 區別 > 一個程式可以只有任務、只有協程、二者都有,但不可以通過隊列/信號量互相傳遞數據 ## 任務特點 1. 任務之間可以互相獨立 2. 每個任務分配自己的堆棧,提高了RAM使用率 3. 操作簡單、按優先順序搶占式執行 4. 搶占容易導致重入(執行任務時被其他線程或進程調用了) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...