Oracle概念及常用语句(一)

ORACLE

1. 概念

1、Oracle是⼀个关系型(表)数据库,Oracle(甲⻣⽂公司)也是⼀个公司的名称

2、Oracle数据库的市场份额是最多的,Mysql数据库也是甲⻣⽂公司的

3、Oracle数据库价格昂贵,主要在电信、银⾏、证券、国企领域使⽤,Mysql主要是⼩公司、 互联⽹⾏业应⽤⽐较多

4、数据(data):数字、⽂字、图形、视频等

5、数据库(database):管理数据的仓库

6、数据库管理系统(DBMS):Oracle、Mysql

7、属性–字段–列

8、元组–记录–⾏

9、域-值域:属性的取值范围

10、主键:能够唯⼀的标识⼀条记录的属性或属性组(联合主键)

11:外键:在A表中不是主键,但是在B表中是主键,这⼀列就叫做A表的外键

12:Oracle版本:Oracle 9i–Internet、Oracle 10g–grid、Oracle 11g、Oracle 12c–cloud

13、Oracle默认端⼝是1521

14、表空间(TABLESPACE):存储表的⽂件,相当于Mysql⼀个数据库

2. 数据库范式

2.1 概念

数据库创建和存在是满⾜⼀定程度的规则的。⽽这些规则,我们称为范式。

  1. 第⼀范式(1NF):每⼀列都是不可再分的(即所有字段值都是不可分解的)
  2. 第⼆范式(2NF):确保数据库表中的每⼀列都和主键相关,⽽不能只与主键的某⼀部分相关 (主要针对联合主键⽽⾔)
  3. 第三范式(3NF):两个表之间除了可以使⽤主键当做关联字段外,不能有重叠部分(即表中不能包含在其它表中已包含的⾮主关键字信息),否则就会造成数据冗余)

2.2 总结

  • 第一范式和第二范式是针对单个数据表的结构提出基本要求,范式是针对表与表之间的关系的
  • 随着范式等级的提高,数据表属性之间的依赖关系越来越小,数据冗余越来越低,但数据关系也会越来越复杂
  • 范式具有包含关系,一个数据库的设计如果满足第二范式,则一定符合第一范式,如果符合第三范式,则也一定符合第二范式

3. Oracle数据库及PL/SQL安装

参考:https://blog.csdn.net/weixin_56214452/article/details/116232978

4. oracle语句

4.1 前置环境

假设数据库中有以下三种类型的表

  • 第一列Name:表示数据库中表的每一列的名称
  • 第二列Type:表示该列的取值范围
    • 常用类型:
    • varchar2(n):可变字符串,最长为n位
    • number[(n)]:数字,最长为n位
    • date:日期
  • 第三列Nullable:表示该列中的数据能否为空
  • 第四列Default:表示是否有默认值
  • 第五列Comments:表示该列是否有注释
  • emp表
Name Type Nullable Default Comments
EMPNO NUMBER(4) 工号
ENAME VARCHAR2(10) Y 姓名
JOB VARCHAR2(9) Y 职位
MGR NUMBER(4) Y 经理的工号
HIREDATE DATE Y 入职时间
SAL NUMBER(7,2) Y 工资
COMM NUMBER(7,2) Y 奖金
DEPTNO NUMBER(2) Y 部门号
  • dept表
Name Type Nullable Default Comments
DEPTNO NUMBER(2) 部门号
DNAME VARCHAR2(14) Y 部门名
LOC VARCHAR2(13) Y 地址
  • salgrade表
Name Type Nullable Default Comments
GRADE NUMBER Y 级别
LOSAL NUMBER Y 最低工资
HISAL NUMBER Y 最高工资

4.2 简单查询 SELECT

  • SQL查询注意事项
    • SQL关键字及列名、表名不区分⼤小写
    • SQL语句可以换⾏,但是关键字不能换⾏
    • SQL语句以分号结尾
4.2.1 语法
select 列名,列名,...|* from 表名
|:或者
4.2.2 示例
-- 简单查询 
-- 查询指定的列 
-- 查询员工姓名 
select ename from emp;
-- 查询员工姓名、工资、部门号 
select ename,sal,deptno from emp; 
-- 查询员工全部信息 
-- 星号表示查询所有列 
select * from emp;
--:表示注释
4.2.3 算数运算
  • 包含空值null的算数运算结果也为空

  • 简单查询可以对某些列(NUMBER类型、DATE型)进行算术运算

4.2.3(1) 语法
select 列名(+*/)数值 from 表名
4.2.3(2) 示例
-- 查询员工姓名、工资及工资加500后情况
select ename,sal,sal+500 from emp;
-- 查询员工姓名及年薪(不算奖金)
select ename,sal*12 from emp; 
-- 获取当前时间函数 sysdate 
select sysdate from dual;
-- 查询员工姓名及工作年限(当前时间-入职时间)/365
select ename,(sysdate-hiredate)/365 from emp;
-- 空值(null)是指不可用,不知道,不适用的值 
-- 空值不等于零或空格 
-- 查询员工姓名及年薪(包含奖金) 
-- 包括空值的算法表达式等于空 
select ename,sal*12+comm from emp;

dual表(虚表)

  • oracle中dual表是一个单行单列的表,任何用户可读取
  • dual表真实存在,但不是用来存取主题数据的
  • dual表只有一行一列,只有一条数据
  • dual表支持增删改查,也可以drop,但不要drop,会报错,导致数据库不能使用
4.2.4 列别名
  • 给列取名,别名中有特殊符号或者空格,需要加双引号
4.2.4(1) 语法
select 列名 [as] 别名1, 列名(+*/)数值 别名2,... from 表名
4.2.4(2) 示例
-- 使用as关键字 格式: 列名(表达式)as 别名 
select ename as 姓名,sal*12 as 年薪 from emp
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大肠干挑面多加蒜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值