目录
1.增删改
2.查询:模糊 like 【% 0个或多个字符 ,_一个字符】
3.子查询 select * from sys_menu where parent_id in(select menu_id from sys_menu where parent_id=1)
4.级联 select * from sys_user u left join sys_dept sd on u.dept_id = sd.dept_id
4.1内联(inner join)两边表数据不能为空时才显示该数据。
4.2外联(left/right outer join:outer 可以省略)以哪边表为主,为主的表数据全部展示,右边表未对上的为空。
5.分组 select dept_id,count(*) from sys_user group by dept_id
select sd.name, count(*)
from sys_user u
left join sys_dept sd on u.dept_id = sd.dept_id
where sd.name is not null
group by sd.dept_id
having count(*) > 3
6.排序 order by username asc ,mobile desc
7.分页 select * from sys_user limit 0,5 从第一条开始向后取5条 page,size,maxId
分页优化 select * from sys_user where id>258945 limit 10000,5
oacle:子查询加 rownum
select *
from(
select rownum rn,el.*from(
select * from emp order by sal desc) e1where rownum<=10
where e.rn>5
8.distinct select distinct name,icon,type from sys_menu
2.数据库三大范式
一:字段不可再分
二:要有主键,每条记录都要能被唯一区分。
三:外键只能关联主键,不应该增加其他冗余字段。
3.数据库约束
主键
非空
唯一
自动增长
默认值
枚举
4.索引(数据量大100w上)
类似于字典的目录,提升查询性能 B+树,避免全表扫描
1.单列索引 索引里面只有一个字段 select * from user where dept_id =6
2.组合索引 多个字段用来做一个索引(dept_id, name,age) select * from user where dept_id =6 and name ='张三' order by age
mysql:唯一索引(唯一约束),普通索引(单列和组合),全文索引 Text类型里面查找某个单词。不支持中文。
5.报表函数(聚合函数)
sum
avg
max
min
count
6.储存过程 数据库的一个方法,方法可以传入参数,执行返回数据,里面可以有循环,判断。
CREATE PROCEDURE sp_customers(IN cusid INT)
BEGIN
SELECT * FROM customers WHERE `客户ID`=cusid;
END;
CREATE PROCEDURE sp_customers_out(OUT cusname VARCHAR(20))
BEGIN
SELECT cusname;
SELECT `姓名` INTO cusname FROM customers WHERE `客户ID`=1;
SELECT cusname;
END
https://blog.csdn.net/ReincarnationArm/article/details/124572991
7.触发器 3类(增删改)6个(没类有两个,之前和之后)
8.视图 基于原表的一条查询语句生成的一张临时表。可以进行增删改查,数据会影响原表。
阿里代码规范(java)明确要求不能使用 储存过程、触发器、视图 。影响数据库性能。
6.jdbc Java操作数据库规范
1.步骤
加入数据库驱动包