当年学习的基本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.serv_id from table t
发布了11 篇原创文章 · 获赞 5 · 访问量 7948

猜你喜欢

转载自blog.csdn.net/Super_King_/article/details/83754153