<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] ## 查詢語句 ### **1. 查詢全部列數據** > 格式:select * from 表名; > 說明: * 表示全部列 * 案例:查詢員工表(emp)的全部數據 `select * from emp;` ### **2. 查詢指定列數據** > 格式: > select 列名1,列名2,...列名n from 表名; * 案例:查詢emp表中,員工的編號(empno),員工姓名(ename),員工 職位(job),工資(sal) `select empno,ename,job,sal from emp;` ### **3. 給列起別名** > 格式: > select 列名1 as 別名1,列名2 as 別名2,....列名n as 別名n from 表名; > 說明:可以省略as * 案例:查詢salgrade表中,工資等級(grade),最高工資(hisal),最低工資(losal)并給每列起別名 ``` select grade as 工資等級,hisal as 最高工資,losal as 最低工資 from salgrade; ``` ``` select grade 工資等級,hisal 最高工資,losal 最低工資 from salgrade; ``` * 練習:查詢emp表中,員工姓名(ename),領導編號(mgr),入職時間(hiredate),部門編號(deptno) ``` select ename as 員工姓名,mgr as 領導編號,hiredate as 入職時間,deptno as 部門編號 from emp; ``` <br /> ### **4. 去掉重復的列值(去重)** > 查詢出一列并去掉重復的值 > 格式: select distinct 列名 from 表名; * 案例:查詢emp表中,職位(job)的種類 `select distinct job from emp; ` * 練習:查詢emp表中,員工的部門編號(deptno)并去重 `select distinct deptno from emp;` <br /> ### **5. 限制查詢(--重點--)** > 格式: > select */列名 from 表名 limit 初始位置,行數; > 說明:初始位置,默認值為0,表示第一行 * 案例:查詢emp表中,前5行記錄 `select * from emp limit 0,5; ` * 或者 `select * from emp limit 5; ` * 練習:查詢emp表中,從第3行開始,共查詢6條記錄 `select * from emp limit 2,6;` <br /> ### **6. 排序(order by)** > 格式: > select */列名 from 表名 order by 列名1 asc/desc,列名2 asc/desc; > 說明: asc----升序排列 > desc--降序排列 如果排序中有2列進行排序,先排寫在前面的,如果有相同的列值,在進行后面的排序,反之不進行。 * 案例:查詢emp表中,員工編號(empno),姓名(ename),職位(job),入職時間(hiredate),根據員工編號降序排列 ``` select empno,ename,job,hiredate from emp order by empno desc; ``` * 案例:查詢emp表中,員工編號,員工姓名,領導編號(mgr),部門編號(deptno) 先根據部門編號升序排列,在根據員工編號降序排列 ``` select empno,ename,mgr,deptno from emp order by deptno asc,empno desc; ``` * 練習:查詢emp表中,倒數后5條記錄,員工的編號,姓名,職位(job),工資(sal)---(-重點-) ``` select empno,ename,job,sal from emp order by empno desc limit 5; ``` <br /> ### **7. 條件查詢** > 格式: > select */列名 from 表名 where 條件; > 條件包括:關系運算符(> < = >= <= <>/!=)、邏輯運算符(and、or、not)、特殊情況 * 案例:查詢emp表中,部門編號是30號部門的,員工的編號,姓名,職位,部門編號 ``` select empno,ename,job,deptno from emp where deptno=30; ``` * 案例:查詢emp表中,工資(sal)大于1000的,員工的編號,姓名,職位,工資 ``` select empno,ename,job,sal from emp where sal>1000; ``` * 練習:查詢dept表中,部門地址(loc)是BEIJING的,全部信息 `select * from dept where loc='BEIJING'; ` * 練習:查詢emp表中,工資(sal)小于等于3000的,員工的編號,姓名,職位,工資,根據工資升序排列。 ``` select empno,ename,job,sal from emp where sal<=3000 order by sal asc; ``` * 練習:查詢emp表中,工資不等于1250的,員工的編號,姓名,工資(sal) `select empno,ename,sal from emp where sal<>1250;` #### and(與)并且--用于連接2個或者多個條件 > A and B A and B and C * 案例:查詢emp表中工資在1000 ~5000之間的,員工的編號,姓名,工資 ``` select empno,ename,sal from emp where sal>=1000 and sal<=5000; ``` * 練習:查看emp表中,工資大于1000并且部門編號是30號的,員工的編號,姓名,職位,工資,部門編號 ``` select empno,ename,job,sal,deptno from emp where sal>1000 and deptno=30; ``` #### or(或)或者--用于連接2個或者條件 > A or B A or B or C * 案例:查詢emp表中,工資大于2000或者部門編號是20號部門的,員工的編號,姓名,職位,工資,部門編號(deptno) ``` select empno,ename,job,sal,deptno from emp where sal>2000 or deptno=20; ``` * 練習:查詢emp表中,員工編號是7521,7654,7782,7900的員工信息--(-重點-) ``` select * from emp where empno=7521 or empno=7654 or empno=7782 or empno=7900; ``` #### not(非) 取反 * 案例:查詢emp表中,工資不等于1250的,員工編號,姓名,工資,根據工資降序排列-->(2種方法) > 方法1: ``` select empno,ename,sal from emp where sal<>1250 order by sal desc; ``` > 方法2: ``` select empno,ename,sal from emp where not sal=1250 order by sal desc; ``` #### 1) 查詢列值為空(null)的情況(is null) * 案例:查詢emp表中,獎金(comm)為空的員工信息 `select * from emp where comm is null; ` * 練習:查詢emp表中,上級領導(mgr)為空的,員工信息 `select * from emp where mgr is null; ` #### 2) 查詢列值不為空的情況(is not null) * 案例:查詢emp表中,上級領導不為空的,員工的編號,姓名,上級領導 ``` select empno,ename,mgr from emp where mgr is not null; ``` #### 3) between....and > 格式: > select */列名 from 表名 where 列名 between 初值 and 終值; > 說明:查詢初值到終值之間的數字,包含2個邊界值 * 案例:查詢emp表中,工資在1000 ~3000之間的,員工的編號,姓名,工資 > 方法1: ``` select empno,ename,sal from emp where sal between 1000 and 3000; ``` > 方法2: ``` select empno,ename,sal from emp where sal>=1000 and sal<=3000; ``` #### 4) in--比較一列中的幾個列值 > 格式: > select */列名 from 表名 where 列名 in(列值1,列值2,....列值n); * 案例:查詢emp表中,員工編號是7521,7654,7782,7900的員工信息 `select * from emp where empno in(7521,7654,7782,7900); ` * 練習:查詢emp表中,員工職位(job)是 ``` SALESMAN,MANAGER,ANALYST的,員工信息 select * from emp where job in('SALESMAN' ,'MANAGER','ANALYST'); ``` #### 5) 模糊查詢---(-重點-) > like 匹配/模糊匹配,會與 % 和 _ 結合使用。 > 格式:'%a' //以a結尾的數據 > 'a%' //以a開頭的數據 > '%a%' //含有a的數據 > '_a_' //三位且中間字母是a的 > '_a' //兩位且結尾字母是a的 > 'a_' //兩位且開頭字母是a的 > select 列名 from 表名 where 列名 like 條件; > * 條件包括: > (A)%----表示0個或者多個任意字符 > (B)_-----表示任意1個字符 * 案例:查詢emp表中,姓名以字母M開頭(首字母/第一個字母)的,員工的編號,姓名,職位 ``` select empno,ename,job from emp where ename like 'M%'; ``` * 案例:查詢emp表中,姓名以字母N結尾(尾字母/最后一個字母)的,員工的編號,姓名,職位 ``` select empno,ename,job from emp where ename like '%N'; ``` * 案例:查詢emp表中,姓名中包含(含有)字母N的,員工的編號,姓名,職位 ``` select empno,ename,job from emp where ename like '%N%'; ``` * 練習:查詢emp表中,姓名中不包含字母N的并且部門編號是30號部門的,員工的編號,姓名,職位,部門編號 ``` select empno,ename,job,deptno from emp where ename not like '%N%' and deptno=30; ``` ``` select empno,ename,job,deptno from emp where ename not like '%N%' and deptno=30; ``` * 練習:查詢emp表中,姓名倒數第2個字母是N的,員工的信息 `select * from emp where ename like '%N_'; ` * 練習:查詢emp表中,姓名倒數第3個字母是N的,員工的信息 `select * from emp where ename like '%N__';` <br /> ### **8. 聚合(分組)函數** > count sum avg min max > 1) count(*/列名) > *------表示統計該表中數據總條數 > 列名--表示統計列值不為空的,數據的總條數 * 案例:統計emp表中員工的總數量 `select count(*) from emp; ` * 練習:統計emp表中,職位種類的數量 `select count(distinct job) from emp; ` >2) sum(列名) 統計某列列值累加之和 * 案例:統計emp表中,員工的工資總和 `select sum(sal) from emp; ` * 練習:查詢emp表中,部門編號是30號的,工資總和 `select sum(sal) from emp where deptno=30; ` > 3) avg(列名) 求平均值 * 案例:查詢emp表中,員工的平均工資 `select avg(sal) from emp; ` * 練習:查詢emp表中,10號部門的平均工資 `select avg(sal) from emp where deptno=10; ` > 4) min(列名) 求最小值 * 案例:查詢emp表中最低工資,并起別名顯示 `select min(sal) 最低工資 from emp; ` > 5) max(列名) 求最大值 * 案例:查詢emp表中,員工編號的最大值 `select max(empno) from emp;` <br /> ### **9. 分組查詢** > 說明:在某張表中,根據某一列,把數據分成幾組(相同的分成一組),然后對每一組數據使用聚合函數, > 聚合函數經常和分組查詢一起使用。 > 格式: > select 列名/聚合函數 > from 表名 > where 條件 > group by 列名 > order by 列名1/聚合函數 asc/desc,列名2/聚合函數 asc/desc; * 案例:查詢emp表中,部門的編號(deptno),部門的人數,部門的工資總和 ``` select deptno,count(*),sum(sal) from emp group by deptno; ``` * 案例:查詢emp表中,工資大于1000的,部門的編號,部門的平均工資,部門的最高工資 ``` select deptno,avg(sal),max(sal) from emp where sal>1000 group by deptno; ``` * 練習:查詢emp表中,工資在1000 ~5000之間的,員工的職位(job),職位的人數,職位的最高工資 ``` select job,count(*),max(sal) from emp where sal>1000 and sal<5000 group by job; ``` * 練習:查詢emp表中,員工姓名不包含字母K,部門編號,部門的平均工資,部門的人數,根據部門的人數升序排列 ``` select deptno,avg(sal),count(*) from emp where not ename like '%K%' group by deptno order by count(*) asc; ``` <br /> ### **10. having語句** * 說明:在分組查詢得到結果后,再次對數據進行過濾,使用having語句 > 格式: > select 列名/聚合函數 (6) > from 表名 (1) > where 條件 (2) > group by 列名 (3) > having 條件 (4) > order by 列名1/聚合函數 asc/desc,列名2/聚合函數 asc/desc; (5) * where和having區別 > (A) where是對整張表中的數據進行過濾,可以單獨使用。 > (B) having是對分組后的數據進行過濾,having不可以單獨使用,必須和group by一起使用。 * 案例:查詢emp表中,部門的平均工資大于2000的,部門的編號,部門的平均工資,部門的人數 ``` select deptno,avg(sal),count(*) from emp group by deptno having avg(sal)>2000; ``` * 說明:where后面的條件不可以寫聚合函數 > 練習:查詢emp表中,工資大于1500的,職位的名稱,職位的平均工資,職位的最高工資,要求職位的最高工資小于3000, 根據平均工資降序排列 ``` select job,avg(sal),max(sal) from emp where sal>1500 group by job having max(sal)<3000 order by avg(sal) desc; ``` * 練習:查詢emp表中,姓名不包含字母C并且在10或者20號部門的,部門的編號,部門的人數,部門工資總和,部門的最高工資, 要求部門的最高工資大于2000,根據人數降序排列 > 方法一: ``` select deptno,count(*),sum(sal),max(sal) from emp where ename not like '%C%' and deptno in(10,20) group by deptno having max(sal)>2000 order by count(*) desc; ``` > 方法二: ``` select deptno,count(*),sum(sal),max(sal) from emp where ename not like '%C%' and (deptno=10 or deptno=20) group by deptno order by count(*) desc; ``` > 方法三: ``` select deptno,count(*),sum(sal),max(sal) from emp where ename not like '%C%' and (deptno=20 or deptno=10) group by deptno order by count(*) desc; ``` <br /> ### **11. 常用數值處理函數** #### 1) round(數值,位數) 四舍五入函數 > 如果位數>0,那么小數點后保留幾位小數,如果位數=0,不保留小數,如果位數<0,那么小數點前第幾位進行四舍五入 ``` select round(45.637,2); --45.64 select round(45.637,1); --45.6 select round(45.637,0); --46 select round(45.637,-1); --50 select round(45.637,-2); --0 ``` #### 2) truncate(數值,位數) 截取函數 > 如果位數>0,那么小數點后保留幾位小數,如果位數=0,不保留小數,如果位數<0,那么舍棄小數點之前第幾位 ``` select truncate(45.637,2); --45.63 select truncate(45.637,1); --45.6 select truncate(45.637,0); --45 select truncate(45.637,-1); --40 select truncate(45.637,-2); --0 ``` #### 3) rand(n) 隨機函數 > 隨機生成0~1之間的數字,如果n的數值不變,生成相同的隨機數 ``` select rand(); select rand(3); ``` #### 4) sqrt(n) 平方根函數 ``` 10x10=100 select sqrt(2); --1.414 select sqrt(3); --1.732 select sqrt(9); --3 ``` #### 5) mod(n,m) 余數函數 ``` select mod(10,3); --1 select mod(10,4); --2 ``` <br /> ### **12. 常用字符處理函數** #### 1) char_length(字符串/列名) 統計字符/列值的個數(長度) * 案例:統計helloworld字符串的長度 `select char_length('helloworld'); ` * 練習:查詢emp表中,員工的姓名以及姓名的字符數 `select ename,char_length(ename) from emp; ` #### 2) trim(字符串/列名) 去掉字符串或者列值兩端的空格 `select trim(' 軟 件 測 試 '); ` #### 3) substring(參數1,參數2,參數3) 字符串截取函數---重點 > 參數1:被截取的字符串或者列名 > 參數2:那從哪里開始截取 > 如果是正數,表示從正數第幾個開始截取,如果是負數,表示從倒數第幾個開始截取 > 參數3:截取的長度(個數) * 案例:截取helloworld字符串最后2個字母 ``` select substring('helloworld',-2,2); select substring('helloworld',5,3); select substring('helloworld',-6,3); ``` * 練習:查詢emp表中,員工的姓名,以及姓名最后2個字母---(-重點-) > 方法1: `select ename,substring(ename,-2,2) from emp; ` > 方法2: `select ename,substring(ename,char_length(ename)-1,2) from emp;` #### 4) reverse(字符串/列名) 字符串逆序函數 `select reverse('上海自來水'); ` * 練習:查詢emp表中,姓名以及姓名的逆序 `select ename,reverse(ename) from emp;` #### 5) concat(字符串/列名,字符串/列名,....) 字符串拼接 `select concat('問君能有幾多愁,','恰似寫完用例改需求'); ` * 練習:查詢dept表中,部門名稱(dname),部門地址(loc),以及部門名稱和地址的拼接 `select dname,loc,concat(dname,loc) from dept;` <br /> ### **13. 常用日期時間處理函數** #### 1) curdate() 獲取系統當前日期 * 案例:查詢當前系統日期 `select curdate(); ` * 練習:查詢昨天、今天、明天的日期 `select curdate()-1,curdate(),curdate()+1; ` #### 2) curtime() 獲取系統當前時間 * 案例:查詢當前系統時間 `select curtime(); ` #### 3) sysdate()/now() 獲取系統當前日期時間 `select sysdate(),now(); ` #### 4) year(date) 獲取年份 * 案例:獲取當前系統的年份 `select year(sysdate());` * 練習:查詢emp表中,1981年入職的員工信息--->(-重點-) `select * from emp where year(hiredate)='1981';` #### 5) month(date) 獲取月份 * 案例:獲取當前系統的月份 `select month(now()); ` * 練習:查詢emp表中,12月份入職的員工信息--->(-重點-) `select * from emp where month(hiredate)='12';`
                  <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>

                              哎呀哎呀视频在线观看