练习题目:
3、多表连接(等值连接)
②为表起别名
# ③添加筛选条件
# 案例:查询 工资>5000 的工种名和员工名、工资
④添加分组和筛选
#01 案例:查询每个部门的员工个数和部门名
⑤排序
#01 案例:查询每个部门的员工个数和部门名
⑥ 三表连接
# 案例:查询员工名、部门名和所在城市
4、多表连接(等值连接)练习
传统模式的多表连接
1. 显示所有员工的姓名,部门号和部门名称。
2. 查询90 号部门员工的job_id 和90 号部门的location_id
3. 选择所有有奖金的员工的last_name , department_name , location_id , city
----------- 三表连查
4. 选择city 在Toronto 工作的员工的
last_name , job_id , department_id , department_name ----------- 三表连查
5. 查询每个工种、每个部门的部门名、工种名和最低工资 ----------- 三表连查
6. 查询每个国家下的部门个数大于2 的国家编号
5、非等值查询
2.非等值连接
#案例1:查询员工的工资以及对应的工资级别
#案例2:查询名字中第三个字符为a,第五个字符为e的员工的工资以及对应的工资级别
6、内连接
#案例1 :查询员工名、部门名
案例2:查询有奖金的员工名、部门名
案例3:查询城市名、员工名和部门名
9、练习
一、查询编号>3的女神的男朋友信息,如果有则列出详细,如果没有,用null填充
#二、查询哪个城市没有部门
三、查询部门名为SAL或IT的员工信息
#四、选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式
/*
employees Emp# manager Mgr#
kochhar 101 king
100
*/
10、单行子查询
案例1:谁的工资比Abel高
①查询Abel的工资
②查询员工的信息满足工资>①的结果
案例2:题目:返回job_id与141号员工相同,salary比143号员工多的员工 的姓名,job_id 和工资
①查询141的job_id
②查询143的salary
③查询 姓名,job_id 和工资,满足job_id=①并且salary>②
案例3:返回公司工资最少的员工的last_name,job_id和salary
①查询最低工资
②查询员工的last_name,job_id和salary满足 salary=①
案例4:查询最低工资大于50号部门最低工资的部门id和其最低工资
①查询50号部门的最低工资
②查询每个部门的最低工资
③筛选最低工资>①
11、多行子查询
二、多行子查询
案例1:返回location_id是1400或1700的部门中的所有员工姓名
①查询location_id是1400或1700的部门编号
②查询department_id满足①结果的员工姓名
案例2:返回其它部门中比job_id为‘IT_PROG’部门任意工资低的员工的员
工号、姓名、job_id 以及salary
①查询job_id为‘IT_PROG’部门工资
②返回其它部门中,工资<any ①的结果
题目:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工
#的员工号、姓名、job_id 以及salary
12、子查询练习题
#1. 查询和Zlotkey 相同部门的员工姓名和工资
#2. 查询工资比公司平均工资高的员工的员工号,姓名和工资。
#①查询公司平均工资
② 查询工资>①的员工的员工号,姓名和工资。
#3. 查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资
①查询各部门的平均工资
②查询员工的员工号, 姓名和工资,满足本部门并且工资>①
4. 查询姓名中包含字母u 的员工在相同部门的员工的员工号和姓名
①查询姓名中包含字母u的员工的部门
② 部门=①的员工的员工号和姓名
5. 查询在部门的location_id 为1700 的部门工作的员工的员工号
①查询loaction_id =1700的部门编号
② 查询员工号,满足部门号=①
#6. 查询管理者是King 的员工姓名和工资
①查询员工名是king的编号
#② 查询员工姓名和工资,领导的编号=①
#7. 查询工资最高的员工的姓名,要求first_name 和last_name 显示为一列,列名为 姓. 名
①查询最高工资
②查询姓名,工资=①
14、子查询巩固练习
# 1 、查询工资最低的员工信息
#①查询公司的最低工资
②查询员工信息,满足 salary=①
2. 查询平均工资最低的部门信息
①查询每个部门的平均工资
②查询①结果中avg(salary) 字段中的最低值
# ③查询部门编号,满足平均工资= ②结果
④查询部门信息,满足 department_id= ③
3*. 查询平均工资最低的部门信息和该部门的平均工资
4. 查询平均工资最高的 job 信息
①查询每个job的平均工资
②查询①结果中的 avg(salary)的最高值
③查询每个工种的平均工资,满足 平均工资=②
④工种表和③连接 , 查询平均工资最高的 job 信息
# 5. 查询平均工资高于公司平均工资的部门有哪些?
#①查询公司的平均工资
②查询每个部门的平均工资,并且平均工资>①
6. 查询平均工资最高的部门的 manager 的详细信息:
①查询平均工资最高的部门编号
②查询部门编号=①的manager的详细信息
数据查询语言(凡是带有 select 关键字的都是查询语句)
select...
数据 *** 作语言(凡是对表中的 数据 进行增删改的都是 DML)
insert 增 delete 删 update 改
数据定义语言(凡是带有 create、drop、alter 的都是 DDL)
主要 *** 作的是 表的结构 ,不是表的数据
事务控制语言(包括:事务提交 commit、事务回滚 rollback)
数据控制语言(授权 grant、撤销权限 revoke)
select 字段 from 表名 where 条件
in(具体值,具体值,......) 不是区间
一个输入对应一个输出,和其对应的是多行处理函数(多个输入,对应一个输出)
输入多行,最终输出一行
如果你 没有对数据进行分组,整张表默认为一组 。
在实际的应用中,可能需要先进行分组,然后对每一组的数据进行 *** 作
案例: 查询每个员工所在部门的名称,显示员工名和部门名?
emp e 和 dept d 表进行连接。条件是:e.deptno = d.deptno
SQL92语法:(结构不够清晰,表的连接条件和后期进一步筛选的条件,都放到了 where 子句中)
SQL99语法:(表连接的条件是独立的,连接之后,如果还需要进一步筛选,再往后继续添加 where 子句)
技巧: 把一张表看成两张表
思考: 外连接的查询结果条数 >= 内连接的查询结果条数
select 语句中 嵌套 select 语句,被嵌套的 select 语句称为 子查询。
将查询结果集的一部分取出来。(通常使用在分页查询当中)
将字符串 varchar 类型转换成 date 类型
将日期转换成字符串
可以获取当前系统的时间,并且获取的时间是 datetime 类型的
注意:若没有条件限制将会导致所有数据全部更新。
注意:若没有条件,会删除整张表的数据。
constraint
not null 约束的字段 不能为 NULL (只有列级约束)
unique 约束的字段 不能重复 ,但是可以为 NULL
primary key
foreign key
transaction
实现原理 :缩小扫描的范围(形成树),避免全表扫描
Database Administrator 数据库管理员
数据库表的设计依据。教你怎么进行数据库表的设计。
免费领取有关于java面试题材料和讲解!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)