乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【JavaWeb】62:單表查詢,以及數(shù)據(jù)庫總結(jié)

       劉小愛v 2020-06-15

      今天是劉小愛自學(xué)Java的第62天。

      感謝你的觀看,謝謝你。

      話不多說,繼續(xù)數(shù)據(jù)庫的學(xué)習(xí):

      使用了數(shù)據(jù)庫可視化工具Navicat,感覺真香。

      比在DOS窗口中操作方便多了,那個(gè)黑乎乎的窗口真心不習(xí)慣,并且也沒有提示。

      今天詳細(xì)地學(xué)習(xí)下數(shù)據(jù)記錄的查詢,同時(shí)最后對這幾天的知識(shí)點(diǎn)做一個(gè)總結(jié)。

      一、基本查詢

      select,選擇選取的意思,在數(shù)據(jù)庫之中可以理解成查詢。

      ①查詢所有數(shù)據(jù)

      select  * from student;

      *即代表了所有數(shù)據(jù)的意思,格式為:

      select * from+表名

      ②查詢指定列的信息

      select name,gender from student;

      查詢表中name,gender這兩列的所有數(shù)據(jù),格式為:select+列名,列名,列名+from+表名

      列名之間用逗號隔開。

      ③條件查詢

      select * from student where name="比企谷八幡";

      查詢表中name為“比企谷八幡”的所有數(shù)據(jù),其中也可以選擇部分列的數(shù)據(jù),格式不再贅述。

      總之where后面填寫判斷條件。

      其中還有運(yùn)算符相關(guān)的查詢操作:

      ①查詢成績不及格的同學(xué)

      select * from student where score<60;

      即score<60的所有數(shù)據(jù)。

      ②查詢成績不等于90的同學(xué)

      不等于在SQL中有三種表示方式:

      • not score=90;

      • score!=90;

      • score<>90;

      ③查詢成績在80和90之間的數(shù)據(jù)

      也就是80<=score<=90,在SQL中有兩種方式:

      • between 80 and 90;

      • score>=80 and score<=90;

      and,即并且的意思。

      ④查詢成績?yōu)?8,95,100的同學(xué)

      在SQL中有兩種方式:

      • score in(88,95,100);

      • score=88 or score=95 or score=100;

      or,即或者的意思。上述均為條件查詢,也就是用where來說明判斷條件,只不過條件中設(shè)計(jì)到了運(yùn)算。

      二、模糊查詢、濾重和別名

      除了上述的基本查詢之外,還有模糊查詢:

      ①模糊查詢

      like,像的意思,可以用來模糊查詢:

      • name like ‘劉%’;其中%表示1個(gè)或多個(gè);

      • name like '劉_';其中_表示1個(gè)。

      其中第一個(gè)只要以劉開頭即可以,第二個(gè)以劉開頭的兩個(gè)字。

      ②查詢成績不為null的學(xué)生

      score is not null;

      這很好理解,從字面意思就能看出來。

      ③查詢成績?yōu)閚ull的學(xué)生

      score is null;

      ①過濾掉重復(fù)的數(shù)據(jù)

      distinct,清楚的、不同的意思,在這里可以理解成過濾,格式如下:

      select distinct+列名+from+表名

      其中列名可以有多個(gè)。

      ②給列名起別名

      可以給列名起一個(gè)別名,格式如下:

      select 列名 as 別名+from+表名

      就算取別名了,數(shù)據(jù)庫里的列名是沒有改變的。

      它就是一個(gè)渲染效果,所以as后面接什么都可以,字符串也不用加引號。

      其中as也可以省略,但最好不省略。

      ③列運(yùn)算

      這個(gè)也好理解,直接在查詢列名上+10即可。

      其中有一行數(shù)據(jù)score=null,在SQL中:null與任何數(shù)相加都為null。(有點(diǎn)類似于Java中的字符串)

      ④關(guān)于null的處理

      ifnull(列名,默認(rèn)值) ,如果列名為空,給它一個(gè)默認(rèn)值,圖中默認(rèn)值為0,這樣就能參與運(yùn)算了。

      三、排序查詢及聚合函數(shù)

      1排序查詢

      order,訂單、排序的意思,在數(shù)據(jù)庫中order就是排序的意思,和前面我們學(xué)的sort是一樣的。

      ①根據(jù)score排序查詢

      select * from+表名+order by+列名+desc

      • desc,在這里是降序的意思。

      • asc,即為升序。

      ②根據(jù)指定條件排序

      現(xiàn)在只對男生排序,故加一個(gè)where條件判斷。

      注意:where是緊接著from+表名后面的。

      其中排序默認(rèn)是升序,所以可以省略不寫。

      ②根據(jù)年齡、分?jǐn)?shù)組合排序

      多重排序,先根據(jù)前面的條件排序,再根據(jù)后面的條件排序。

      2聚合函數(shù)

      SQL語言中定義了部分的函數(shù),可以對查詢結(jié)果進(jìn)行操作,也就是聚合函數(shù)。

      ①統(tǒng)計(jì)數(shù)量

      count,數(shù)數(shù)的意思,即統(tǒng)計(jì)表示數(shù)據(jù)數(shù)量。

      • count(*):*代表所有,即查詢所有數(shù)據(jù),結(jié)果為5。

      • count(score):score這一列因?yàn)橛幸恍袛?shù)據(jù)為null,所以不計(jì)算在內(nèi),

      ②統(tǒng)計(jì)班上的總分

      sum,求和的意思。

      • sum(score):分?jǐn)?shù)這一列所有的數(shù)據(jù)求和。

      • sum(score+age):(分?jǐn)?shù)+年齡這兩列)所有的數(shù)據(jù)求和。

      ③統(tǒng)計(jì)班上的平均分

      avg,求平均數(shù)的意思,很好理解。

      • avg(score):分?jǐn)?shù)這一列求平均值。

      • avg(score+age):分?jǐn)?shù)+年齡這兩列求平均值。

      • sum(score)/count(*):總分除以總?cè)藬?shù)求平均值。

      這兩種的區(qū)別在于第一種如果數(shù)據(jù)為null,不加入運(yùn)算,第二種將nul的數(shù)據(jù)也加入運(yùn)算了。

      ④保留小數(shù)點(diǎn)數(shù)

      round(avg(score),2);2,即表示保留小數(shù)點(diǎn)數(shù)為2位,可自行設(shè)點(diǎn)想要保留的小數(shù)點(diǎn)數(shù)。

      此外,還有兩個(gè)聚合函數(shù):

      • max(score):求分?jǐn)?shù)這列的最大值。

      • min(score):求分?jǐn)?shù)這列的最小值。

      用法和上述一樣,就不再贅述了。

      再次強(qiáng)調(diào)

      • null是不參與運(yùn)算的。

      • 可以使用ifnull(列名,默認(rèn)值)給null設(shè)定一個(gè)默認(rèn)值。

      四、分組查詢及查詢語句執(zhí)行順序

      1分組查詢

      group,分組的意思,關(guān)鍵單詞為group by。

      ①分男女組查詢平均分

      根據(jù)性別gender分組查詢。

      格式為:select+列名+from+表名+group by+列名

      ②根據(jù)特定條件分組查詢平均分

      前面的學(xué)習(xí)也知道了,where后面專門是接查詢條件的,但是在分組查詢中一般用having代替,其放在group by后面。

      2查詢語句執(zhí)行順序

      用一個(gè)例子來說明執(zhí)行順序,如下圖:


      ①from+表名

      這是第1步,表中的所有數(shù)據(jù)。

      ②where+指定條件

      這是第2步,查詢出指定條件的數(shù)據(jù)。

      其中起別名:as+別名

      這是第2.5步,介于第1步和第2步之間。

      所以where后不能接別名,因?yàn)閯e名都沒執(zhí)行。

      ③group by+列名

      這是第3步,按照指定列名分組。

      其中聚合函數(shù):avg(列名)

      這是第3.5步,介于第3步和第4步之間。

      所以分組不能接聚合函數(shù)。

      ④having+條件

      這是第4步,所以having后的查詢條件,既可以有別名,也可以有聚合函數(shù)。

      而where就不行,因?yàn)閣here執(zhí)行的太早了。

      ⑤select+查詢語句

      這是第5步,查詢出對應(yīng)的數(shù)據(jù),也就是結(jié)果集。

      ⑥order by+列名+desc|asc

      查詢語句是最后執(zhí)行的,所以也可以接別名。

      面試題:where 和 having 的區(qū)別

      • having通常與group by結(jié)合使用。

      • where是在分組之前進(jìn)行過濾的,having 是在分組之后進(jìn)行過濾的。

      • having可以接聚合函數(shù)和別名,where都不可以,也就是說having查詢條件比where廣。

      查詢時(shí),如非必要,用where的效率更高。

      為什么?

      where先執(zhí)行,先將數(shù)據(jù)篩選之后會(huì)減少計(jì)算量。

      后續(xù)再進(jìn)行其他條件判斷,可以提高查詢效率。

      最后

      對這幾天知識(shí)點(diǎn)做一個(gè)總結(jié):

      數(shù)據(jù)庫合集 【JavaWeb】61:數(shù)據(jù)記錄基本操作 【JavaWeb】60:數(shù)據(jù)表基本操作 【Javaweb】59:數(shù)據(jù)庫基本操作

      謝謝你的觀看。

      如果可以的話,麻煩幫忙點(diǎn)個(gè)贊,謝謝你。

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多