分页及拼接等基本操作

查询第1条到第10条的数据的sql是:select * from table limit 0,10;   ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;

查询第11条到第20条的数据的sql是:select * from table limit 10,10;  ->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;

查询第21条到第30条的数据的sql是:select * from table limit 20,10;  ->对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;

mybatis-plus中:
QueryWrapper<Item> queryWrapper = new QueryWrapper<>();        queryWrapper.like(flag,"title", pageResult.getQuery()); //获取条件        //编辑MP分页对象 四个属性有用(页数(current)/条数/总数/记录) 传递=页数(current)/条数        IPage<Item> page=new Page<>(pageResult.getPageNum(),pageResult.getPageSize());       
 page = itemMapper.selectPage(page, queryWrapper);  //查询结果再次封装到page中,好处使用改方法可以跨数据库

分页查询:
查询前5行数据:limit从0开始计算
Mysql:Select prod_name from Products limit 5;
Oracle:Select prod_name from Products  where rownum<=5;
查询4-6行数据:
Mysql:Select prod_name,prod_price from Products order by prod_price desc limit 3,3;
Oracle:select * from (select rownum rn,p.* from (Select prod_name,prod_price from Products order by prod_price desc) p where rownum <=6) t  where rn>3;
And的优先级比or高。In();在一个范围内  not in()..不在范围Like:模糊查询  其中加%表示任何字符出现任何次数。
拼接字段:如值在俩列,却只需要一个返回值:Mysql:select Concat(vend_name,’(’,vend_country,’)’) from Vendors;
别名:select Concat(vend_name,’(’,vend_country,’)’) as a from Vendors;
Oracle: select vend_name || ‘(’ ||vend_country || ’)’ from Vendors;
别名(无as,直接指定名称):select vend_name || ‘(’ ||vend_country || ’)’  a  from Vendors;聚会函数:Avg():列平均值  count():列行数Max():列最大值  min():列最小值Sum():列和分组:group by  分组过滤:having(一般是聚和函数过滤)
执行顺序:select>from>where>group by>having>order by
联结查询(join):
内联Inner join:输出有关联的数据
Select ? from user inner join emp on user.id=emp.id; 
左联结left join:输出左边所有行及右边相关行,右无匹配左用null替代
Select ? from user left join emp on user.id=emp.id;
右连接(left join):输出右边所有行及左边相关行,左无匹配右用null替代
Select ? from user right join emp on user.id=emp.id;
全外联(full join):输出左右表所有行,无关联的列数据用null替代
Select ? from user full join emp on user.id=emp.id;
多个查询一起(union):(union all不取消重复)要求:多个查询查询内容含相同的列,重复行会被自动取消
如:select id,name from user where id=1 union select id,name from user where name=”jack”;


插入数据:(insert)
插入多行用,隔开().
复制表:
Mysql:
复制结构:create table 复制表名 like 被复制名;
复制数据:insert into 复制表名 select * from 被复制表名;
Oracle:
复制结构:create table 复制表名 AS  select * from 被复制表名;
更新:update ,不写where则更新所有
删除:
delete:清空数据,保留结构,可回滚
Drop:表结构与表数据一起删,不可回滚
Truncate:截断表,只留表结构,不可回滚(Truncate table 表名;)
视图的创建与查询:
Create view view_user as select id,name,age from user;(创建视图)
删除视图:drop view 视图名;
Select * from view_user;(查询视图)



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值