Oracle数据库学习Day01

1 数据库类型

1.1 关系型数据库(表)

关系模型来组织数据的数据库,关系模型指的就是二维表格模型。关系型数据库就是二维表及其之间的联系所组成的一个数据组织。
优点:容易操作,便于维护
缺点:海量数据的话查询效率低,网站访问并发高,数据库扩展升级不易
十大关系型数据库:
Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,
Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP

1.2 非关系型数据库

非关系型 k-v(键值对)
适用范围:例如淘宝主页的数据(经常访问,不常修改,这样效率高)

优点:用户根据需要添加字段,而且仅需要根据id取出相应的value就可以完成查询;易于升级可扩展
缺点:只适合逻辑简单的存储,复杂的还是需要通过关系型数据库

2 数据库知识点

2.1 主键

唯一+非空
主键的作用:表中建议添加主键,可以根据主键精确的定位和区分 表中数据的唯一
表设计的规范要求中: 建议为每一张表都添加一个主键

2.2 三范式

作用:
最终的目的避免数据重复冗余,
1NF->列不可再分,最小原子 (避免重复) ;
2NF ->主键依赖 (确定唯一);
3NF->消除传递依赖(建立主外键关联 拆分表)

2.3 主外键关系

确定主从表
从表: 关联|依赖主表的主键字段
主表: 被关联|依赖的表
实现: 从表中设置一个字段–>依赖主表的主键字段,这个字段成为外键

2.4 表与表之间的关系

表与表之间的关系:

  一对一   用户   身份证 
  一对多   学生与班级   -->通过主外键  学生表中添加外键字段班级编号->关联班级表的主键班级编号
  多对多   店铺与商品   ->通过中间表建立练习  设置字段为2张表的主键字段

2.5 分析订单模块

订单模块: 订单表 商品表 用户表 店铺表 物流表
店铺表和商品表之间关系? 处理
订单表与用户表之间关系? 处理
画出的表格如图

3 select查询

3.1 格式

select (distinct) 要查询的数据(*|字段1,字段2…) from 数据来源; *和具体字段不能同时查询
当想要查询数据的时候,先分析
查询的数据:
数据的来源:
条件:

3.2 语法

3.2.1 查询所有的员工编号和员工名称,员工上级的编号

select empno , ename , mgr from emp;

3.2.2 去重(distinct)

distinct 去重只能对结果集中完全重读的数据进行去重

select distinct deptno,ename from emp;//不能

查询出所有员工所在的部门的部门标号,每个部门编号只出现一次

select distinct deptno from emp;

3.2.3 伪例

select 表达式 from 表名;
表达式作为字段名 , 表达式的值作为字段结果

select 1+1 from emp;
select distinct 123+456 from emp;

1 2

3.2.4 取别名

给字段去别名
select 查询字段1 别名,查询字段2 (as) 别名 … from 数据来源;
查询所有员工的名称(别名为:名字),员工编号(编号)
"" 原封不动显示,不是字符串

select ename as 员工名称,empno "员工 编号" from emp;
select ename "empName", sal empSal from emp;

如果别名为英文,默认变为大写,如果想要原封不动显示请在前后添加一对""

3.2.5 字符串 ’ '可以当做伪列存在

select 'haha' from emp;

1

3.2.6 字符串拼接 ||

查询所有的员工名字,给他们来一个同一前缀sxt-

select 'SXT-'||ename “ename”  from emp;

在这里插入图片描述

3.2.7 虚表

–虚表 : dual 没有字段没有数据

select * from dual;
select distinct 123*789 from emp;
select 123*789 from dual;
select sysdate from dual;

在这里插入图片描述
在这里插入图片描述

3.2.8 默认值null

给每一个员工在原来的基础上+1块钱奖金
null值与数字运算,结果还是null

 select empno,ename,sal, comm, comm+1 from emp;

在这里插入图片描述
null值与字符串拼接,结果是原串

select empno,ename,sal,comm,comm||'1' from emp;

在这里插入图片描述
nvl 处理null值 nvl(字段,值)
如果参数1字段为null,函数最终的结果为参数2指定值,如果字段不为null,结果为当前字段值

select empno 员工编号,ename 员工姓名,sal 薪资, comm奖金,nvl(comm,0)+1  from emp;

在这里插入图片描述

3.2.8 集大成

查询所有员工的名字, 工种, 年薪(不带奖金)
查询所有员工的名字,工种,年薪(带12月奖金的)
查询所有员工的名字, 工种, 年薪(带一次奖金的)

select 'SHSXT-'||ename "ename",job job,sal 月薪,nvl(comm,0) 奖金,sal*12 年薪,sal*12+nvl(comm,0)*12 全奖金年薪,sal*12+nvl(comm,0) 单月奖金年薪 from emp;

在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值