<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # having和where區別 **where語句字段,必須是”數據表中存在的”字段** **having:語句字段,必須是查詢結果集中存在的字段或者要么用聚合函數** 1:having子句同where子句一樣,進行條件判斷 2:where是針對磁盤進行判斷,進入到內存之后,會進行分組操作,分組的結果就需要having進行處理喲 3:having能做where能做的幾乎所有的事情,但是where卻不能做having能做的很多事情 4:,having能夠使用字段別名:where不能,where是從磁盤中取出數據,而名字只可能是字段,別名是字段進行到內存后才會產生 select \[all | distinct\] 字段或表達式列表 \[from子局\] \[where 子局\] \[group by子句\] \[having 子句\] \[order by子句\] \[limit 子句\]; select可以單獨用不跟from,如果想跟from可以from一個dual(偽表) all和distinct用于設定select出來的數據,是否消除’重復行’,可以不寫,那就是默認all,如果是distinct表示會消除 結果集中可以使用字段別名,但是where條件中要用表的名字 查詢時間戳用select unix\_timestamp(); # find_in_set基本語法 FIND_IN_SET(str,strlist) str 要查詢的字符串,strlist 字段名 參數以”,”分隔 如 (1,2,6,8) 如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個參數為NULL,則返回值為 NULL。這個函數在第一個參數包含一個逗號(‘,’)時將無法正常運行。 +----+---------+-----------+-------------+ | id | user_id | follow_id | follow_time | +----+---------+-----------+-------------+ | 13 | 15 | 16,15 | 1478096138 | | 14 | 15 | 17 | 1478177725 | | 15 | 15 | 19 | 1478181035 | +----+---------+-----------+-------------+ 比如這張表,SELECT * from test where FIND_IN_SET('5',follow_id);這樣是查不到的,返回值為null,因為follow_id中沒有”5”這個值,它不同于 like 模糊查詢,它是以“,”來分隔值 Find_IN_SET 是精確匹配,字段值以英文”,”分 # where子句: where中的字段要來自表不能用之前取的別名 算術運算符: +, -, \*, /, % 比較運算符: >, >=, <, <=, =(等于), <>(不等于), !=(不等于) =即代表賦值也代表比較運算 \[not\] between and 介于兩者之間或不介于2者之間 is null 為空 is not null 不為空 邏輯運算符: and, or, not # is運算符: xx is null:判斷某個字段是”null”值就是沒有值 xx is not null: 判斷某個字段不是”null”值 xx is true:判斷某個字段為真 xx is false:判斷某個字段為假 0, 0.0, ‘’, null # between運算符: 判斷某個值是否在給定值的范圍內---適用于數字類型 xx between 值1 and 值2 # in運算符: 給定確定數據的范圍判斷,后面羅列的字段用()包括 語法:xx in (值1,值2,值3,….) 表示字段在所列出中的一個就滿足條件 # like運算符 對字符串進行模糊查找 語法:xx like ‘要查找的內容’; %代表任何個數的任何字符 \_:它代表一個任何字符 要找%或\_,轉義就行了\\%和\\\_ # group by子句 分組 形式:group by 字段1 \[desc | asc\], 字段2 \[desc | asc\] 每一組的數量信息,就是用count(\*)獲得,count(字段名)不計空值,count(\*)計算空值 最大值:max(字段名) 最小值:min(字段名) 平均值:avg(字段名) 總和值:sum(字段名) 對取出來的四舍五入,小數點取2位 Round(xx,2) **group\_concat(字段名):可以顯示一個分組的普通字段的所有值** group by后面跟主鍵id,select可以是任何字段 group by后面是普通字段,select跟group by中的字段或者聚合函數 但是也可以用any_value和group_concat包住 或者set sql_model=''; 分組排序 Mysql中,分組默認有排序的功能:按照分組字段進行排序,默認是升序 基本語法:group by 字段 [asc|desc],字段 [asc|desc] **回溯統計with rollup** 當分組進行多分組之后,往上統計的過程中,需要進行層層上報,將這種層層上報統計的過程稱之為回溯統計:每一次分組向上統計的過程都會產生一次新的統計數據,而且當前數據對應的分組字段為NULL。 任何一個分組后都會有一個小組,最后都需要向上級分組進行匯報統計,根據當前分組的字段 回溯統計會將分組統計的 單個字段的回溯和多字段回溯 分析第一層分組會有此回溯,第二次分組要看到第一次分組的組數,組數是多少,回溯就是多少,然后加上第一層回溯就行了 ![](https://box.kancloud.cn/78a5456c08022519f04d43383e9b45d2_1928x642.jpg) # order by子句 order by字段1 \[asc | desc\], 字段2 \[asc | desc\],………. desc倒序 asc 順序(排序默認小到大) limit子句 limit offset,pagesize offset為偏移量,如果為0可以省略. pagesize每頁顯示的行數 **分頁公式:pagesize:每頁顯示條數,page:當前頁. limit(page-1)\*pagesize,pagesize** # 連接的分類 **交叉連接** :cross join **自然連接** :natural join會自動的去找兩張表中的相同字段,然后利用相同字段去進行連接,并且相同字段只會顯示一個.如果兩張表有多個同名字段,只有當多個同名字段值全部相等,才會顯示這條記錄 **自然左連接** : natural left join以左表為主,然后利用相同字段去連接,自然右類似 **內連接:** inner join 形式:select \* from 表1 \[inner\] join 表2 on 連接條件 沒有連接條件其實就是交叉連接 一般都寫連接條件:例:select \* from product inner join product\_type on product .protype\_id=product\_type.protype\_id; **左(外)連接** left (outer) join 形式:表1(左表) left \[outer\] join 表2(右表) on 連接條件 其實就是將兩個表的內連接的結果再加上左邊表的不符合內連接所設定條件的那些數據結果,右邊沒有對應位置填null,不加on條件不行 **右外連接** right(outer) join **全(外)連接** full(outer) join mysql不支持全連接語法 using(字段名) 在左連接,右連接和內連接時可以不使用on,直接使用using(),指定一個同名字段去自動連接,指定的同名字段只顯示一次 #### 子查詢 id最好取出來到內存庫 子查詢是很慢的 形式:select 字段或表達式或子查詢\[as 別名\] from 表名或鏈接結果或子查詢 where 字段或表達式或子查詢的條件判斷 分為: **表子查詢:** 一個子查詢返回的結果理論上是多行多列的時候.此時可當做一個表來使用,通常放在from后面 **行子查詢:** 一個子查詢返回的結果理論上是”一行多列”的時候,此時可以當做一個行來使用,通常放在”行比較語法中” 行比較語法類似:where row(字段1,字段2)=(select 行子查詢) **列子查詢:** 一個子查詢語句返回的結果理論上是多行一列的時候.此時可以當多個值來使用,類似(5,17,18,2,6) **標量子查詢:** 一個子查詢返回的結果,理論上是”一行一列”的時候.此時可以當做一個單個值來使用,即單個數據值 any 滿足任意一個值就true all(some) 滿足所有才true 例:查詢所有非最高價商品 (只會小于上述所有價格中的某一個) select \* from product where price < any (select price from product); 查詢所有最高價商品(大于等于”所有價格”) select \* from product where price >= all(select price from product); 子查詢有多個值想要判斷 例如: where xx > 這邊可以用下面的幾個關鍵字() ![](https://box.kancloud.cn/fca27c171cba94913ff2c0a3fc87f06d_2642x648.jpg) #### exists查詢 形式:where exists(子查詢) 如果子查詢有數據,則exists的結果是true,否則是false select \* from product where exists (select \* from product\_type where protype\_name like ‘%電%’ and protype\_id = product.protype\_id) #### 聯合查詢union 語法形式:select 語句1 union \[all | distinct\] select 語句2; 此聯合查詢默認會”自動消除重復行”,即默認distinct,如果想都顯示,就用all,而且默認使用第一個select的字段名,相同的數據只顯示一個 order by子句和limit子句只能對整個聯合之后的結果進行排序,如果第一個select子句用別名,order by必須用別名,如果2個子都想使用order by,在order by后面要跟limit **連接查詢橫向,聯合查詢縱向** #### 自身連接 ### 自身連接自身,想象有一張和自己一樣的表在旁邊和他連接 自身連接:同一個數據表對其自身機型連接。 例子 查找所有分類及其父類 ` SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS p ON s.parent_id = p.type_id;` # with tmp as http://blog.163.com/weidaolan666@126/blog/static/49479943201171710305298/
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看