1.安装 11g版本
注意:安装路径不能有汉字
关系型数据库:
oracle mysql sqlserver db2
非关系型数据库:
redis hbase
先有关系型数据库,后有非关系型数据库。
非关系型数据库会不会替代关系型数据库?
不会,各自作用不同,可以说是互补的关系
mainfram 大型机 cobol语言
2.数据库怎么用
services.msc
3.连接oracle
1.dos连接
sqlplus
2.第三方软件 pl/sql developer
4.用户名
scott oracle默认用户
system 管理员
sys 超级用户 超级管理员
5.重新设置密码
- sys as sysdba 使用超级用户登陆数据库。
- 口令随便输入即可
alter user scott identified by 123456
the account id locked;
aelter user scott account unlock;
6.再创建一个数据库
emp标 雇员信息表
7.关系型数据库
有时候,一张表是表示不出来所有信息的,需要多张表的关联才可以查出完整信息。
多张表表示完整信息感觉麻烦,能不能进行表的合并?
不行,因为数据库的涉及要遵循三范式。
如果合并,会造成数据冗余,从而影响查询修改等效率。
listener 监听器
oracle 提供服务 服务端
服务端会不会主动提供服务?
不会,当有请求的时候
listener 监听 1521端口
端口有一个特性:独占性,一个端口只能被一个进程占用。
8.表–理解为–文件
表空间–理解为–文件夹
一般情况下,一个用户可以有一个表空间
注意: 如果一个用户不创建表空间,oracle有一个默认的表空间。此用户的表就会放在默认表空间中。
创建表空间:
create tablespace t1
datafile ‘d://t1.dbf’
size 10M
删除表空间:
drop tablespace t1;
创建用户
创建 tom用户的同时,给此用户赋值一个表空间,
意味着此用户在建表的时候,表存在ti中
create user tom
identified by 123456
defeault tablespace t1;
五范式
三范式
事物
隔离级别
数据库调优
数据库锁
书推荐:锋利的JQuery
10.权限
connnect
resource
dba
11.oracle 数据类型
字符:
varchar2(20) 长度可变 最大长度是6,字符长度可以在0-20之间
char(6) 固定长度 长度是6,长度超过6会报错。如果长度是3,会自动补充三个空格
尽量用varchar2(),因为在开发中不容易出错
数值:number(3) 长度为3的整数
number(3,2) 整数部分长度为3,小数部分长度是2的数值
日期类型:date 精确到年月日
timestap 精确到时分秒
大数据类型:不再使用
因为现在大文件,都是存在文件服务器,不再存到数据库。
数据库村的是存文件的路径
date类型使用的比较少
页面中的日期是String类型,保存到oracle要转换成date
查询的时候还要把date类型转换成String
要来回转换,比较麻烦,所以干脆date---->varchar2
这个问题在mysql不存在,mysql会自动把String转换成date
12.建表
理论上要遵循数据库三范式
create table stuinfo(
stuno char(6) not null,
stuname varchar2(20) not null,
stuage number(3,0) not null,
stuid number(18,0),
stuseat number(2,0)
);
学习的奥义:
–慢慢养成如果出错 先想着为什么出错,哪里出错了,该怎么改?下次怎么避免。
–为什么别人会,别人是怎么解决的?解决问题的思路是什么?为什么我没有这个思路
第一范式:字段不可再分 尽量把字段分的细一些
例子:建学生表,应该有个住址
第二范式:其他字段都要依赖主键, 都要跟主键相关
14.修改表
在开发中,不能修改表。因为所有的代码都是建立在表上的。一旦修改表,就意味着原来的代码全部作废,所以说在建表前,一定要充分考虑表怎么建。
alter user scott account unlock
15.数据合法性验证
例如,年龄必须是数字
在开发过程中,有的验证没有必要到达数据库之后再验证,而是应该验证无误后才保存到数据库。
但是oracle有此功能(验证数据的合法性),一般不用。
oracle提供了4种完整性约束
- 实体完整性
同样的数据不能重复插入
采取什么措施,来保证实体完整性?
可以给表创建主键约束
主键:保证了数据的唯一性。主键可以保证同一条记录只能插入一次。
--删除表
drop table stuinfo;
--建表
create table stuinfo(
stuno char(6) not null,
stuname varchar2(20) not null,
stuage number(3,0) not null,
stuid number(18,0),
stuseat number(2,0)
);
--向表中添加两列
alter table stuinfo add(
stutel_no varchar2(12),
address varchar2(20)
);
--修改列
alter table stuinfo modify(
stuage number(3,0) default(20)
);
--向 stuinfo表中插入数据
inset info stuinfo(stuno,stuname,stuage) values('101010','')
--删除列
--删除一列alter table stuinfo drop column stutel_no;
alter table stuinfo drop(stutel_no,stuseat);
--创建学生表
create table stuMarks(
examno varchar2(7) not null,
stuno varchar2(6) not null,
wittenexam number(3,0) not null,
labexam number(3,0) not null
);
-- 创建供应商表
create table S(
sno char(2) not null primary key,
sname varchar2(8) not null,
city varchar(20)
);
--创建产品表
create table P(
pno char(2) not null primary key,
pname varchar2(8) not null,
kind number(8) not nulln
);
--创建供应情况表
create table SP(
sno char(2) not null,
pno char(2) not null,
qty number(8) not null,
primary key(sno,pno),
foreign key(sno) references S(sno),
foreign key(pno) references P(pno)
);
二叉树特点:中间节点值大于左边,小于右边
数据库索引:二叉树算法
索引的目的:提高查询效率
主键所在的列会自动创建索引,索引是变化的,数据库要时刻要维护索引
一般情况下,只有一个字段可以添加主键,此字段一般是编号
-
域完整性
一般对一个字段的约束
例如:序号 位数,一般是确定的 可以用于数据类型约束 char(11) -
引用完整性
一般指多张表之间的引用
外键:起到关联两张表的作用
例如:A表和B表进行关联
A外键 要对应 B的主键
外键的值不是随意写的,而是要跟主键的值对应外键所在的表我们称之为从表,外键引用的表称之为主表
外键的值来自主表的主键值。否则会报错唯一约束 约等于主键约束
不同的是唯一约束 允许为null。主键约束不允许为空 -
自定义完整性(基本用不到)
例如:年龄必须为20-40岁