Oracle

一、概念:

放数据的仓库,对于oracle来讲,数据库放表空间,表空间里面放表,表内放数据。

orcl是oracle的默认的数据库的名字。

数据库中数组最终放在文件中,文件放在磁盘中。

由于传统的数据库中的数据在磁盘中存放,磁盘的读写速度较慢,所以出现了内存数据库。所谓的内存数据库,就是数据存放在内存中,读写的速度会比较快。

主流的关系型数据库:

Oracle、MySql、DB2、SqlServer

二、Oracle安装

  1. 双击setup.exe
  2. 会自动监测当前版本是否和windows版本匹配
  3. 如果匹配有警告提示(可以忽略),如果不匹配会报错。
 路径:stage\prereq\db\refhost.xml<CERTIFIED_SYSTEMS><OPERATING_SYSTEM><VERSION VALUE="5.0"/><SERVICE_PACK VALUE="1"/> </OPERATING_SYSTEM><OPERATING_SYSTEM><VERSION VALUE="5.1"/><SERVICE_PACK VALUE="1"/> </OPERATING_SYSTEM><OPERATING_SYSTEM><VERSION VALUE="5.2"/></OPERATING_SYSTEM><!--Microsoft Windows Vista--><OPERATING_SYSTEM><VERSION VALUE="6.1"/></OPERATING_SYSTEM><OPERATING_SYSTEM><VERSION VALUE="6.2"/></OPERATING_SYSTEM></CERTIFIED_SYSTEMS>

安装完毕后,在win+R,services.msc开启服务,OracleOraDb11g_home1TNSListener服务建议换成手动打开,会拖慢电脑开机速度。然后进入windows的命令提示符,sqlplus然后输入用户名scott,密码。可以登录上即可。

注意:

Oracle有一个默认用户scott,scott不是管理员。所以scott密码丢失问题不大。

MySql有一个root,此用户是超级管理员,密码如果丢失基本就是重装。

Oracle有一个默认超级管理员sys,可以使用sys修改scott密码。

alter user scott(要改密码的用户) identified by 123456(密码);
--账户被锁定the account is locked;
alter user scott(用户名) account unlock(解锁、lock是锁定);

sys as sysdba进入超级管理员

**注意:**安装的Oracle是一个服务。一般使用UI user interface 用户界面,例如PLSQL

安装完毕后,默认有三个用户

sys(超级管理员)、system(管理员)、scott(普通用户)

作为管理员,主要的任务是进行权限管理(创建、删除用户,修改用户密码)

作为普通用户,主要进行创建表,删除表,表得增删改查

在其位谋其职,不建议使用管理员进行表的增删改查

ORCL是数据库的名字,Oracle是软件的名字。

Oracle和MySql有很大的一个区别,MySql可以同时进好多数据库,但是Oracle只可以进一个

Oracle中,表以文件形式存在。一般都是文件数据库和内存数据库和文件数据库配合使用,热数据(访问频率较高的数据)放在内存。

三、关系型数据库

目前主流的数据库主要有两种:

1.关系型数据库

指表与表之间存在关联关系。(有时候根据一张表无法得到完整的信息,需要多张表,你们这多张表存在关联关系)

问题:为什么不把这多张关联的表和并成一张表呢???

  1. 建表需要遵循数据库的三范式
  2. 减少数据的冗余

2.非关系型数据库

表与表或者数据之间不存在关联关系

例如,Redis

数据一个一个的内存中,数据库之间不存在关联。

可以理解为n个list存在于内存中,每一个list都是一个独立的数据,list之间不存在关联关系。

四、关系型数据库的理解

在关系模型中,现实世界的实体以及实体间的各种联系均用单一的结构类型即关系来表示。

表的行为记录,列为字段(field)

--建表语句:
create table student(stuno int,sname varchar2(20),--varchar2代表字符串(20)代表长度sex int, --1男 0女grade varchar2(20),pwd varchar2(20),constraint pk_sno primary key(stuno)
);
);
--给表加主键constraint 主键名 primary key(主键属性名)
--查看表的结构
select * from user_tab_columns where table_name='STUDENT'; --STUDENT是表名
--向表中插入数据,这里简写了,(stuno,sname,sex,grade,pwd),可以省略
insert into student(stuno,sname,sex,grade,pwd) values(12,'stark',1,'1912班',123
);
--提交事务
commit;
--查询数据库中的数据 select * from 表名
select * from student;

五、数据库的创建

默认情况下,安装Oracle数据库服务的时候,顺带安装了(Oracle自身预装了一个名为ORCL的数据库)一个ORCL的数据库

Oracle创建数据库比较复杂啊,需要Database configuration assistant,帮我们创建数据库。

MySql创建数据库很简单,只需要:右键–>新建数据库即可

六、数据库管理

数据库里,有表空间,表空间里有表,表内有数据

建表之前应该先创建表空间。

其实数据库本身有一个默认表空间USERS,刚刚创建的学生表放在了USERS表空间了。

在工作中会给你分配一个用户,此用户对应的表空间也会帮你创建。因为只有管理员才可以创建表空间。

如何回收管理员权限?

  • 授予管理员权限:grant dba to 用户名;

  • 回收用户的管理员权限:revoke dba from 用户名;

回收或者授予管理员权限必须使用sys身份,表空间应该使用sys创建表空间。

--创建表空间 create tablespace 表空间名 datafile '物理路径' size 10M 指定大小
--删除表空间drop tablespace 表空间名
(其实只是断开和数据库的连接) 然后再手动右键把那个文件删除即可
--给定表空间 alter user 用户名 default tablespace 表空间名字;
select username,default_tablespace from user_users;--查看默认表空间

七、创建用户

开发中数据库是共有的,但是一般一个组(一个人)有一个独立的用户名和密码。

基本任何项目都涉及到:

  • 用户:具体的人

  • 角色:角色就是一组权限的统称(管理员角色、经理角色、组长角色、班长)如果担任管理员角色,肯定具备管理普通用户的各种权限

  • 权限:用户可以做什么(搜索、新增数据、删除数据、登录、查看个人信息、提交各种申请、查看账单、查看工资、查看月账单)

一个人可以担任多个角色,一个角色可以有多个权限

创建的新用户是没有任何权限的,登录权限都没有。

--创建用户,sys创建
create user 用户名 identified by 密码
--给定表空间
default tablespace 表空间名字;
--给用户登录和表的增删改查六项权限
grant connect,resource to 用户名
--删除用户
drop user 用户名;
--修改用户密码
alter user 用户名 identified by 修改的密码
--查看当前用户权限
select * from user_role_privs;

八、Oracle的数据类型

日期类型不建议使用,建议直接使用字符串。LOB等大数据类型也不建议使用。

视频、音频、图片等可以转换成CLOB糊状BLOB类型存放在oracle,把视频、音频等存放在oracle会造成空间的急剧膨胀。

现在有专门的服务器存放视频、音频、图片等这样的服务器,例如HDFS,fastDFS。后期会把图片、音频等文件上传到文件服务器,然后再oracle保存图片、音频、视频的路径即可。而文件本身存在在文件服务器当中。

char(6),字符类型,长度固定,使用场景较少。[如果长度不够6位,会用空格补充到6位]

varchar2(20):字符类型,长度可变的,最大长度为20。可以是1-20任意长度。

int 整型 等价于Java中的int,会自动转换成NUMBER(number)

number(3)整数3代表数字的长度

number(3,2) 3代表数字的长度(整数+小数的长度)。2代表小数点的位数。

number(int类型)可以自增

九、数据库表的创建

建表的时候,理论支撑是数据库的三范式。

1、第一范式(1NF):不可再分,原子性,细粒度。

2、第二范式(2NF):满足第一范式,主键依赖,数据都是围绕主键的。

例如订单表【订单编号:101,数量、商品描述信息、单价、总价格、送货日期、收货地址、运费】
​       以上数据有些不可以出现在订单表。
可以出现:【101、数量、商品id、总价格、送货日期、运费、收货地址id、用户id 】
商品表:
​       商品描述信息、单价
用户地址表:
​       收货地址(地址可以有多个)、电话、收货人名字

3、第三范式(3NF): 满足第二范式,消除传递依赖,与主键是直接依赖。

问题:表到低是怎么来的???

需求根据需求分析说明书,创建E-R图。根据E-R图来创建表。E(实体)-R(关系),即使实体关系模型图

表与表之间的关系:

  1. 一对一(假设:班级表、班主任表)一个班主任管理一个班级,一个班级只能被一个个班主任管理
  2. 一对多(假设:院系表、学生表 院系表–>学生表 一个院系有多个院系)
  3. 多对一(假设:院系表、学生表 学生表–>院系表 多个学生属于一个院系)
  4. 多对多(一个老师可以教授多门课程(语文、数学、英语)一门课可以被多个老师教(赵、钱、孙、李老师))

注意:如果两个表是多对多关系,一般会加一个中间表。目的是把多对多的关系转成一对多,多对一的关系。

数据字典:

定义了表的名字、表的结构、字段数量、字段类型、字段命名、表关系

主键:一条数据的唯一识别,可以理解为人的身份证号,一定是唯一的。一般情况下,主键没有具体的含义。

外键:用来和另一张表的数据进行关联。外键的数据类型一定要和对应主键的数据类型一致,外键中的数据一定要在主键中可以查到。

student学生表:stuno学号、sname学生姓名、sex、grade班级、pwd

teacher教师表:tno教师编号、tname教师姓名、sex、major专业

course课程表:cno课程编号、cname课程名、number应修人数、status开课状态(是否开课)、type选修,必修·

建表语法:

通过alter table命令来修改数据库表

--给一个默认值,年龄默认是20岁
alter table student(表名) modify(age number(3) default 20);
--修改字符类型长度或者字符类型
alter table student modify(sname varchar2(25));
--删除一列 alter table student drop column abc(列名);
--删除多列 alter table student drop (a,b)(列名,列名);

九、数据约束

提供四种类型的约束保证完整性。

  1. 实体完整性(约束方法:唯一约束、主键约束)
    唯一约束和主键约束的区别:主键约束的值不可以为null,主键约束的值可以有且只有一个null。
  2. 域完整性(约束方法:限制数据类型、检查约束、外键约束、非空约束)
  3. 引用完整性(约束方法:外键约束)
  4. 自定义完整性(约束方法:规则、存储过程、触发器)
    设置年龄位于15-40岁之间“CHECK_AGE age between 15 and 40
--删除约束条件 alter table 表名 drop constraint CHECK_AGE(约束名);

十、主外键级联删除

选择表右键–>编辑–>关键字–>删除–>no action、set null、cascade(三个选项)

1、no action

--直接删除部门dept表会报错
--需要先删除部门内的员工,然后再删除部门
delete from emp  where deptno = 10;
delete from dept where deptno = 10;

2、set null

--删除后直接变成null了
delete from dept where deptno=10;


3、cascade

删除部门的同时,也把该部门的员工全部删除。不建议使用

delete from dept where deptno = 10;

oracle_day1相关推荐

最新文章

  1. 在visual studio 2010中调用ffmpeg
  2. Go实现启动参数加载
  3. Django、Flask、Tornado的比较
  4. Android4.0-4.4 加入支持状态栏显示耳机图标方法(支持带不带MIC的两种耳机自己主动识别)...
  5. nodejs 实践:express 最佳实践(五) connect解析
  6. java读取excel数据_Java读取Excel内容(转)
  7. Vue 视频播放插件vue-video-player
  8. Win10开启Administrator超级管理员账户
  9. java month_java11教程--类Month用法
  10. 使用PagedDataSource类实现DataList和Repeater控件的分页显示
  11. python 函数参数枚举_Python中的枚举:如何在方法参数中强制执行
  12. HTML中ul等标签的用法
  13. 欧几里德算法(模板)
  14. The summary of Interview
  15. 车间调度建模系列1|复杂车间调度问题特点
  16. CSDN资源上传记录(持续更新)
  17. 中兴新支点操作系统_好用的国产操作系统,中兴新支点操作系统U盘启动安装方法教程...
  18. 用IntelliJ IDEA看Java类图
  19. 台式计算机戴尔3020,戴尔 Dell OptiPlex 3020M 台式机整机 评测
  20. 菲尔兹奖得主埃菲 · 杰曼诺夫全职加入南科大,任职讲席教授

热门文章

  1. VMware安装vmtools后不能粘贴复制和拖拽文件
  2. matlab稀疏矩阵方程,Matlab命令集——稀疏矩阵函数
  3. 基站机房:保障通信网络稳定,如何解决安全隐患?
  4. 计算机专业网名英语翻译,英文网名_好听的英文网名带翻译
  5. 【ESP系列】ESP8266的AT固件烧录
  6. 复盘:auc是怎么计算的?auc怎么快速计算?
  7. 在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。
  8. 为joomla的模板添加汉字
  9. 前台js实现附件比如word或者pdf的预览
  10. dvd手机到linux,如何在Linux上播放DVD和蓝光? | MOS86