数据库郝斌

多对一,员工和部门,那么,把外键放在多的一方。每个表都有主键
外键(来自)员工来自部门
在这里插入图片描述
[图片]
列,字段,属性,事物的某一个静态特征
行,元组,记录,事物的具体信息
表,二维表,
[图片]
在这里插入图片描述
在这里插入图片描述
[图片]

先写主键表(只有主键的表),再写外键表(有外键的表)
怎么设置外键,任何位置,右键,关系,添加,常规,表和列的规范(右边3个点)如图——》确定,关闭,保存
在这里插入图片描述
[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
[图片]

写代码
选中库,——新建查询
sql 最后一个字段后,逗号有没有都可以,但是oracle必须没有

在这里插入图片描述
[图片]
在这里插入图片描述

[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
数据库,单引号,是字符串,字符,/ 双引号,起名字,表的名字,约束的名字,
[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
[图片]

[图片]
主键不能为空,sql sever2005 只能有一个列为空。
[图片]
在这里插入图片描述
在这里插入图片描述

[图片]
p31 29主键和唯一键的区别及配合使用
用一个没有实际意义的属性/字段 当 主键,
用实际中唯一的键,做,唯一键。
[图片]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[图片]

[图片]
在这里插入图片描述
[图片]

[图片]
多对多的关系,必须增加有单独的一个表,有2个列是外键,来自前面的2个表主键,新增的表,整体是组成主键
[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[图片]

[图片]

[图片]

[图片]
数据库的重点,顺序,下面这些先执行哪个,后执行哪个?
[图片]
在这里插入图片描述

distinct 若重复只显示一次
[图片]
在这里插入图片描述
在这里插入图片描述

[图片]
between 在一个范围之间,包含边界 [x,y]
范围外,用 not between
[图片]

在这里插入图片描述

in
[图片]
在这里插入图片描述

top
注意,top是SQL server的语法,
等价,MySQL的
select 星 from 表 limit 5
Oracle
select 星 from 表 where rownum ≤5

top 5 percent 是前百分之5
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[图片]

[图片]

[图片]

[图片]
单引号,表示字符串
双引号,表示对象的名字
模糊查询
[图片]
在这里插入图片描述

select * from emp where ename like ‘%A%’ --ename只要含有字母A就输出
select * from emp where ename like ‘A%’ --ename只要首字母是A的就输出
select * from emp where ename like ‘%A’ --ename只要尾字母是A的就输出

select * from emp where ename like ‘_A%’ --ename只要第二个字母是A的就输出

select * from emp where ename like ‘_[A-F]%’ --把ename中第二个字符是A或B或C或D或E或F的记录输出

select * from emp where ename like ‘_[^A-F]%’ --把ename中第二个字符不是A也不是B也不是C也不是D也不是E也不是F的记录输出

select * from emp where ename like ‘_[^A-F]%’ --把ename中第二个字符不是A也不是B也不是C也不是D也不是E也不是F的记录输出

create table student
(
name varchar(20) null
,age int
);

insert into student values (‘张三’, 88);
insert into student values (‘Tom’, 66);
insert into student values (‘a_b’, 22);
insert into student values (‘c%d’, 44);
insert into student values (‘abc_fe’, 56);
insert into student values (‘haobin’, 25);
insert into student values (‘HaoBin’, 88);
insert into student values (‘c%’, 66)
insert into student values (‘long’‘s’, 100)
select * from student;

select * from student where name like ‘%%%’ escape ‘’ --把name中包含有%的输出
select * from student where name like ‘%_%’ escape ‘’ --把name中包含有_的输出
[图片]
在这里插入图片描述

聚合函数

在这里插入图片描述
在这里插入图片描述

单行函数和多行函数不能混用,
不同属性,字段,列的【结果】的【行数不一样】,不能在表里面展示出来,不能混用
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[图片]

[图片]

[图片]

[图片]

[图片]

[图片]

[图片]

[图片]
内连接
[图片]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[图片]
在这里插入图片描述
[图片]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[图片]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总复习
[图片]
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
emp
dept
salgrade

select * from emp, dept – 70行 11列
select * from dept, emp – 输出结果等价于 select * from emp, dept

select * from emp, dept where 1=1 – 70行 11列 where中写的过滤条件实际是对(emp, dept)产生的笛卡尔积临时表过滤
select * from emp, dept where empno = 7369 --5行
select * from emp, dept where deptno = 10; --error
select * from emp, dept where emp.deptno = 10; --5行的倍数
select * from emp, dept where dept.deptno = 10; --14行

–本语句输出结果等价于 select * from emp, dept where dept.deptno = 10;
select *
from emp
join dept
on 2=2
where dept.deptno = 10;

–输出70行11列
select *
from emp
join dept
on 1=1
等价于
select * from emp, dept
等价于
select * from dept, emp
等价于
select *
from dept
join emp
on 1=1

–考虑下面语句的实际含义 以及这样写是否恰当?
select * from emp
join dept
on emp.deptno = dept.deptno and emp.sal>2000 --on中既可以写连接条件 也可以写过滤条件 但是不推荐 应该分开写 on中只写连接条件 where中写过滤条件
等价于
select * from emp
join dept
on emp.deptno = dept.deptno
where emp.sal>2000
等价于
select * from dept
join emp
on dept.deptno = emp.deptno
where emp.sal>2000
等价于
select *
from dept,emp
where dept.deptno = emp.deptno and emp.sal>2000

–error 有join就必须的有on
select * from emp
join dept

查询的顺序
select top …
from A
join B
on …
join C
on …
where …
group by …
having …
order by …

–把工资大于1500的所有的员工按部门分组 把部门平均工资大于2000的最高前2个的部门的编号 部门的名称 部门平均工资的等级
–第一种写法
select “T”.*, “D”.dname, “S”.grade
from dept “D”
join (
select top 2 “E”.deptno, avg(sal) “avg_sal”
from emp “E”
join dept “D”
on “E”.deptno = “D”.deptno
join salgrade “S”
on “E”.sal between “S”.losal and “S”.hisal
where “E”.sal > 1500
group by “E”.deptno
having avg(“E”.sal) > 2000
order by avg(“E”.sal) desc
) “T”
on “D”.deptno = “T”.deptno
join salgrade “S”
on “T”.“avg_sal” between “S”.losal and “S”.hisal

–第二种写法
select “T”.*, “D”.dname, “S”.grade
from dept “D”
inner join (
select top 2 deptno, avg(sal) as “avg_sal”
from emp
where sal > 1500
group by deptno
having avg(sal) > 2000
order by “avg_sal” desc
) “T”
on “D”.deptno = “T”.deptno
inner join salgrade “S”
on “T”.“avg_sal” between “S”.losal and “S”.hisal

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

视图
[图片]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事务
[图片]
在这里插入图片描述
在这里插入图片描述

[图片]
数据库总复习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2021年1月25日

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值