1. 程式人生 > >當年學習的基本sql

當年學習的基本sql

都是當年我學sql時候記錄的筆記,要是有馬虎寫的不對的地方,歡迎評論~

主鍵:具有唯一性,自動加索引(index),且不能為空索引:加快查詢速度 varchar-字串 int-整數型

檢視當前主鍵及更改自增主鍵

(t_risk_item_rule表名,item_rule_id自增主鍵欄位名)

--檢視序列號

select nextval('t_risk_item_rule_item_rule_id_seq');

--修改序列號

select setval('t_risk_item_rule_item_rule_id_seq', 1111);

常規查詢: select        *    from                             t_user 丨             丨                                             丨 查詢        欄位(*代表查詢所有資料)表名

模糊查詢: select  *  from  t_user  where user_name like '高%' |                                                    丨          丨     丨 |                                                  欄位名     像     模糊查姓高的人

(%放置位置決定模糊查詢的方式,例:user_name like‘%王%’,該句查名字中間有王字的人)

計數:count select count (*) from t_user |             丨   丨 |           計數 欄位

分組:group by select count(*),iMonth from wx_hr_salary where cPsn_Name like '高%'  group by iMonth |                          丨                                                                              丨     丨 |                       欄位名                                     (%代表萬用字元,任意值)  分組

求和:sum select sum(F_1),iMonth from wx_hr_salary where cPsn_Name like '高%' group by iMonth |              丨   丨 |             求和 要求和的欄位名

插入: insert into t_user(user_id,user_name,age,sex)values(1,'關羽',21,'男') 丨                 丨             丨                                                      丨 插入資料      表名     需要插入資料的欄位名                        值  字元型需加單引號,數值型不需要

修改: update t_user  set    user_pass    =  '123'      where  user_id=1 and age=21 丨           丨     丨                  丨             丨           丨        丨 修改     表名    放置 需改的欄位名 修改的資料 改哪裡 改主鍵是1並且年齡為21的位置

(根據實際情況更改,連線用and)

刪除: delete  from  t_user  where  user_id=2------刪除來自t_user表裡欄位名為user_id欄位資料為2的位置 丨 刪除

排序: order by news_id asc(放在where後面) 丨                  丨    丨 排序         欄位名(asc升序,desc降序)

消重複: select distinct cPsn_Name from wx_hr_salary |              丨         丨                          丨 |           消重    按照欄位名消重      表名

查看錶中從第0條資料開始查詢,向後查10條記錄 select * from wx_hr_salary   limit             0 ,      10 |                                丨           丨             丨       丨 |                             表名    限定範圍  從第x條資料開始查  向後查詢y條

不是主鍵不允許建立外來鍵

表之間的連線: select  * from t_news inner join t_user on t_news .create_by = t_user.user_no |                        丨      丨               丨               丨         丨                丨     丨 |                    B表名    連線         A表名        B 表名   欄位名      A表名   欄位名

(inner可替換left,左邊表完全顯示,右邊表符合條件的顯示;用right相反)

表之間的聯合: select user_no from t_user union all select create_by from t_news |             丨                 丨        丨     丨 |           欄位名         表名   聯合  顯示所有不消除重複(可不寫)

select new_id  as   aa   from t_news (as可省略,例 select new_id   aa   from t_news,效果同上) |              丨            丨                 丨 |            欄位名       起的名字    表名

子查詢: select * from      (select new_id as aa from t_news)    t |                              丨                                                 丨 |               在select()中放入另一個select查詢語句  必須命名一個表名

select 姓名,sum(case 科目 when '語文' then 成績 else 0 end) as 語文 from score group by 姓名 order by 姓名 desc;

查詢姓名欄位,求(假如科目是語文則留下該行語文的成績,否則留下0,進行下一行直到運算結束)所留下的所有數相加,所得結果在命名為語文的欄位下顯示,顯示結果按姓名分組並按姓名倒序排序。

把null換成數字--------ifnull( t2.faka,0) |                                             丨   丨    丨 |                                         表名 欄位名 替換的數字

max 最大值:(並且運用了case···then···end)

select max(t.A) A,max(t.B) B,max(t.C) C from (select sum(case Db_type when 'A' then Db_value else 0 end) as A,sum(case Db_type when 'B' then Db_value else 0 end) as B,sum(case Db_type when 'C' then Db_value else 0 end) as C from Db_test group by Db_type order by Db_type ) t

select sum(case Db_type when 'A' then Db_value else 0 end)

在select語句中插入一列自增id:

SELECT row_number() over (order by t.serv_id) as row_id, t.name from table t