Oracle基础入门

158 阅读4分钟

数据类型(常用版)

NUMBER

Oracle NUMBER数据类型用于存储可能为负值或正值的数值。以下说明了NUMBER数据类型的语法

  • 精度是一个数字中的位数。 范围从138

  • 尺度是数字中小数点右侧的位数。 范围从-84127

数字1234.56的精度是6,尺度是2。所以要存储这个数字,需要定义为:NUMBER(6,2)

CHAR

Oracle CHAR数据类型用于存储固定长度的字符串。 CHAR数据类型可以存储12000字节的字符串。

插入或更新固定长度字符串列时,Oracle将字符存储为固定长度数据。 这意味着如果存储的值的长度小于列中定义的最大长度,则Oracle将空格填充到最大长度的字符串。 如果插入一个长度大于列的值,Oracle会返回一个错误。

注意

mysql中char(10)表示字符长度,无论中文还是英文。因此mysql的char(10)存储范围在10字节到30字节。而oracle的char(10)10指定的字节。可以存储10个英文,但是存储中文的时候要注意。

oracle的char(10)在插入数据的时候,只能使用单引号。

否则报错# ORA-00984列在此处不允许

NCHAR的最大长度只在字符长度语义上,而CHAR的最大长度可以是字符长度或字节长度语义。NCHAR和mysql的char(10)类似。

VARCHAR2(N)列最多可以容纳N个字节的字符。如果在VARCHAR2(20)列中存储10个字符,则Oracle仅使用10个字节进行存储,而不是20个字节。 因此,使用VARCHAR2数据类型可以帮助您节省表使用的空间。

NVARCHAR2存储可变长度的字符数据。 使用NVARCHAR2列创建表时,最大长度始终为字符长度语义,也是NVARCHAR2数据类型的默认值,也是唯一的长度语义。

日期

data数据类型用于存储表中的日期和时间数据.oracle数据

库使用自己的格式存储日期,使用7字节固定长度,每个字节分

别存储 世纪,年,月,日,小时,分,秒.

insert into  TEST_USER(id,NAME,CREATETIME)
 values (2,'sdasd',to_date('2022-02-14 20:47:00','yyyy-mm-dd hh24:mi:ss'));

sysdate 获取当前时间

oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分

select extract(year from date'2011-05-17') year from dual;获取时间第几年的

select extract(month from date'2011-05-17') month from dual;获取时间第几月的

select extract(day from date'2011-05-17') day from dual;获取时间第几号的

TO_CHAR(SYSDATE, 'w')获取时间第几周的

select from where 的顺序

1 from 2 where 3select

完整的执行顺序 1 from 2 where 3group by 4having 5select 6order by

视图

create [or replace] view 视图名称 as 子查询

CREATE OR REPLACE VIEW NEW_TEST_USER AS

SELECT id,NAME from TEST_USER;

更新视图可以影响到基础表。with read only 设置视图只读

CREATE OR REPLACE VIEW NEW_TEST_USER AS

SELECT id,NAME from TEST_USER with read only;

删除视图

drop view NEW_TEST_USER;

索引

CREATE [UNIQUE] INDEX index_name ON table_name(column_name[,column_name…])

  1. UNIQUE:指定索引列上的值必须是唯一的。称为唯一索引。

  2. index_name:指定索引名。

  3. tabl_name:指定要为哪个表创建索引。

  4. column_name:指定要对哪个列创建索引。我们也可以对多列创建索引;这种索引称为组合索引。

创建索引
create index a on TEST_USER(NAME);
删除索引
drop index  a;

过程和函数

过程执行某些操作

create procedure 存储过程名称(随便取) (变量1 数据类型,变量2 数据类型,...,变量n 数据类型)
is
    在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量
begin
    执行部分
end;
create or replace procedure testJK(a in varchar2)
as
    begin
        DBMS_OUTPUT.PUT_LINE(a);
    end;

函数执行操作并返回值

create or replace function test (p in varchar2) return 返回类型
is 或者 as
//定义局部变量
begin
    return ;
end;
create or replace  function  fun_hi return varchar2
is 
    begin
        return '你好';
    end;

调用函数

select fun_hi() from  dual;
删除函数
drop function FINDBYNAME;

表分区

CREATE TABLE CUSTOMER
(
    CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,
    FIRST_NAME  VARCHAR2(30) NOT NULL,
    LAST_NAME   VARCHAR2(30) NOT NULL,
    PHONE        VARCHAR2(15) NOT NULL,
    EMAIL        VARCHAR2(80),
    STATUS       CHAR(1)
)
PARTITION BY RANGE (CUSTOMER_ID)
(
    PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,
    PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02
)

分页

方法1:

select * from (select rownum no,a.* from emp a) where no between (pageNo-1)pageSize+1 and pageNopageSize;

其中pageNo代表当前页,pageSize代表每页显示的数据条数,比如当前是第1页,每页显示5条,套用上述sql语句公式后如下所示:

select * from (select rownum no,a.* from emp a) where no between 1 and 5;