<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [toc] # 一、基本查詢 ## 1.查詢表中多個字段 ~~~ select salary,email from employees; //字段之間逗號隔開 ~~~ ## 2.查詢表中的所有字段 ~~~ select * from employees; ~~~ ## 3.起別名 ~~~ //1.使用as select last_name as 姓,first_name as 名 from employees; //2.使用空格 select last_name 姓,first_name 名 from employees; ~~~ ## 4.去重 ~~~ //查詢員工表中涉及到的所有部門的編號(關鍵字:distinct) select distinct department_id from employees; ~~~ ## 5.+號的作用 MySQL中+號僅僅只有一個功能:運算符 ~~~ select ‘132’+90; //字符型會試圖轉成數字型,若轉換成功則繼續做加法 select ‘Jack’+90; //若轉換失敗,字符串部分轉換為0 select null+10; //只要其中一方為null,結果必為null。(此處需要ifnull(null,0)方法避免結果為null) ~~~ # 二、條件查詢 語法 ~~~ select 查詢列表 from 表名 where 篩選條件; ~~~ ## 1.按條件表達式查詢 ~~~ //查詢工資>12000的員工信息 select * from employees where salary>12000; ~~~ ## 2.按邏輯表達式篩選 ~~~ //查詢工資在10000到20000之間的員工信息 select * from employees where salary>=10000 and salary<=20000; ~~~ ## 3.模糊查詢 ~~~ /*like 一般和通配符使用:% 任意多個字符,包含0;_任意單個字符 between ... and ... 在...區間內 in(x,y,z) 在x,y,z這三個值之中 is null 為空 */ //查詢員工名中第二個字符為_的員工名 select last_name from employees where last_name like '_$_%' escape '$'; ~~~ # 三、分組函數 功能:用作統計使用 分類:sum 求和 ;avg 平均值;max 最大值;min 最小值;count 計算個數 # 四、排序查詢 語法 ~~~ select 查詢列表 from 表名 where 條件 order by 排序的字段 +(asc/desc) //order by子句在查詢語句的最后面,默認為升序 ~~~ # 五、常見函數 ## limit方法 limit子句用于限制查詢結果返回的數量 ~~~ limit i,n i:為查詢結果的索引值(默認從0開始); n:為查詢結果返回的數量 注意:limit一般用在SQL語句的最后!!! ~~~ ## case函數方法 ~~~ //流程控制函數case 1.case函數方法一:類似java里switch case的效果 SELECT salary 原始工資,department_id, CASE department_id WHEN 30 THEN salary*1.1 WHEN 40 THEN salary*1.2 WHEN 50 THEN salary*1.3 ELSE salary END AS 新工資 FROM employees; ~~~ 結果如下,注意case是在<b>select和from中間</b>,處在一個比較靠前的位置,注意select上倒數第二個字段要逗號,<b>end as 后面接的才是最后一個字段</b>。還有就是如果when后面接的是字符串一定要加<b>引號</b>。 ![](https://box.kancloud.cn/c76fce3b1138ca7bbe22184da98b7049_302x162.png) ~~~ 2.case函數方法二:類似if else //此方法when后面是條件表達式,所以記住case后面什么都不寫 SELECT salary, CASE WHEN salary>20000 THEN 'A' WHEN salary>15000 THEN 'B' WHEN salary>10000 THEN 'C' ELSE 'D' END AS 工資級別 FROM employees; ~~~ # 六、分組查詢 語法 ~~~ select 字段 from 表 【where 篩選條件】 group by 分組字段 【having 篩選條件】 【order by 排序字段】 ~~~ ## where和having區別 <b>where主要對原始表中的字段進行篩選 having主要對原始表中不存在的字段進行篩選</b> ## 分組查詢小技巧 看到<b>“每個”</b>來形容的字段就是要分組的字段 分組查詢中,select后面接的字段基本是由<b>兩部分</b>組成: - 1.分組函數如:sum,avg,min,max,count。 - 2.后面要分組的字段,即group by后面接的字段。 # 七、連接查詢 ## 等值連接查詢 ~~~ //案例:查詢有獎金的員工名、部門名 SELECT last_name,department_name,commission_pct FROM employees e,departments d WHERE e.`department_id`=d.`department_id` AND e.`commission_pct` IS NOT NULL; ~~~ 等值查詢要給表起別名,這樣有利于區分重名的字段,而且提高語句的簡潔度。 ## 自連接查詢 ~~~ //查詢員工號、名和上級的工號和名。 select e.employee_id,e.first_name,m.employee_id,m.last_name from employees e,employees m where e.manager_id = m.employee_id; ~~~ 這里的就是同一個表起了兩個別名,我們假設第一個表里是員工,第二個表里是上司,然后將兩張表按上司和員工的關系連接即可查詢到相應的結果。 ## sql99查詢語法 1.等值查詢 ~~~ SELECT e.department_id,job_id,location_id FROM employees e JOIN departments d ON e.department_id=d.department_id WHERE e.department_id=90; //兩個表的等值連接join里寫要連接的表,on后面寫兩張表連接的條件,where后接篩選條件 ~~~ 2.多表連接 ~~~ SELECT j.job_id,j.job_title,department_name,MIN(salary) FROM employees e JOIN departments d ON e.department_id=d.department_id JOIN jobs j ON j.job_id=e.job_id GROUP BY job_id,department_name; //多表連接的話用多個join和on組合即可實現 ~~~ # 八、子查詢 ## 1.where或having后面 特點: ①子查詢放在小括號內 () ②子查詢一般放在條件的右側 工資>(子查詢) ③標量子查詢,一般搭配著單行操作符使用 ~~~ //1.標量子查詢 案例:查詢 最低工資大于50號部門最低工資的部門 部門id和其最低工資 ①查詢50號部門的最低工資 SELECT MIN(salary) FROM employees WHERE department_id = 50 ②查詢每個部門的最低工資 SELECT MIN(salary),department_id FROM employees GROUP BY department_id ③ 在②基礎上篩選,滿足min(salary)>① SELECT MIN(salary),department_id FROM employees GROUP BY department_id HAVING MIN(salary)>( SELECT MIN(salary) FROM employees WHERE department_id = 50 ); //2.列子查詢:只有一列,可以有多行 案例:返回其它部門中比job_id為‘IT_PROG’部門所有工資都低的員工 的員工號、姓名、job_id 以及salary SELECT last_name,employee_id,job_id,salary FROM employees WHERE salary<( SELECT MIN( salary) FROM employees WHERE job_id = 'IT_PROG' ) AND job_id<>'IT_PROG'; //3.行子查詢:只有一行,可以多列 案例:查詢員工編號最小并且工資最高的員工信息 SELECT * FROM employees WHERE (employee_id,salary)=( SELECT MIN(employee_id),MAX(salary) FROM employees ); //注意這里有重點,子查詢還可以這樣寫where(字段1,字段2)=(select 目標1,目標2 from 表名),保證字段和目標一一對應即可。 ~~~ ## 2.from或者join后面 <b>子查詢的結果可以充當一張表,要求必須起別名</b> ~~~ 案例:查詢各部門中工資比本部門平均工資高的員工的員工號、姓名和工資 SELECT e.employee_id,e.first_name,e.salary FROM employees e JOIN (SELECT avg(salary) a, department_id FROM employees GROUP BY department_id) d on e.department_id=d.department_id WHERE salary>d.a; //注意這里,就是用子查詢建了一個包含平均工資和部門的表,然后按照部門名相同連接起來,再做工資的篩選。 ~~~ ## 3.where exists后面(相關子查詢) where exists的返回值是0或1,如果子查詢存在返回1,否則返回0。 ~~~ 案例:查詢有員工的部門名 SELECT department_name FROM departments d WHERE EXISTS( SELECT * FROM employees e WHERE d.`department_id`=e.`department_id` ); ~~~ # 九、聯合查詢 語法 ~~~ 查詢語句1 union 查詢語句2 ~~~ 應用場景:要查詢的結果來自多個表,且多個表沒有直接的連接關系,但查詢的信息必須一致。 ~~~ //引入的案例:查詢部門編號>90或郵箱包含a的員工信息 SELECT * FROM employees WHERE email LIKE '%a%' UNION SELECT * FROM employees WHERE department_id>90; ~~~ 注意點: 1.要求多條查詢語句的列數和查詢的<b>字段要一致</b> 2.union關鍵字默認去重,如果使用union all可以包含重復項
                  <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>

                              哎呀哎呀视频在线观看