数据库 (注:知识都来源于Java面试宝典书籍,此处只为学习)
主要是Javaweb,对数据库并不怎么深入
一、Mysql
1. sql的select语句完整的执行顺序
-
from 子句组装来自不同数据源的数据
-
where 子句基于指定的条件对记录行进行筛选
-
group by 子句将数据划分为多个分组
-
使用聚集函数进行计算
-
使用 having 子句筛选分组
-
计算所有的表达式
-
select 的字段
-
使用 order by 对结果集进行排序
SQL 语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺序被处 理。但在 SQL 语句中,第一个被处理的子句式 FROM,而不是第一出现的 SELECT
因此查询处理的步骤序号:
(1) FROM <left_table>
(2) <join_type> JOIN <right_table>
(3) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(8) SELECT(9) DISTINCT
(9) ORDER BY <order_by_list>
(10) <TOP_specification> <select_list>
// 每个步骤都会产生一个虚拟表,该虚拟表用作下一步骤的输入,只有最后一步生成的表才会给调用者
2. 聚合函数
聚合函数是对一组值进行计算并返回单一的值的函数,它经常与 select 语句中的 group by 子句一同使用
3. SQL之连接查询(左连接和右连接的区别)
4. sql之sql注入
5. Mysql性能优化
-
当只要一行数据时使用 limit 1
-
选择正确的数据库引擎
-
用 not exists 代替 not in
-
对操作符的优化,尽量不采用不利于索引的操作符
6. sql面试题
http://www.cnblogs.com/qixuejia/p/3637735.html
create table student(
s_id int primary key not null auto_increment,
s_name varchar(32),
s_age int,
s_sex varchar(8)
);
https://www.jianshu.com/p/8099df2b7af1 插入数据的六种写法
// 第一种:向原表中某些字段中插入一条记录
insert into student (sname,sage,ssex) value ("zhangsan",18,"男");
// 第二种:向原表的字段中插入多条记录的方法一
insert into student (sname,sage,ssex) values ("lisi",19,"男"),("wangwu",20,"男");
// 第三种:向原表的字段中插入多条记录的方法二 不建议用,不适合主键自增的表(需要自己写行号)
insert into student select 4, "qianliu",21,"男" union all
select 5, "xiaohong",22,"女";
7. Mysql数据库架构图
8. Mysql架构器中各个模块都是什么
9. Mysql存储引擎有哪些
10. Mysql事物介绍
1) 事物的四大特征
-
原子性
-
一致性
-
隔离性
-
持久性
2) 隔离级别
11. 如何创建存储过程
12. Mysql触发器怎么写
二、Oracle