1.外连接和内连接的区别
内连接:查询的结果会显示表之间有连接匹配的所有行。
外连接:
- 左连接(左外连接):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段的数据,如果不匹配则显示为null。
- 右连接(右外连接):以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表匹配的数据则显示相应字段的数据,如果不匹配则显示为null。
- 全连接:先以左表进行左外连接,再以右表进行右外连接。
2. sql 注入的理解和预防
- 理解:通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。举例:当执行的sql为select * from user where username = “admin”or “a”=“a”时,sql语句恒成立,参数admin毫无意义。
- 防止sql注入的方式:
- 预编译语句:如,select * from user where username = ?,sql 语句语义不会发生改变,sql 语句中变量用?表示,即使传递参数时为“admin or ‘a’= ‘a’”,也会把这整体当做一个字符创去查询。
- Mybatis 框架中的 mapper 方式中的#也能很大程度的防止 sql 注入($无法防止 sql 注入)。