SQL Server學習之路(六):“增刪改查”之“查”

来源:http://www.cnblogs.com/PyLearn/archive/2017/10/09/7642236.html
-Advertisement-
Play Games

0.目錄 1. "前言" 2. "最基本的SQL查詢語句" 3. "select...from..." 3.1 "“\ ”與“Top num \ ”" 3.2 "查詢指定列" 3.3 "Isnull函數:判斷空值" 3.4 "使用"+"將"列"與"字元串"連接起來(使用as重命名)" 4. "ord ...


0.目錄

1.前言

2.最基本的SQL查詢語句

3.select...from...

4.order by

5.where

6.group by & having

1.前言

增刪改查都是對數據的操作,其中“查”對應的SQL語句便是“select”,也就是“選擇”的意思。
本篇主要介紹數據的查詢,主要使用SQL Server提供的T-SQL語句查詢數據。
本篇主要參考了慕課網的視頻SQL Server基礎--T-SQL語句,以及部分參考了網易雲課堂的視頻SQLServer資料庫基礎,另外還參照了一下w3school的SQL 教程。如果有時間的話,推薦去看一下視頻課程。

2.最基本的SQL查詢語句

最基本的SQL查詢語句語法如下:

SELECT <table fields list>
FROM <table names list>
WHERE <row constraints specification>
GROUP BY <grouping specification>
HAVING <grouping selection specification>
ORDER BY <order rules specification>

Tips & Tricks:
1、Select...From... 語句是必須的。
2、Where, group by 以及 order by 三個語句不是必須的。

上面的語法先不必死記硬背,以下會依次介紹他們的功能。

3.select...from...

3.1 “*”與“Top num *”

select * from student
-- "*"代表選擇所有,即查詢student表中的所有數據
select Top 5 * from student
-- "Top num"代表選擇前num行,即查詢student表中的前num行數據

3.2 查詢指定列

select sno, sname
from student
-- 如果只想看student表中的學號和姓名列,那就只需要查詢指定列

3.3 Isnull函數:判斷空值

select cno, cname, isnull(cpno, ''), ccredit
from course
-- isnull(cpno,'')將cpno中的NULL值置空,用戶就看不到NULL了,只能看見空白。但是列的名字會變為(No column name/無列名)

原表如下:

查詢出的表如下:

3.4 使用"+"將"列"與"字元串"連接起來(使用as重命名)

select sno, sname as '姓名',
'學號是' + sno + '的同學叫' + sname +'.' as IDname
from student
-- 使用"+"將兩列進行合併
-- 使用"as"將列名重命名

4.order by

原表:

4.1 asc(正序)

select *
from FactSalesQuota
order by SalesAmountQuota
-- 預設就是asc正序排序(從小到大)

4.2 desc(倒序)

select *
from FactSalesQuota
order by EmployeeKey desc
-- desc倒序排序(從大到小)

4.3 其他

select *
from FactSalesQuota
order by EmployeeKey desc, SalesAmountQuota
-- 先按EmployeeKey倒序排序,如果EmployeeKey相同再按SalesAmountQuota排序

5.where

5.1 比較運算符

-- 比較運算符有 =、>、<、>=、<=、<>("<>"是不等於的意思)
select *
from student
where sdept = '理學院'

select *
from student
where sage >= 20

select *
from student
where ssex <> '男'

5.2 or 或 and

-- and就是兩個條件都要滿足,or就是滿足一個條件即可
-- and就是兩個條件都要滿足,or就是滿足一個條件即可
select *
from student
where sdept = '理學院' and sage >= 20

select *
from student
where sage >= 20 or sno = '0001'

select *
from student
where ssex = '男' and ssex = '女'


可以看到,沒有既是"男"又是"女"的學生,所以第三張表沒有任何數據。

5.3 Like "%" 或 "_" 通配符
原表:

-- like代表要模糊查找
-- "%"代表任意符,表示可以有任何東西也可以沒有
-- "_"代表占位符,就是有且僅有一個字母,但是忘記了那個字母具體是什麼
select *
from FactCallCenter
where Shift like 'AM'
-- like'Shift'代表精確查找'AM',相當於where Shift = 'AM'

select *
from FactCallCenter
where Shift like 'PM%'
-- like 'PM%'代表以PM開頭的所有字元串
-- like '%PM'代表以PM結尾的所有字元串

select *
from FactCallCenter
where Shift like '%M%'
-- like '%M%'代表M前面和後面都可以有任何東西

select *
from FactCallCenter
where Shift like 'PM_'
-- like 'PM_'代表PM後面有且僅有一個字母或者數字,不能是空

5.4 in 或 not in

select *
from FactCallCenter
where DateKey in ('20101101', '20101105', '20101110')

select *
from FactCallCenter
where WageType not in ('weekday')
-- 相當於where WageType <> 'weekday'

5.5 is null 或 is not null

select *
from DimProduct
where ProductSubcategoryKey is null

select *
from DimProduct
where ProductSubcategoryKey is not null

5.6 between...and...

操作符 BETWEEN ... AND 會選取介於兩個值之間的數據範圍。這些值可以是數值、文本或者日期。(在SQLServer中兩個端點的值都會包括)
例如:

select *
from FactCallCenter
where DateKey between '20101105' and '20101107'
-- DateKey在20101105-20101107範圍內的所有數據

-- 如果要取不在這個範圍的則可以用以下語句
select *
from FactCallCenter
where DateKey not between '20101105' and '20101107'

6.group by & having

6.1 常用的聚合函數 & 經典查詢語句

常用的函數有:
count、Avg、Min、Max、Sum

6.2 count

select count(*)
from FactCallCenter
where Shift = 'AM'
-- count用來統計符合條件的行數

6.3 Avg、Min、Max、Sum

select
Avg(LevelOneOperators) as AverageLevelOneOperators
,Min(LevelOneOperators) as MinimumLevelOneOperators
,Max(LevelOneOperators) as MaximumLevelOneOperators
,Sum(LevelOneOperators) as SummaryLevelOneOperators
from FactCallCenter
-- Avg平均值,Min最小值,Max最大值,Sum求和

6.4 group by & having 的作用

select Shift, Max(LevelOneOperators) as LevelOneOperators最大值
from FactCallCenter
where Shift is not null
group by Shift
-- group by Shift表示對不同的Shift值,分別求LevelOneOperators的最大值

select Shift, Max(LevelOneOperators) as LevelOneOperators最大值
from FactCallCenter
where Shift is not null
group by Shift
having Max(LevelOneOperators) > 2
-- group by Shift表示對不同的Shift值,分別求LevelOneOperators的最大值
-- having Max(LevelOneOperators) > 2 進一步對結果進行篩選


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

-Advertisement-
Play Games
更多相關文章
  • 1.安裝jdk8 並配置環境變數 2.安裝android sdk並配置環境變數 使用了adt-bundle-windows-x86_64-20140702集成包 3.安裝gradle-4.2 4.安裝node.js 5.安裝cordova 網上找了cnpm的方式 但是一直報錯終端輸入確認:cordo ...
  • 該源碼是停車場管理軟體附帶源代碼 J2EE服務端+android客戶端,也是一套停車場管理車輛進出的管理軟,喜歡的朋友可以看看吧。應用的後臺管理主要功能介紹:1 機構管理 ,機構有從屬管理<ignore_js_op> 2 車場管理 ,車場隸屬於某個機構<ignore_js_op> 3 後臺用戶管理, ...
  • 當一個應用程式在Android中安裝後,我們在使用應用的過程中會產生很多的數據,應用都有自己的數據,那麼我們應該如何存儲數據呢? 數據存儲方式 Android 的數據存儲有5種方式: 1. SharedPreferences存儲數據 SharedPreferences數據存儲,也叫作xml存儲。這是 ...
  • 使用SQL語句查詢是開發中常做的事,在實際的情況中,可能會遇到,查詢包含某個關鍵詞的所有行,而這個關鍵詞正好也是SQL SERVER的關鍵詞。 下麵有一張表Member,有如下的數據: 假如需要查詢名字中包含%字元的數據,首先我們會有這樣的查詢語句: SELECT * FROM dbo.Member ...
  • 一、關於Oracle用戶許可權表的認知 在Oracle中有很多的用戶,不同的用戶有著不同的許可權,在學習階段,一般使用的是scott用戶,並且對該用戶的表進行增刪改查等操作。下麵就簡單介紹一下常見的用戶。 sys;//系統管理員,擁有Oracle的最高的許可權; system;//本地管理員,擁有次高的權 ...
  • 隨著業務發展和數據積累,你的 Redis 伺服器變得越來越臃腫了,甚至記憶體爆滿影響了業務,那麼它是如何一步一步走到這個地步,又如何解決呢?希望本文能幫助到你。 ...
  • JDBC封裝 優點: 附註: DAO模式提供了訪問關係型數據系統所需操作的介面,將數據訪問和業務邏輯分開,對 上層提供面向對象的數據訪問介面. DAO模式實現兩層分離: 代碼間分工明確,數據訪問層代碼不影響業務邏輯層代碼,這也符合單一職能原則,降低了耦合度,提高了代碼的可復用性。。 隔離了不同的數據 ...
  • 創建用戶的語法: Create user `username`@host [Identified by [password] `password`]; 例: create user `teacher`@`localhost` identified by ‘12345’, 或者 create user ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...