数据库的三个阶段
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
定义
1.数据库(database):指的是长期存储在计算机内,有组织的管理,具有较小冗余,可供多个用户共享的数据集合
2. 数据库管理系统:是管理,建立,使用,维护数据库的软件,
数据库管理系统主要功能
. DDL:数据定义语言(create,drop,alter用于定义,修改数据对象的)
. DML:数据操作语言(增删改)
. DCL:数据控制语言(grant,revoke用于授权,和回收授权)
. TPL:事务处理语言(commit,rollback) --可以结束事务
关系型数据库
三层数据模型
- 概念模型:是现实世界到信息世界的第一层的抽象,常用E-R图表示。
- 逻辑模型:是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,常用的包括层次模型,网状模型,关系模型
- 物理模型:描述了数据在存储介质上的组织结构
完整型约束
1.实体完整性
2. 参照完整性
3. 用户定义完整性
消除重复行(DISTINCT)
什么是序列,oracle是否能自增长,自生成?
sequence 生成主键值
create sequence class_id
插入的时候
insert into table(id,name) value(class_id.nextval,'hahhha');
group by的使用注意事项:select 后有几个属性,group by 后就要跟同样的,ASC升序:null排在最后,DESC降序
五大约束
primarykey
unique 唯一键:可以为空,不能重复
not null 非空,只能定义在列级别上
外键foreign key :必须关联一张表的主键或者唯一键
检查性约束check:检查满足条件的数据
特殊比较符
between A and B
in (集合)
like :%代表任意多个,代表一个 --》如果有特殊符号(转译符),需要加@ escape 。例如: where name like 'A@@%' escape '@'; 代表查找匹配 A_%的;单引号必须要单引号转
is null-----is not null 是否为空
truncate(DDL) truncate table empty ---->清空empty表
查询语句顺序,执行顺序select在倒数第二个
- select
2.from - where
- group by
- having
- order by
rownum :作用分页
oracle 单行可以多层嵌套
类型转换
to_char
to_date
to_number
大小写转换
LOWER('AAAAAA') ---->aaaaaa
UPPER('aaaaaa') ------>AAAAAA
INITCAP('SQL Couerse') ----->Sql Couerse 首字母大写,其他小写
LONGTH('JJJJJJ') ------>6取字符串长度的
常用日期函数
SYSTEMDATE 系统当前日期时间
next_day,months_between()
select months_between('06-9月-2018','06-3月-2018') from dd 结果是6
select next_day('06-8月-2018','星期二') from dd 结果2018/8/7
select add_months('06-8月-2018’,1)from dd 结果2018/9/06 加月
select add_months('06-8月-2018’,1)+10 from dd 结果2018/9/16 加月加天
单行函数nvl
例如:select comm,nvl(comm,0) from ddd
区分大小写
binary
索引?
index:加快查询速度
例如:create index aaa emp(empno) :表示在empno上建立索引
缺点:占内存,降低增删改速度,
经常出现在where语句中的属性适合键索引,但是主键和唯一键有索引,
事务ACID
定义:
. 原子性:数据库的一次执行,要么全执行,要么全失败
. 一致性:事务结束后,数据库保持一致性
. 隔离性:事务之间执行是互不影响
. 永久性: 事务一旦提交,回滚无效
什么可以结束事务?
一组DML语句,TPL,TPL(commit,rollback)