亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

讀《程序員的SQL金典》[1]--基礎數據檢索

2024-07-21 02:50:51
字體:
來源:轉載
供稿:網友
讀《程序員的SQL金典》[1]--基礎數據檢索

前言

《程序員的SQL金典》這本書是楊中科老師的,拜讀了一下,簡單做了讀書筆記供以后翻閱。僅供學習分享,要想細讀的話推薦購買原版呀!

這次讀書的時候用了新的辦法把看書計劃進行了量化,雖然簡單,發現還是有效果的。

image


1. Count(*)與Count(column)區別

Count(*)統計結果集總條數;

Count(column)統計結果集中column字段不為null的總條數。

2. 低效的where 1=1

為了實現動態拼接查詢條件的功能,有時我們會使用where 1=1這樣看似聰明的解決方案。但實際上會造成很大的性能損失,這個條件使得數據庫無法使用索引等優化查詢策略,數據庫會進行全表掃描。當數據量較大的時候查詢速度可能會變得很慢。(在SQL Server2012等數據庫中,對這種情況其實已經做了優化)

優化前:

PRivate static void CreateWhere(QueryParam param)        {    string where = " where 1=1 " ;    if (param != null )            {    if (param.Haspicture)                {                    where += " AND picture<>'' " ;                }    if (param.ClassId > 0)                {                    where += " AND ClassID=@classid " ;                }    if (param.AuthorId > 0)                {                    where += " AND UserId=@UserId";                }            }        }

可以改用下面的邏輯實現。

private static void CreateWhere1(QueryParam param)        {    StringBuilder where = new StringBuilder( " where 1=1 ");    bool hasWhere = false ;    if (param != null )            {    if (param.HasPicture)                {                    hasWhere = AppendWhereIfNeed(where, hasWhere);                    where.AppendLine( "picture<>'' ");                }    if (param.ClassId > 0)                {                    hasWhere = AppendWhereIfNeed(where, hasWhere);                    where.AppendLine( "ClassID=@classid ");                }    if (param.AuthorId > 0)                {                    hasWhere = AppendWhereIfNeed(where, hasWhere);                    where.AppendLine( "UserId=@UserId");                }            }        }    private static bool AppendWhereIfNeed( StringBuilder where, bool hasWhere)        {    if (hasWhere)            {                where.Append( " and ");            }            else            {                where.Append( " where ");            }    return true ;        }
3.Group By分組

分組查詢時,所有SELECT語句中出現的列必須出現在Group By子句中(聚合函數除外。)

實例:

①錯誤

SELECT FAge ,FSalary FROM T_Employee GROUP BY FAge

--選擇列表中的列 'T_Employee.FSalary' 無效,因為該列沒有包含在聚合函數或 GROUP BY 子句中。

②正確

SELECT FAge ,Max( FSalary) FROM T_Employee GROUP BY FAge

FAge (無列名)22 1200.0023 5000.0025 8300.0028 6200.00

4.Having 語句

①聚合函數不能出現在where語句中,此時可以使用having語句代替。

SELECT FAge , COUNT(*) AS CountOfThisAge FROM T_EmployeeGROUP BY FAge--WHERE COUNT(*)>1--錯誤HAVING COUNT (*)> 1--正確

②HAVING子句位置要在GROUP子句之后;

③HAVING子句也可以像where一樣使用較復雜的過濾條件

SELECT FAge ,COUNT(*) AS CountOfThisAge FROM T_EmployeeGROUP BY FAgeHAVING COUNT (FAge)= 1 OR COUNT(FAge )=2SELECT FAge ,COUNT(*) AS CountOfThisAge FROM T_EmployeeGROUP BY FAgeHAVING COUNT (FAge) IN(1 ,2)
5.ROW_NUMBER() OVER(排序規則)

ROW_NUMBER()函數可以計算數據的行號。但該函數不能放在WHERE子句中,如果想根據行號進行過濾可以使用子查詢來實現。

SELECT * FROM(SELECT ROW_NUMBER () OVER (ORDER BY FSalary DESC) num, FName,FSalaryFROM T_Employee) AWHERE A .num BETWEEN 1 AND 3
6.DISTINCT

DISTINCT是針對這個結果集取消重復的,而不是針對單個列。

7.字符串計算函數

LEN(string)可以計算字段的長度。

SELECT FName ,LEN( FName) AS NameLengthFROM T_EmployeeWHERE FName IS NOT NULL

SUBSTRING(str,start,length):

字符串截取函數。str表示原字符串,start為開始位置(從1開始計算),length為截取的長度。

SELECT FName ,SUBSTRING( FName,1 ,2) AS NameLengthFROM T_EmployeeWHERE FName IS NOT NULL

執行結果:

FName NameLengthTom ToJerry JeJane Ja

8.UNION

UNION可以進行結果集的合并。如果想合并之后自動去掉重復行,可以使用UNION ALL.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人高潮免费观看精品| 国产精品色视频| 中文字幕亚洲欧美日韩2019| 精品久久久久久中文字幕| 亚洲qvod图片区电影| 国内精品久久久久久中文字幕| 91欧美激情另类亚洲| 国产偷国产偷亚洲清高网站| 亚洲午夜久久久影院| 久久成人综合视频| 国内精品一区二区三区| 亚洲春色另类小说| 91免费人成网站在线观看18| 久久99精品久久久久久青青91| 久久久综合免费视频| 77777少妇光屁股久久一区| 在线电影中文日韩| 91精品久久久久久久| 国产精品视频在线播放| 欧美激情久久久久久| 国产欧美一区二区| 欧美激情亚洲视频| 欧美大片va欧美在线播放| 国产黑人绿帽在线第一区| 成人av色在线观看| 日韩成人xxxx| 亚洲色无码播放| 国内精品小视频在线观看| 日本精品在线视频| 尤物yw午夜国产精品视频| 亚洲91精品在线观看| 亚洲va久久久噜噜噜| 欧美日韩性生活视频| 视频一区视频二区国产精品| 91亚洲永久免费精品| 正在播放欧美视频| 最新国产成人av网站网址麻豆| 亚洲va国产va天堂va久久| 国产一区二中文字幕在线看| 欧美大胆a视频| 国产成人一区二区三区| 亚洲国产日韩一区| 欧美亚洲国产精品| 欧美黑人性猛交| 国产成人在线视频| 91精品国产99久久久久久| 欧美日韩国产成人在线观看| 日韩av有码在线| 成人网页在线免费观看| 18一19gay欧美视频网站| 亚洲人午夜色婷婷| 亚洲欧美制服另类日韩| …久久精品99久久香蕉国产| 91av在线不卡| 精品久久久久久久久久久久| 国产精品视频中文字幕91| 午夜精品福利电影| 91中文在线视频| 久久久久久高潮国产精品视| 欧美日韩ab片| 欧美激情精品久久久久久免费印度| 国产精品海角社区在线观看| 亚洲人成在线播放| 久久久久中文字幕| 亚洲国产精品99| 国产亚洲精品久久久优势| 日韩在线不卡视频| 91免费精品国偷自产在线| 久久久久久久久国产精品| 午夜精品久久久久久99热软件| 日韩精品视频在线观看网址| 亚洲激情视频在线观看| 91精品国产网站| 国产欧美日韩最新| 日韩av免费在线观看| 成人欧美一区二区三区黑人孕妇| 亚洲一品av免费观看| 69国产精品成人在线播放| 最近的2019中文字幕免费一页| 亚洲美女福利视频网站| 久热精品视频在线| 日韩av影视综合网| 国产剧情久久久久久| 欧美极品少妇与黑人| 亚洲男人天堂手机在线| 国产精品都在这里| 亚洲香蕉成视频在线观看| 亚洲国产高清高潮精品美女| 热久久免费国产视频| 亚洲xxxxx性| 亚洲国产精品字幕| 国产一级揄自揄精品视频| 国产精品爽爽爽爽爽爽在线观看| 国产精品高潮呻吟久久av无限| 午夜精品一区二区三区在线| 欧美肥臀大乳一区二区免费视频| 日本三级韩国三级久久| 国产精品色视频| 欧美高清第一页| 国产成人短视频| 91精品国产自产91精品| 日日狠狠久久偷偷四色综合免费| 久久久久久久久久久人体| 日韩国产高清污视频在线观看| 欧美激情视频在线| 久久久www成人免费精品| 中文字幕在线成人| 日韩精品一区二区三区第95| 久久99国产精品久久久久久久久| 57pao国产精品一区| 亚洲影视中文字幕| 日韩激情av在线免费观看| 欧美大胆在线视频| 亚洲tv在线观看| 夜色77av精品影院| 国产精品久久999| 亚洲第一福利网站| 国产欧美在线观看| 亚洲精品一区二区网址| 亚洲成人亚洲激情| 久久久www成人免费精品张筱雨| 久久国产精品亚洲| 亚洲午夜未满十八勿入免费观看全集| 欧美激情喷水视频| 国产福利精品av综合导导航| 欧美日韩国产丝袜美女| 深夜福利亚洲导航| 欧美精品18videos性欧| 国产精品网红福利| 疯狂做受xxxx欧美肥白少妇| 九九久久综合网站| 久久99久国产精品黄毛片入口| 国产一区二区三区欧美| 亚洲国产成人在线视频| 91免费看片网站| 成人黄色大片在线免费观看| 97精品伊人久久久大香线蕉| 国产精品福利在线| 浅井舞香一区二区| 国产欧美一区二区三区久久人妖| 69久久夜色精品国产69乱青草| 日本成人在线视频网址| 狠狠色狠狠色综合日日小说| 清纯唯美日韩制服另类| 国产精品69精品一区二区三区| 亚洲欧美日韩第一区| 亚洲第一天堂av| 精品欧美aⅴ在线网站| 欧美日韩在线免费| 高清欧美性猛交| 国产精品美腿一区在线看| 国产有码一区二区| 在线成人一区二区| 亚洲最大中文字幕| 中文字幕日韩在线播放| 91精品国产九九九久久久亚洲| 夜夜嗨av色一区二区不卡| 国语自产在线不卡| 国产成人亚洲综合91| 国产成人精品久久二区二区| 欧美日韩国产精品一区二区三区四区| 久久久久国产精品免费| 色一情一乱一区二区| 色99之美女主播在线视频|