java面试总结07_数据库

本文深入探讨了SQL中的行转列及列转行技巧,详细解析了如何在PostgreSQL中删除重复数据并保留特定记录,同时提供了MySQL权限分配、字段长度查询、SQL执行顺序优化、COUNT函数使用场景以及LEFT JOIN条件应用的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里只是写了我面试的时候让我写的一些sql以及自己对个别的总结,没有其他的!

1.sql 行转列,列转行

首先:行转列:

源数据:

转换后:

列转行

转换后:

三、删除user_name重复的数据,只保留其中一条(实例是在postgresql中操作的,mysql删除的时候,要有临时表)。

1.查询出重复的数据,并且只保留重复中id最小的一条数据
select id from t_two where user_name in (
SELECT  user_name FROM t_two group by user_name having count(user_name)>1)
and id not in (SELECT  min(id) FROM t_two group by user_name having count(user_name)>1)
2.删除筛选后的重复数据
delete from t_two where id in (
select id from t_two where user_name in (
SELECT  user_name FROM t_two group by user_name having count(user_name)>1)
and id not in (SELECT  min(id) FROM t_two group by user_name having count(user_name)>1)
)

数据量大的话,可以考虑存储过程

其他:

1.drop,delete与truncate的区别

drop > truncate > delete

2.索引建立的条件

3. UNION和UNION ALL 区别:UNION两个表中不重复的值得集合,如果有重复,只取其中一条,而后者都会取

4.mysql主从复制过程

5.sql 创建用户和赋值权限:

-- 赋予部分权限,其中的shopping.*表示对以shopping所有文件操作。

grant select,delete,update,insert on simpleshop.* to superboy@'localhost' identified by 'superboy';

flush privileges;

-- 赋予所有权限

grant all privileges on simpleshop.* to superboy@localhost identified by 'iamsuperboy';

flush privileges;

6.sql查询某个字段长度最长的那条记录

 

四、sql执行顺序

五、sql 连接效率

5.1  在执行limit的时候,如果数据量大,可以将查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段(减少返回表的操作)

例如:

改后:

对比结果,查询到的数据一致!效率提升几十倍,limit xx,xx ,xx数据越大,越明显!

六、MySQL count(1) count(*) 比较 详解

额外说一句:mybatis中:

<if test="version != null">
    and version = #{version,jdbcType=INTEGER}
</if>
注意:version  为int 或者 integer类型的字段时,在判断 != '' 时,等效于 !=0 

mybaits支持批量返回主键:官网上面写的很清楚:

http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#insert_update_and_delete

7、left join on 条件放在on 后面和where后面的区别

先总结:使用where ,则是先根据条件先筛选出数据,然后left 或者是right,而left 或者是right是先left或者right出结果,然后

and 条件,如果条件不满足,则填充null

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值