Oracle——基础知识(一)
一、Oracle中的数据类型
1、字符串类型。如:char、nchar、varchar2、nvarchar2。
2、数值类型。如:int、number(p,s)、integer、smallint。
3、日期类型。如:date、interval、timestamp。
4、其他。RAW-用来存储操作系统使用的原始二进制数据,可用于存储像图像或声音记录这样的信息,但这种数据长度最长度只有255字节.LONG RAW-与LONG类型等价,但存储二进制数据,最长可达2GB个字节.
5、PL/SQL类型。如:pls_integer、binary_integer、binary_double(10g)、binary_float(10g)、boolean。plsql类型是不能在sql环境中使用的,比如建表时。
6、自定义类型。利用 TYPE 定义;一个type 就像是复合变量: 个人理解这个type 就是一个数组一样,不过他返回值只有一个值。而且需要赋值
select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual //显示:08-11-07 13:22:42
select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh24:mi:ss') from dual //显示:2005-12-25 13:25:59
而如果把上式写作:select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh:mi:ss') from dual,则会报错,因为小时hh是12进制,13为非法输入,不能匹配。
二、PL/SQL语句块
是一个块结构,划分为:声明部分、 执行部分、 异常处理部分三部分。如下
1、声明变量:
变量名 [CONSTANT] 变量类型 [[NOT NULL] :=|DEFAULT expression]; //与SqlServer不同,变量名前无需@
注:
- CONSTANT:常量;
- NOT NULL:约束条件,若有,则初始化必须赋值;
- := 赋值符号;直接赋上默认值。
例:
declare
a varchar2(20):='12';
sqltable varchar(200);
sqlText varchar(1000);
2、执行部分
用于逻辑运算和查询等,常用语句:Dbms_output.put_line('1'); --类似于SqlServer中的 print。
3、异常处理
Exception
when 异常错误名称1 [ or 异常错误名称2 ] then
语句段1
when 异常错误名称3 [ or 异常错误名称4 ] then
语句段2
……
when others then
语句段3
End;
4、PL/SQL 嵌套块
只要是允许执行语句的地方,就可以使用嵌套语句; 嵌套块也被当作一个语句; 标识符可见的范围;
例如:
declare
v_para varchar2(20) := 'china';
begin
dbms_output.put_line(v_para); --外面的块无法看见里面块的变量
--dbms_output.put_line(v_para_2); --该语句无法执行,因为无法获取嵌套块中的变量
declare
v_para_2 varchar2(20) := 'java';
begin
dbms_output.put_line(v_para);
dbms_output.put_line(v_para_2);
end;
end;
三、基本操作
1、复杂类型变量 TABLE 和 RECORD
- TABLE(数组)
类型声明格式:TYPE 新类型的名称 IS TABLE OF 具体的类型 INDEX BY BINARY_INTEGER;
变量声明格式: 变量名 新类型的名称;
例:
declare
type mytable_table_type is table of number index by binary_integer; 声明一个新类型:mytable_table_type
para_table mytable_table_type; --用新类型创建一个变量
begin
para_table(0) := 100;
para_table(-8) := 200;
para_table(10) := 300;
dbms_output.put_line(para_table(-8));
end;
和 C# 数组的区别:
- 不需要指定长度.
- 下标可以为负数.
命名规则:
- 定义PLSQL表类型时,用_table_type作为后缀
- 定义PLSQL表类型的变量时,用_table为后缀
- RECORD(类)
类型声明格式:
TYPE type_name IS RECORD
(
field_name1 field_type,
field_name2 field_type,
……
);
变量声明格式:变量名 新类型的名称;
示例:
declare
type myrecord_record_type is record --创建新类型
(
first_name varchar2(10),
last_name varchar2(20),
salary number(6)
);
para_record myrecord_record_type; --定义变量
begin
para_record.first_name := 'a';
para_record.last_name := 'b';
para_record.salary := 100;
dbms_output.put_line(para_record.first_name||' '||para_record.last_name||' '||para_record.salary);
end;
命名规则:
1、定义Record类型时,用_RECORD_TYPE作为后缀
2、定义Record类型的变量时,用_RECORD为后缀
2、 %TYPE 属性 :获取变量类型
获取已经存在的 变量、数据库中的表的字段 用以定义新的变量。
格式: 变量名 已存在的变量/表中字段%TYPE ; --定义一个与 已存在的变量/表中字段 相同类型的变量
即新声明的变量的类型是 % 前的已存在的变量/表中字段 的类型;
例:
declare
v_para1 number;
v_para2 person.name%type; --person为一个存在的表,name为该表的字段
v_para3 v_para1%type; --利用已存在的变量确定新变量的类型。
begin
v_para2 := 'china';
v_para3 := 1000;
dbms_output.put_line('v_para2的值:'||v_para2||' v_para3的值:'||v_para3);
end;
3、%ROWTYPE
与%TYPE作用类似; 变量类型将定义为由数据库的表的字段集合构成的RECORD类型;%ROWTYPE的前缀是数据库的表名;RECORD中的域,与表的字段的名称和数据类型完全相同
格式: 变量名 表名%rowtype; --定义一个包含表中一条记录中各个字段类型的 RECORD(数组)类型 的变量
例:
declare
v_para person%rowtype;
begin
select * into v_para from person where id = 2;
dbms_output.put_line(v_para.id||' '||v_para.name);
end;
4、if 语句
IF … THEN
语句1;
elsif…then
语句2;
elsif…then
语句3;
else
语句4;
end if;
注:是 elsif 而不是 elseif ;
5、loop 语句
loop
……
exit when bool;//当为真时退出循环
……
end loop;
6、while语句
while bool loop
……
End loop;
7、查看字段类型
select * From all_tab_columns where table_name=upper('表名');
8、is与as
在 存储过程 和 函数 中没有区别;在 视图 中只能用 AS 不能用 IS ;在 游标 中只能用 IS 不能用 AS 。 从其定义也可以看出没什么区别。
create [or replace] procedure procedure_name
[(parameter_name [in | out | in out] type [,........])]
{is | as}
begin
procedure_body
end procedure_name;
Oracle——基础知识(一)的更多相关文章
- 图说Oracle基础知识(一)
本文主要对Oralce数据库操作的基础知识进行一下梳理,以便进行归纳总结.适用于未使用过Oracle数据库的读者,或需要学习Oracle数据库方面的基础知识.如有不足之处,还请指正. 关于SQL介绍的 ...
- Oracle基础知识汇总一
Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接 https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...
- Oracle 基础知识入门
前记: 近来项目用到Oracle数据库,大学学了点,后面基本忘记得差不多了,虽然基本语法跟sql 差不多,但是oracle知识是非常多的. 这里简单说点基础知识,希望后面补上更多的关于ORacle知识 ...
- Oracle基础知识笔记(10) 约束
表尽管建立完毕了,可是表中的数据是否合法并不能有所检查,而假设要想针对于表中的数据做一些过滤的话,则能够通过约束完毕,约束的主要功能是保证表中的数据合法性,依照约束的分类,一共同拥有五种约束:非空约束 ...
- 2008-03-18 22:58 oracle基础知识小结
oracle 数据类型: 字段类型 中文说明 限制条件 ...
- oracle基础知识过一遍(原创)
用户.角色.权限.表空间 create tablespace test1_tablespace datafile ‘test1file.dbf’ size 10m; create temporary ...
- oracle 基础知识(七)----动态性能视图
一,动态性能视图介绍 动态性能视图属于数据字典,系统管理员用户 SYS 可以访问它们.在数据库打开和使用时不断进行更新,而且它们的内容主要与性能有关.虽然这些视图很像普通的数据库表,但它们不允许用户直 ...
- oracle 基础知识(三)
一.删除oracle 进入注册表到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome91TNSListener Ima ...
- oracle基础知识语法大全
ORACLE支持五种类型的完整性约束NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.CHECK (检查)--检查在约束中 ...
- oracle基础知识及语法
ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约 ...
随机推荐
- 20个面试题让你真正了解jQuery
1. jQuery 库中的 $() 是什么?(答案如下) $() 函数是 jQuery() 函数的别称, $() 函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery ...
- cassandra集群环境搭建——注意seeds节点,DHT p2p集群管理难道初始化都应如此吗?
解压cassandra的安装包后可以查看主要的配置文件,都在conf/目录下,conf/cassandra.yaml比较重要,其中需要着重注意的有以下一些配置项: cluster_name: 'TC0 ...
- Log4j_学习_03_自己动手封装log工具
二.参考资料 1.log4j 是否可以通过条件判断 在程序运行中动态选择日志存储目录 2.log4j删除N天前日志实现
- LeetCode OJ:Sum Root to Leaf Numbers(根到叶节点数字之和)
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
- uva11078 - Open Credit System(动态维护关键值)
这道题使用暴力解法O(n*n)会超时,那么用动态维护最大值可以优化到O(n).这种思想非常实用. #include<iostream> #include<cstdio> #in ...
- Python 中的几种矩阵乘法 np.dot, np.multiply, *
使用array时,运算符 * 用于计算数量积(点乘),函数 dot() 用于计算矢量积(叉乘).使用matrix时,运算符 * 用于计算矢量积,函数 multiply() 用于计算数量积. 下面是使用 ...
- SQL夯实基础(四):子查询及sql优化案例
首先我们先明确一下sql语句的执行顺序,如下有前至后执行: (1)from (2) on (3) join (4) where (5)group by (6) avg,sum... (7 ...
- [Luogu3852][TJOI2007]小朋友
luogu 题意 求弦图的最大独立集. sol 按照完美消除序列一个个贪心选即可. code #include<cstdio> #include<algorithm> #inc ...
- hadoop-sqoop学习笔记
======导入==== sqoop import --connect jdbc:mysql://20.12.20.165:3306/luo0907 --username root --passwor ...
- PHP数组编码转换
因为一些特殊字符的显示效果的原因不得不把习惯的utf-8工程改成了GBK,由于使用了ajax技术,又涉及到了老问题——编码转换. 一些表单验证需要返回json数据,php的json_encode函数只 ...