79、什么是主键,主键有什么特点?
主键是用于标识一个表中两条记录不能完全一样的列,它有两个特点:非空和值不能重复。
80、什么是外键,它和外键约束有什么区别
外键是指从表的某列与主表的某列存在的关联关系
外键约束是指在从表的外键列上加上一个约束,强制要求从表的外键必须引用主表的主键。如果违反该约束,则不允许该条数据的添加修改。
81、增、删、改、查的基本SQL语句
添加:insert into 表名(字段列表) values(值)
删除:delete from 表名 where id=1
修改:update 表名 set 字段名=新值 where id=1
查询:select * from 表名
82、DELETE和TRUNCATE的区别
Delete可以有选择性的对记录进行删除,要写日志文件,可以回滚删除的记录
Truncate只能清空表中所有记录,不写日志文件,删除的记录不能回滚,但执行效率高。
83、排除重复记录用什么关键字?如何限制查询数据的返回限定行数?
DISTINCT
Select * from 表名 limit 0,3;
84、如何查询null值
查询null值用 is null 或is not null
85、SQL语句的聚合函数有哪些?
Count:统计行数量 Sum:计算单个列的总和
Avg:计算单个列的平均值 Max:计算单个列的最大值
Min:计算单个列的最小值
86、在分组语句中,查询的列可以有哪些?
只能有分组字段列和聚合函数
87、where和having的区别
Where在分组之前执行,所以不能使用聚合函数。Having在分组之后执行,对分组的结果进行条件过滤,只能用聚合函数。
88、描述SQL查询语句执行顺序
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY分组
第四步:执行SELECT投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY 排序
89、内连接和外连接区别
内联接是指使用比较运算符根据每个表共有的列的值匹配两个表中的行。
外联接是指不管有没有匹配,被定义了外联接的表数据都要出现在结果中。
内连接:
Select e.*,d.deptName from t_employee e,t_dept d where e.deptId=d.id;
Select e.*,d.deptName from t_employee e join t_dept d on e.deptId=d.id;
外连接:
Select e.*,d.deptName from t_employee e left join t_dept d on e.deptId=d.id;
90、如何删除主表记录?
由于有外键约束存在,如果主表记录有从表记录进行引用,那么无法删除主表记录。
删除主表记录有两种方式:
1、级联删除,先删除主表记录对应的所有从表记录,然后再删除主表记录。
2、外键置空,先将主表记录对应的所有从表记录外键设置为null,然后再删除主表记录。
91、书写case when语句
CASE WHEN price>=1000 THEN '高价商品'
WHEN price>=100 AND price < 1000 THEN '中档商品'
ELSE '低档商品'
END
92、什么是JDBC
JDBC是JAVA连接数据库的一套规范。该规范定义了一系列的接口,由数据库厂商实现,由用户根据接口调用。用户根据接口方法就可以屏蔽不同数据库的差异,无论连接什么数据库都是一套API。
93、JDBC开发流程
加载驱动
建立连接
执行SQL语句
关闭连接
94、什么是SQL注入
SQL注入是指在执行SQL语句时,如果以拼接字符串方式进行值的注入,那么如果值中有非法字符或数据库关键字时,就会导致执行错误或执行结果不正确的情况。
95、Statement和PreparedStatement的区别
Statement是PreparedStatement的父接口,使用拼接字符串的方式填充SQL语句中的值,所以,当值不同的时候,JDBC会重新编译SQL语句,效率低,而且容易造成SQL注入。
PreparedStatement提供了占位符方式设置SQL语句,JDBC不会重新编译SQL语句,而且无论是什么值都当做字符串处理,不会造成SQL注入。
96、什么是三层架构
三层架构即:表现层、业务层、持久层。每一层完成即定的功能,层与层之间用接口做耦合。每一层的组件可以单独测试,当其中一个组件更换或修改后,不会影响别的层的组件。
持久层:用于完成数据库相关的操作。采用DAO模式,创建实体类和数据库表做映射,也就是哪个类对应哪个表,哪个属性对应哪个列。而持久层的目的就是完成对象数据和关系数据的转换。
业务层:用于业务处理。采用事务脚本模式。将一次请求中所有的业务封装成一个方法,保证方法中所有的数据库更新操作同时成功,同时失败。不允许部分成功,部分失败,这样引起数据混乱的情况发生。
表现层:采用MVC模式。M表示模型,就是实体类,用于数据的封装和数据的传输。V表示视图,用于展示数据和接收数据。C表示控制,用于调用业务组件,完成业务流程的控制。
97、书写单例模式
public class Man {
private static Man m = new Man();
private Man(){}
public static Man getMan(){
return m;
}
}