<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • mysql語句執行順序(mysql數據庫常用語句)


    前言

    面試過程中 SQL 語句不知道怎么寫,一看到SQL語句就頭疼?都說 MySQL 只有增刪改查,怎么四個字就這么難?增刪改還比較容易掌握,這個掌握怎么用這么多形式呢,我該如何入手呢?大公司一聊到數據庫就是索引優化、分庫分表,都是什么鬼?單機數據庫已經優化到極致,怎么還能做到橫向擴展(主從、讀寫、高可用等等)呢?這些都學會了,那面試怎么過?

    據說搞不懂MySQL高級語句,只能做CRUD?

    準備兩個表:

    mysql -uroot -p
    show databases;
    
    #表1
    create database plane;
    use plane;
    create table destination (
    region char(20),
    place_name char(20));
    
    insert into destination values('southwest','chengdu');
    insert into destination values('north China','beijing');
    insert into destination values('southwest','kunming');
    insert into destination values('north China','tianjin');
    select * from destination;
    
    #表2
    create table info (
    place_name char(20),
    sales int(10),
    date char(10));
    
    insert into info values('chengdu','350','2021-02-10');
    insert into info values('beijing','294','2021-02-10');
    insert into info values('kunming','330','2021-02-10');
    insert into info values('beijing','392','2021-02-16');
    select * from info;
    據說搞不懂MySQL高級語句,只能做CRUD?

    一、MySQL高級語句

    1、SELECT——顯示表格中一個或數個欄位的所有資料

    語法:SELECT "欄位" FROM "表名";
    例:
    select place_name,sales from info;
    據說搞不懂MySQL高級語句,只能做CRUD?

    2、WHERE——有條件查詢

    語法:SELECT "欄位" FROM "表名" WHERE "條件";
    例:
    select place_name from info where sales > 300;
    據說搞不懂MySQL高級語句,只能做CRUD?

    MySQL學習筆記+面試真題+思維導圖:關注+轉發 私信【MySQL】獲??!

    3、AND|OR——且|或

    語法:SELECT "欄位" FROM "表名" WHERE "條件1" {[AND|OR] "條件2"}+ ;
    例:
    select place_name from info where sales > 350 or sales < 300;
    select place_name from info where sales > 300 and sales < 350;
    據說搞不懂MySQL高級語句,只能做CRUD?

    4、BETWEEN——顯示兩個值范圍內的資料

    語法:SELECT "欄位" FROM "表名" WHERE "欄位" BETWEEN '值1' AND '值2';
    例:
    select * from info where sales between '300' and '350';
    據說搞不懂MySQL高級語句,只能做CRUD?

    5、通配符

    % :百分號表示零個、一個或多個字符
    _ :下劃線表示單個字符
    例:
    'A_Z':所有以 'A' 起頭,另一個任何值的字符,且以 'Z' 為結尾的字符串。例如,'ABZ' 和 'A2Z' 都符合這一個模式,而 'AKKZ' 并不符合 (因為在 A 和 Z 之間有兩個字符,而不是一個字符)。
    'ABC%': 所有以 'ABC' 起頭的字符串。例如,'ABCD' 和 'ABCABC' 都符合這個模式。
    '%XYZ': 所有以 'XYZ' 結尾的字符串。例如,'WXYZ' 和 'ZZXYZ' 都符合這個模式。
    '%AN%': 所有含有 'AN'這個模式的字符串。例如,'ANGELES' 和 'FRANCISCO' 都符合這個模式。
    '_AN%':所有第二個字母為 'A' 和第三個字母為 'N' 的字符串。例如,'SAN FRANCISCO' 符合這個模式,而 'LOS ANGELES' 則不符合這個模式。

    6、ORDER BY——按關鍵字排序

    語法:SELECT "欄位" FROM "表名" [WHERE "條件"] ORDER BY "欄位" [ASC, DESC];
    #ASC 是按照升序進行排序的,是默認的排序方式。
    #DESC 是按降序方式進行排序。
    例:
    select place_name,sales,date from info order by sales;
    select place_name,sales,date from info order by sales asc;
    select place_name,sales,date from info order by sales desc;
    據說搞不懂MySQL高級語句,只能做CRUD?

    7、數學函數

    abs(x)	          返回 x 的絕對值
    rand()	          返回 0 到 1 的隨機數
    mod(x,y)	      返回 x 除以 y 以后的余數
    power(x,y)        返回 x 的 y 次方
    round(x)	      返回離 x 最近的整數
    round(x,y)        保留 x 的 y 位小數四舍五入后的值
    sqrt(x)	          返回 x 的平方根
    truncate(x,y)	  返回數字 x 截斷為 y 位小數的值
    ceil(x)	          返回大于或等于 x 的最小整數
    floor(x)	      返回小于或等于 x 的最大整數
    greatest(x1,x2…)  返回集合中最大的值
    least(x1,x2…)	  返回集合中最小的值
    
    例:SELECT abs(-1), rand(), mod(5,3), power(2,3), round(1.89);

    8、聚合函數

    avg()	返回指定列的平均值
    count()	返回指定列中非 NULL 值的個數
    min()	返回指定列的最小值
    max()	返回指定列的最大值
    sum(x)	返回指定列的所有值之和
    
    #count(*)包括了所有的列的行數,在統計結果的時候,不會忽略值為NULL
    #count(列名)只包括列名那一列的行數,在統計結果的時候,會忽略列值為NULL的行
    
    例:
    select avg(sales) from info;

    9、GROUP BY——對GROUP BY后面的欄位的查詢結果進行匯總分組

    通常是結合聚合函數一起使用的。

    GROUP BY 有一個原則,就是 SELECT 后面的所有列中,沒有使用聚合函數的列,必須出現在GROUP BY后面。

    語法:SELECT "欄位1", SUM("欄位2") FROM "表名" GROUP BY "欄位1";
    例:
    select place_name,sum(sales) from info group by place_name order by sum(sales);
    據說搞不懂MySQL高級語句,只能做CRUD?

    二、連接查詢

    據說搞不懂MySQL高級語句,只能做CRUD?

    1、inner join(等值相連)

    只返回兩個表中聯結字段相等的行

    SELECT * FROM 表1 表1的別名 INNER JOIN 表2 表2的別名 on 表1別名.欄位 = 表2別名.欄位;  #這里的欄位名稱相同
    例:
    select * from destination a inner join info b on a.place_name = b.place_name;
    據說搞不懂MySQL高級語句,只能做CRUD?

    2、left join(左聯接)

    返回包括左表中的所有記錄和右表中聯結字段相等的記錄

    SELECT * FROM 表1 表1的別名 LEFT JOIN 表2 表2的別名 on 表1別名.欄位 = 表2別名.欄位;  #這里的欄位名稱相同
    例:
    select * from destination a left join info b on a.place_name = b.place_name;
    據說搞不懂MySQL高級語句,只能做CRUD?

    3、right join(右聯接)

    返回包括右表中的所有記錄和左表中聯結字段相等的記錄

    SELECT * FROM 表1 表1的別名 RIGHT JOIN 表2 表2的別名 on 表1別名.欄位 = 表2別名.欄位;  #這里的欄位名稱相同
    例:
    select * from destination a right join info b on a.place_name = b.place_name;
    據說搞不懂MySQL高級語句,只能做CRUD?

    三、CREATE VIEW 視圖

    (1)視圖跟表格的不同是,表格中有實際儲存資料,而視圖是建立在表格之上的一個架構,它本身并不實際儲存資料。

    (2)臨時表在用戶退出或同數據庫的連接斷開后就自動消失了,而視圖不會消失。

    (3)視圖不含有數據,只存儲它的定義,它的用途一般可以簡化復雜的查詢。比如你要對幾個表進行連接查詢,而且還要進行統計排序等操作,寫SQL語句會很麻煩的,用視圖將幾個表聯結起來,然后對這個視圖進行查詢操作,就和對一個表查詢一樣,很方便。

    語法:CREATE VIEW "視圖表名" AS "SELECT 語句";
    例:
    create view new_info as select a.region region,a.place_name place_name,b.sales sales from destination a inner join info b on a.place_name = b.place_name;
    
    select * from new_info;
    drop view new_info;
    據說搞不懂MySQL高級語句,只能做CRUD?

    總結

    MySQL學習筆記+面試真題+思維導圖:關注+轉發 私信【MySQL】獲??!

    據說搞不懂MySQL高級語句,只能做CRUD?
    據說搞不懂MySQL高級語句,只能做CRUD?

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费