这些基础在笔记
属性
元组
分量
域
超键
候选键
主键
关系
外键
函数依赖 后面的依赖前面的,就是后面的需要前面的来确定
X→Y,表示Y依赖于X;
X→Y,且Y→X不成立,Y→Z,则X→Z,表示Z传递依赖于X
部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。(部分就是部分就可以得出)
举个例子:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
举个例子:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB.(完全就是全部才能得出)
传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
举个例子:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A
平凡的函数依赖 (平凡即使包含)
X→Y,但Y 包含于 X则称X→Y是平凡的函数依赖。
如(Sno, Cno) → Cno 是平凡函数依赖
非平凡函数依赖 (非平凡就是不包含)
X→Y,但Y 不包含于 X则称X→Y是非平凡的函数依赖。
如(Sno, Cno) → Grade 是非平凡函数依赖
五种基本操作
并,差,积,选择,投影
选择是行操作
投影是列操作
E-R图基础
矩形框:表示实体,在框中记入实体名。
菱形框:表示联系,在框中记入联系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
构成E-R图的3个基本要素是实体型、联系和属性。
主属性 包含在任一候选关键字中的属性称主属性。
非主属性 不包含在主码中的属性称为非主属性。
非主属性是相对与主属性来定义的。
例如:在关系——学生(学号,姓名,年龄,性别,班级)中,主码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性
数据库设计的六个阶段
1需求分析:分析用户的需求,包括数据、功能和性能需求;
2概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
3逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
4数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存取路径;
5数据库的实施:包括编程、测试和试运行;
6数据库运行与维护:系统的运行与数据库的日常维护。),
主要讨论其中的第3个阶段,即逻辑设计。通过一个实际的案例说明在逻辑设计中E-R图向关系模式的转换。
数据库学习第二天
定义空值
空值是无效的,未指定的:空值不是空格,不是0.
列的别名
重命名一个列
便于计算
紧跟列名,也可以在列名和别名之间加入关键字“AS”别名使用双引号,以便在别名中包含空格或特殊字符并区分大小写。
AS可以省略
连接符
把列与列,列与字符连接在一起。
用”||”表示。
可以用来合成列。
字符串
字符串可以是SELECT列表中的一个字符,数字,日期。
日期和字符只能单引号中出现。
每当返回一行时,字符串被输出一次。
SQL PLUS 句子
显示表结构 describe tablename
对数据进行限制和排序
过滤
使用where子句,将不满足条件的行过滤掉。
Where子句紧随from子句
字符和日期
字符和日期主要包含在单引号中。
字符大小写敏感,日期格式敏感。
默认日期格式是 DD-MON-RR。
比较运算
操作符 含义
= 等于(不是==)
<> 不等于(也可以是!=)
其他比较运算
操作符 含义
between……and….. 在两着之间的值(包含边界)
in(,) 等于值列表中的一个
Like 模糊查询
Is null 空值
Order by子句
使用order by子句排序
Asc(ascend):升序
Desc(descent):降序
Order by 子句在select语句的结尾
数字函数
Round 四舍五入
Round(45.926,2) 45.93
Trunc 截断
Trunc(45.926,2) 45.92
Mod 求余
Mod(1600,300) 100
日期
Oracle中的日期型数据实际含有两个值:日期和时间。
默认日期格式是 DD-MON-RR。
例如:23-5月-90【中文平台】
例如:23-May-90 【英文平台】
日期的数学运算
在日期上加上或减去一个数字结果仍为日期
两个日期相减返回日期之间相差的天数
可以用天数除365或30算出近似的年或月。
日期函数
函数 描述
Months_between 两个日期相差的精确月数
Add_months 向指定日期加上若干月数
Next_day 指定日期的下一个日期
Last_day 本月的最后一天
round 日期四舍五入
trunc 日期截断
MONTHS_BETWEEN (‘01-SEP-95’,’11-JAN-94’) 19.6774194
ADD_MONTHS (‘11-JAN-94’,6) ‘11-JUL-94’
NEXT_DAY (‘01-SEP-95’,’FRIDAY’) ‘08-SEP-95’
LAST_DAY(‘01-FEB-95’) ‘28-FEB-95’
数据库学习第一天
1、 用组函数报告汇总数据
组函数作用于一组数据,并对数据返回一个值。
组函数的返回类型有
(组函数默认是忽略空值的,组函数中使用NVL可以使分组函数无法忽略空值)见注释1
注释1
select count(nvl(comm,0))
From emp;
AVG
COUNT(expr) //计数函数,返回expr不为空的记录总数
MAX(数值,日期)
MIN(数值,日期)
SUM
2、分组数据 group by 子句(可以用group by 将表中数据分成若干组)
Select列表中所有未包含在组函数中的列都应该包含在group by 子句中 注释2
注释2
select department_id,AVG(salary)
From employee
Group by department_id;
包含在group by 子句中的列不必包含在select列表中 注释3
注释3
select AVG(salary)
From employees
Group by department_id;
3、使用多个列分组
select department_id,AVG(salary)
From employee
Group by department_id,job_id;
非法使用组函数
不能在where子句中使用组函数(注意)
可以在having子句中使用组函数
过滤分组having子句
使用haing过滤分组
1、行已经被分组
2、使用了组函数。
3、满足having子句中条件的分组将被显示
where 子句和having子句中的区别
1.where 不能放在GROUP BY 后面
2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE
3.WHERE 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而HAVING 可以
第三天
1.Oracle服务器有那两部分组成?
实例+数据库
2.sql92/99标准有哪四大分类?(理论上需要这么多,因为到企业中你的权限只有增删改查)
DML数据操作语言(select/insert//update/delete)查询增加修改删除
DDL数据库模式定义语言(create table/drop table/alter table)创建删除修改
DCL数据库控制语言(grant…to…/revoke…from)将权限分配给谁/从…那里收回权限
TCL(rollback/commit/rollback to savepoint)事物的回滚,事物的提交,事物回滚到指定位置
3.select *,ename from emp 这样写对吗?
不能,*与具体字段不能以“,”方式同时出现
4.NVL(a,b)函数是什么意思?
通用函数 可以用在number/varchar2/datc
a为null就返回b的值
a为非null,就返回值
5.select sysdate from dual是干什么的
显示Oracle服务器的当时时间,例如:7-4月-18
6.select ename
from emp
Where ename like ‘%_%’ escape’\’
上面代码是什么意思?
查询emp表中,ename字段中真正含有_符号的员工姓名
7.如何判断null值
Is null
Is not null
8.order by 能用列号排序吗?从几开始
能用列号排序,从1开始(有面试问到)
9.between…and…和in…是什么意思
Between…and…两者之间且包括边界值
In(a,b)两者中选一个
10.
select add_months(sysdatc,-1)
From dual
上面代码是什么意思?
上个月今天是多少号
关系数据库中,若关系模式设计不好,会带来哪些问题?
1)数据冗余大
2)更新异常
3)插入异常
4)删除异常