数据库开发总结

本文介绍了SQL中的StringBuilder用法,用于动态构建SQL查询语句。示例展示了INNERJOIN、LEFTJOIN、RIGHTJOIN和FULLJOIN四种JOIN类型,以及UNION和UNIONALL的区别。在实际应用中,UNION会去除重复并排序,而UNIONALL则不会。注意在使用UNION时,合并的表需有相同数量的字段。

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

1.JPA 使用 new StringBuilder()对象
(1)用法:StringBuilder对象则代表一个字符序列可变的字符串,当一个StringBuilder被创建以后,通过StringBuilder提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
(2)示例
StringBuilder sql = new StringBuilder(“SELECT i.type,i.video_image_url as videoImageUrl,i.published,i.id,common_problem as commonProblem,i.module_id as moduleId,i.description,i.created_time as createdTime,title,m.name as moduleName from help_information i left join help_module m on i.module_id=m.id “);
StringBuilder where = new StringBuilder();
where.append(” where common_problem = ?”);
sql.append(where.toString());

另:补充几种join的方法
1.INNER JOIN
在这里插入图片描述
SELECT <select_list> FROM Table_A A INNER JOIN Table_B B ON A.Key = B.Key

(其中A,B是Table_A,Table_B的别名,<select_list>为要查询的字段,可以是一个,也可以是多个)

2.LEFT JOIN
在这里插入图片描述
SELECT <select_list> FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key

3.RIGHT JOIN

在这里插入图片描述
SELECT <select_list> FROM Table_A A RIGHT JOIN Table_B B ON A.Key = B.Key

4.FULL JOIN
在这里插入图片描述
SELECT <select_list> FROM Table_A A FULL JOIN Table_B B ON A.Key = B.Key

2.SQL中UNION ALL 和UNION的区别及使用
  在工作中可能会遇到纵向合并两个表的数据,这时会用到UNION和UNION ALL关键字。

其区别就是:UNION会进行数据的排序和去重,查询效率低。

UNION ALL没有进行去重和排序,查询效率高。

需要注意的是:合并的两个或多个表需要保证他们字段的个数相同,否则会报错。

如:合并Student和Course表
在这里插入图片描述
SELECT 学号,姓名,年龄,课程号 FROM Student

   UNION ALL 

   SELECT 课程号,课程名称,类别,学分  FROM Course;

注意:习惯SQL结尾加分号的,不要在第一条SELECT后加上分号,只需要在最后加就行,我工作时候出现过这种低级的错误。

以下是查询结果。(当然只是为了演示,这是没有意义的合并,因为字段和数据不一致)
有时候会有两表字段个数不一样的时候,但有必须合并,那就以起别名的方式自己加缺少的字段,如
在这里插入图片描述
SELECT 学号,姓名,年龄,课程号,Null as 备注 FROM Student

   UNION ALL 

   SELECT 课程号,课程名称,类别,学分,备注  FROM Course;

结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值