数据类型(常用版)
NUMBER
Oracle NUMBER数据类型用于存储可能为负值或正值的数值。以下说明了NUMBER数据类型的语法
-
精度是一个数字中的位数。 范围从
1到38。 -
尺度是数字中小数点右侧的位数。 范围从
-84到127。
数字1234.56的精度是6,尺度是2。所以要存储这个数字,需要定义为:NUMBER(6,2)
CHAR
Oracle CHAR数据类型用于存储固定长度的字符串。 CHAR数据类型可以存储1到2000字节的字符串。
插入或更新固定长度字符串列时,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…])
-
UNIQUE:指定索引列上的值必须是唯一的。称为唯一索引。
-
index_name:指定索引名。
-
tabl_name:指定要为哪个表创建索引。
-
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;