Oracle基础概念

平常所说的oracle可以指oracle数据库管理系统,oracle数据库管理系统是管理数据库访问的计算机软件,它由Oracle数据库和Oracle实例构成,(Mysql中没有实例的概念)

 

数据库(database):物理操作系统文件或者磁盘的集合

Oracle实例:位于物理内存的数据结构,它由操作系统的多个后台进程和一个共享的内存池所组成,共享的内存可以被所有进程访问,Oracle用它们来管理数据库访问,用户如果要存取数据库(也就是硬盘上的文件)里的数据,必须通过Oracle实例才能完成,不能直接读取硬盘上的文件,实际上,Oracle实例就是平常所说的数据库服务,在任何时刻,一个实例只能与一个数据库关联,访问一个数据库,而同一个数据库可由多个实例访问

数据库:Oracle数据库是数据的物理存储,这就包括(数据文件ORA或者DBF,控制文件,联机日志,参数文件)其实ORACLE数据库的概念和其它数据库不一样,这里的数据库是一个操作系统纸哟一个库,可以看作Oracle就只有一个大数据库

数据库实例:一个oracle实例有一系列后台进程(background processes)和内存(memory structures)结构组成,一个数据库可以有n个实例

表空间:表空间就是一个用来管理存储逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间

用户:用户是在实例下建立的,不同实例可以建相同名字的用户,oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间

:有了数据库,表空间和用户,就可以用自定义的用户在自己的表空间中创建表了,有了表就可以存储数据了

数据文件:数据文件是数据库的无力存储单位,数据库的数据是存储在表空间里面的,真正是在某一个或者多个数据文件中,而一个表空间就可以由一个或者多个数据文件组成,一个数据文件智能属于一个表空间,一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只有删除其所属的表空间才行。

 

注意:表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放在一个或者多个数据文件中,由于Oracle的数据库不是普通的概念,oracle是由用户和表空间对数据进行管理和存放的,但是表不是由表空间去查询的,而是由用户去查的,因为不同用户可以在同一个表空间建立同一个名字的表,这里的区分就是用户了!!!

 

 

Oracle创建用户和表空间

sqlplus /nolog;    //启动sqlplus不登陆
conn sys/root as sysdba;    //通过超级管理员以dba的身份登陆
select instance_name from v$instance;  //查看当前连接的实例
create tablespace 表空间名 datafile '文件路径\文件名.dbf' size 空间大小; //创建表空间 create user 用户名 identified by 密码 default tablespace 表空间; //创建用户并指定表空间 grant dba to 用户; // 给用户授予dba的权限。

conn 用户名/密码@实例  //用自己创建的用户连接
select * from dual;  //测试是否连接

 

Oracle表的概念,设计表

数据库中以表为组织单位存储数据,表用来存储一些事物的信息,首先需要一个表名,以及存储的信息。

对于存储的每一个细腻型,都应该是使用相应的数据进行表示,并且这些数据应该都是合法的(包括实际和业务逻辑),在数据库中我们通过约束来对每个字段中的数据等合法性进行规范

主键约束(primary key)

唯一性约束(unique)

非空约束(not null)

外建约束(foreign key)

检查约束(check)

主键:主键是定位表中单个行的方式,可唯一确定表中的某一行,关系型数据库要求所有的表都应该有主键,不过Oracle没有遵循此范式要求,Oracle中的表可以没有主见(这种情况不多见,)关于主键有几个需要注意的点:

1,建列必须具有唯一性,且不能为空,其实主键约束相当于 unique + not null.

2,一个表只允许有一个主键 

3,主键所在列必须具有索引(主键的唯一约束通过索引来实现,)如果不存在,将会在索引添加的时候自动创建

唯一键:唯一键约束可以作用在单列或者多列上,对于这些列和列组合,唯一性约束保证每一行的唯一性,unique允许null值,unique约束的列可以存在多个null。

非空约束:非空约束作用的列也叫强制列,强制键列中必须有值

外键约束:从表中引用的外键值必须在主表中存在。

检查约束:自定义检查值,默认值是什么,值的范围是多少,

 

 

SQL语言介绍

 sql为数据库的语言,是一种介于关系代数与关系演酸算之间的结构化查询语言,是一个通用的,功能极强的关系型数据库语言,它包含三个部分:

DDL 数据定义语言,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象,常用的语句关键字主要包括 create drop alter rename truncate

DML 数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert delete update 和 select等,因为查询比较多,有时候也把 select 提出来称为 DQL 数据查询语言。

DCL 数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义列数据库、表、字段、和用户的访问权限和安全级别,主要语句包括 grant revoke commit rollback等。

Oracle命令不区分大小写,但是数据|内容是区分大小写的。

 

 Select语法详解

select * from emp;  //select 关键字后面要跟查询的内容,from关键字后面跟数据的来源。

select dname,deptno from dept;  //查询所有部门(dept)的部门编号(deptno)和部门名称(dname)

select ename,sal,deptno from emp;  // 查询所有员工(emp)的名称(ename),工资(sal),所在的部门编号(deptno)

select distinct deptno from emp;  //查询并去重,distinct关键字,去除的是整条记录的重复,

select ename 姓名,sal 工资 from emp;  //给ename sal 取一个别名,查询出来的名字显示别名。

select ename as 姓名,sal as 工资 from emp;  //用关键as来取别名

select deptno from emp order by deptno;  //将查询出来的结果按照指定顺序排列。如果想要降序,在最后加上一个 order by deptno desc;

select ename,sal,sal*12 as 年薪 from emp;//查询用户姓名,月工资,年薪,使用伪列来实现(伪列一般用于不能直接查询,需要通过计算等方式获取)

select ename,sal,comm,sal+comm as 月收入 from emp;   //查询员工的月收入,工资+提成,提成有可能是null空值,所以如果这么写提成是null的话,月收入也会是null,需要用函数进行处理,select ename,sal,comm,sal+nvl(comm,0) as 月收入 from emp;

select * from emp order by comm desc nulls last;  //按照comm排序,将空值放到最后, nulls first | nulls last的重要是用来排序的时候控制空值(null)的影响。

select ename,ename||"a" as 别名 from emp;  //将查询的结果与一些字符串拼接。如果用表中的两个字段拼接,其中有一个是null的话,会自动忽略null值,

 

Oracle虚表

dual是一个虚表,虚拟表,是用来构成select的语法规则,oracle保证dual里面永远只有一条记录,表只有一行一列,它和其它表一样,可以执行插入,更新,删除操作,还可以执行drop操作,但是不要执行drop表的操作,否则会使系统不能用,起不了数据库,dual主要用来选择系统变量或者是求一个表达式的值,如果我们不需要从具体的表中来取得表中数据,而是单纯的为了得到一些我们想要的信息,并要通过select完成时,就要借助一个对象,这个对象就是dual,

select 999*666 from dual;

 

 条件查询

简单查询,所有的行记录,某一些(指定,全部字段) 

select * from 数据来源 where 行记录条件

 

Oracle表的概念,设计表

posted @ 2021-06-08 09:43  今天也在努力  阅读(554)  评论(0)    收藏  举报