栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb笔记03(数据库2)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb笔记03(数据库2)

目录

1.补一下数据库

(1)多表查询

内连接

 外连接

 子查询 

 (2)多表查询案例

(3)事物

介绍

 四大特征(ACID)


1.补一下数据库

(1)多表查询

内连接

这就是内连接:  

 外连接

 子查询 

多行单列

 多行多列

子查询使用规则:

        子查询放在圆括号中
        子查询放在比较条件右边(非强制)
        子查询中不需要ORDER BY 子句
        在单行子查询中使用单行运算符,在多行子查询中用多行运算符。
        单行运算符:子查询结果只有一个:< > = <= >= !=
        多行子查询:子查询结果是单列多行:in , any,all
        多列子查询:子查询为多列,一定要在FROM后作为表,且一定要取别名,否则无法访问这张表中的字段。

 (2)多表查询案例
DROp TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;
DROP TABLE IF EXISTS job;
DROP TABLE IF EXISTS salarygrade;


-- 部门表
CREATE TABLE dept (
  id INT PRIMARY KEY PRIMARY KEY, -- 部门id
  dname VARCHAr(50), -- 部门名称
  loc VARCHAr(50) -- 部门所在地
);



-- 职务表,职务名称,职务描述
CREATE TABLE job (
  id INT PRIMARY KEY,
  jname VARCHAr(20),
  description VARCHAr(50)
);

-- 员工表
CREATE TABLE emp (
  id INT PRIMARY KEY, -- 员工id
  ename VARCHAr(50), -- 员工姓名
  job_id INT, -- 职务id
  mgr INT , -- 上级领导
  joindate DATE, -- 入职日期
  salary DECIMAL(7,2), -- 工资
  bonus DECIMAL(7,2), -- 奖金
  dept_id INT, -- 所在部门编号
  CONSTRAINT emp_jobid_ref_job_id_fk FOREIGN KEY (job_id) REFERENCES job (id),
  CONSTRAINT emp_deptid_ref_dept_id_fk FOREIGN KEY (dept_id) REFERENCES dept (id)
);
-- 工资等级表
CREATE TABLE salarygrade (
  grade INT PRIMARY KEY,   -- 级别
  losalary INT,  -- 最低工资
  hisalary INT -- 最高工资
);
-- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述

-- 隐式内连接
SELECT
	emp.id,
	emp.ename,
	emp.salary,
	job.jname,
	job.description
FROM
	emp,
	job
WHERe
	emp.job_id = job.id;

SELECt
	*
FROM
	emp;

SELECt
	*
FROM
	job;

-- 显式内连接
SELECt
	emp.id,
	emp.ename,
	emp.salary,
	job.jname,
	job.description
FROM
	emp
INNER JOIN job ON emp.job_id = job.id;

-- 2.查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置


-- 隐式内连接
SELECt
	emp.id,
	emp.ename,
	emp.salary,
	job.jname,
	job.description,
	dept.dname,
	dept.loc
FROM
	emp,
	job,
	dept
WHERe
	emp.job_id = job.id
	and dept.id = emp.dept_id
;

-- 显式内连接
SELECt
	emp.id,
	emp.ename,
	emp.salary,
	job.jname,
	job.description,
	dept.dname,
	dept.loc
FROM
	emp
INNER JOIN job ON emp.job_id = job.id
INNER JOIN dept ON dept.id = emp.dept_id
;


-- 3.查询员工姓名,工资,工资等级



SELECt
	emp.ename,
	emp.salary,
	t2.*
FROM
	emp,
	salarygrade t2
WHERe
	emp.salary >= t2.losalary
AND emp.salary <= t2.hisalary





-- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级


SELECt
	emp.id,
	emp.ename,
	emp.salary,
	job.jname,
	job.description,
	dept.dname,
	dept.loc,
	t2.grade
FROM
	emp
INNER JOIN job ON emp.job_id = job.id
INNER JOIN dept ON dept.id = emp.dept_id
INNER JOIN salarygrade t2 ON emp.salary BETWEEN t2.losalary and t2.hisalary;






-- 5.查询出部门编号、部门名称、部门位置、部门人数

select * from dept;

select dept_id, count(*) from emp group by dept_id;




SELECt
	dept.id,
	dept.dname,
	dept.loc,
	t1.count
FROM
	dept,
	(
		SELECt
			dept_id,
			count(*) count
		FROM
			emp
		GROUP BY
			dept_id
	) t1
WHERe
	dept.id = t1.dept_id

这里第五个问题最难,要对Group by 子查询有认识。

group by和having介绍:

https://www.jb51.net/article/219383.htm

(3)事物

介绍

 这里有一个BEGIN就告诉这个机器,下面的都是临时操作,如果去掉最后的回滚,那只能在自己这里查询是可以看到1000,500的,但是外面的人查询还是原来的1000 1000,而加上回滚,自己这里查询也是1000 1000了。

如果没问题,可以提交事务:commit

 四大特征(ACID)

 这个很重啊哟,要是忘了就回去看P29 16分钟

最后了解一下事物隔离级别:事务的隔离级别_zhouym_的博客-CSDN博客_事务隔离级别

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021098.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号