oracle基础学习

oracle和mysql的区别:

oracle的基本单元是用户,而mysql的基本单元是数据库,简单来说,当开始做一个新的项目时,如果用oracle作为数据库,只需要创建一个用户,而mysql需要创建一个数据库。

安装好oracle后的使用思路

oracle是存放数据的仓库,在安装成功oracle后,要登录管理员账户(system),需要创建一个表空间,但表空间只是一个逻辑单位,真正存放数据的的地方叫数据文件,因此还需要指定一个存放数据文件的地址,指定了数据文件的地址后,还需要指定存放数据的大小,指定一旦超过了这个大小后每次增加的大小。(注意:数据文件的位置)

创建表空间

create tablespace test datafile 'c:\oracleTest.dbf' size 100m autoextend on next 10m;

删除表空间

drop tablespace test;

创建好表空间后就可以创建一个用户了

创建用户并指定密码

create user wyz identified by wyz#111

上面代码创建了一个用户wyz并为他指定密码
由于用户是oracle的基本单位,不同的用户有不同的权限,因此在创建用户后需要给用户分配权限,权限有以下几种:connect,resource,dba三种。

分配用户权限

grant resource to wyz

增删改查

修改表结构 增加一个gender字段

alter table person add  (gender number(2));

修改列类型

alter table person modify gender char(1);

修改列名称

alter table person rename column gender to sex;

删除一列

alter table person drop column sex;

char 与varchar2的区别
char类型是固定的,比如定了字段长度为6,实际只存了一个字符,那他的长度也是6;而varchar2是可变长度。

删除表的三种方式及他们之间的区别:

delete from person;

delete指删除表中所有记录

drop table person;

drop为删除表结构

truncate table person;

先删除表,再次创建表,效果等同于第一种,但当数据量大且带索引的情况下,效率高

序列
默认从1开始,递增,主要用来给主键赋值

SCOTT用户介绍

SCOTT用户也是oracle默认存在的一个账户,对于初学者来说,应该利用SCOTT用户学习,里面包含了少量表,但可以构建复杂的查询语句。安装了oracle后需要解锁scott用户才能使用。
用户名:scott 密码:tigger

解锁scott用户或重置密码

alter user scott identified by tiger;

常用数值函数

select  round(26.14,1) from dual;

四舍五入,后面的参数代表保留的小数位数。

查询员工入职多长少个月了

select months_between(sysdate,e.hiredate) from emp

日期转字符串,字符串转日期

select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss');
select to_date('2020-12-02 12:12:12','yyyy-mm-dd hh24:mi:ss');

说明:对大小写不敏感,所以后面的分不能写为mm,而改为了mi

根据教程学习oracle,在此记录下自己学习到的东西,便于以后翻阅

一、order by 指定如何去排序

  1. 按照列顺序排列 例:按照客户名称排序
SELECT name,address,credit_limit  FROM customers  ORDER BY name ASC;

默认按照ASC排序

  1. 按照列位置排列 1代表第一列
SELECT name, credit_limit,address
FROM customers
ORDER BY 2 DESC, 1;
  1. 用NULL值排序
    语句按城市(city)和州(state)检索位置并对其进行排序
 SELECT country_id, city, state FROM locations  ORDER BY state DESC;

排序好的结果是
在这里插入图片描述如果希望state为null值时排在最后,则可改为下查询语句(nulls first 或 nulls last)

SELECT country_id, city, state
FROM
    locations
ORDER BY
    state ASC NULLS LAST;
  1. 按函数和表达式排列数据
SELECT customer_id, name  FROM customers  ORDER BY UPPER( name );

二、distinct
SELECT DISTINCT可以用来过滤结果集中的重复行,确保SELECT子句中返回指定的一列或多列的值是唯一的

  1. 语法如下
SELECT DISTINCT  column_1   FROM    table_name;
  1. 根据多列检索唯一结果如下:column_1,column_2和column_n中的值的组合用于确定数据的唯一性
SELECT DISTINCT column_1,
    column_2,
        ...
        FROM
    table_name;

注意:
DISTINCT将NULL值视为重复值。如果使用SELECT DISTINCT语句从具有多个NULL值的列中查询数据,则结果集只包含一个NULL值。
DISTINCT子句只能在SELECT语句中使用
在Oracle中DISTINCT和UNIQUE没有区别,二者为同义词,DISTINCT遵循ANSI标准,UNIQUE是Oracle特定的用法,从移植角度考虑,使用遵循ANSI标准的DISTINCT是一个更好的选择。

三、fetch
FETCH 子句在 Oracle 中可以用来限制查询返回的行数
语法:[ OFFSET offset ROWS]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]

  1. OFFSET 子句指定在行限制开始之前要跳过行数。OFFSET 子句是可选的。 如果跳过它,则偏移量为 0,行限制从第一行开始计算
  2. FETCH 子句指定要返回的行数或百分比。例如 fetch next 1 rosw/fetch first 1 rows,这两句是一样的。
  3. ONLY | WITH TIES 选项 仅返回 FETCH NEXT (或 FIRST) 后的行数或行数的百分比。

WITH TIES 返回与最后一行相同的排序键。请注意,如果使用 WITH TIES,则必须在查询中指定一个 ORDER BY 子句。如果不这样做,查询将不会返回额外的行。
例:返回库存量最高的前 5 个产品:
在这里插入图片描述

使用with wies实例:
在这里插入图片描述
以百分比返回的示例:
返回库存量最高的前 1% 的产品
在这里插入图片描述
在这里插入图片描述跳过库存量最高的十个产品,输出接下来的十个产品
在这里插入图片描述可用于分页实现

四、between
日期 between 示例
在这里插入图片描述创建主键和外键示例
在这里插入图片描述
级联删除外键:当主表中的一条记录被删除,从表中相关联的记录也应该删除
在这里插入图片描述
禁用外键:什么时候需要禁用外键呢? 例:创建了A,B,C三张表,A的主键是B和C的外键,这时候删除A,B,C三张表时无法删除,提示*( 无法禁用约束条件 (XXXXXXXXX) - 存在相关性),这时候需要先禁用全部外键,然后在执行删除功能,禁用外键语法:
ALTER TABLE B
DISABLE CONSTRAINT fk_supplier; 其中fk_supplier是外键名称

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值