问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

初学ORACLE,之前也没怎么接触数据库,现在怎么学SQL?怎么在PLSQL里写SQL语句?

发布网友 发布时间:2022-04-07 23:17

我来回答

4个回答

懂视网 时间:2022-04-08 03:39

-- 定义部分 BEGIN -- 执行部分 EXCEPTION -- 异常处理部分 END;-- 块结束标记

 

2.PL/SQL特征:

                    (1).有利于客户、服务器环境应用运行

                    (2).适合于客户环境

                    (3).模块化

       (4).过程化

       (5).提供大量内置程序包

       (6).运行错误的可处理性

3.PL/SQL块的类型:匿名块、子程序、触发器

   匿名块:指没有名称的PL/SQL块。可内嵌到应用程序(例如Java)中,也可以在交互环境(例如SQL*Plus)中直接使用。

   子程序:包括存储过程(用于执行特定操作)、函数(用于返回特定数据)、包(用于逻辑组合相关的过程和函数)。

   触发器:指隐含执行的存储过程。

4.数据类型与变量

   例如:

-- 创建表
create table DEPT -- 部门
(
 id NUMBER(4) not null constraint PK_DEPT_ID primary key,
 name VARCHAR2(20)
);

create table EMPLOYEE -- 员工
(
 id NUMBER(4) not null constraint PK_EMP_ID primary key,
 name VARCHAR2(20) not null,
 birthday DATE,
 address VARCHAR2(100),
 did NUMBER(4),
 constraint FK_EMP_DEPT foreign key (DID) references DEPT (ID)
);

-- 添加测试数据
INSERT INTO DEPT VALUES(1, ‘财务部‘);
INSERT INTO DEPT VALUES(2, ‘市场部‘);
INSERT INTO DEPT VALUES(3, ‘综合部‘);
INSERT INTO DEPT VALUES(4, ‘研发部‘);
INSERT INTO DEPT VALUES(5, ‘网络部‘);

INSERT INTO EMPLOYEE VALUES(1, ‘李飞‘, TO_DATE(‘1975.07.03‘,‘yyyy.mm.dd‘), ‘四川成都‘, 1);
INSERT INTO EMPLOYEE VALUES(2, ‘刘兰‘, TO_DATE(‘1985.09.03‘,‘yyyy.mm.dd‘), ‘四川成都‘, 1);
INSERT INTO EMPLOYEE VALUES(3, ‘张强‘, TO_DATE(‘1987.11.22‘,‘yyyy.mm.dd‘), ‘广东广州‘, 2);
INSERT INTO EMPLOYEE VALUES(4, ‘刘武龙‘, TO_DATE(‘1979.07.18‘,‘yyyy.mm.dd‘), ‘陕西西安‘, 2);
INSERT INTO EMPLOYEE VALUES(5, ‘向小梅‘, TO_DATE(‘1982.03.03‘,‘yyyy.mm.dd‘), ‘四川成都‘, 2);
INSERT INTO EMPLOYEE VALUES(6, ‘周斌‘, TO_DATE(‘1985.11.08‘,‘yyyy.mm.dd‘), ‘四川成都‘, 4);
INSERT INTO EMPLOYEE VALUES(7, ‘王强‘, TO_DATE(‘1985.01.25‘,‘yyyy.mm.dd‘), ‘四川成都‘, 4);

 

-- 定义变量
DECLARE
 cnt NUMBER(4) := 5;
BEGIN
 DBMS_OUTPUT.PUT_LINE(‘数字:‘ || CNT);
END;

-- %TYPE
DECLARE
 emp_name employee.name%TYPE; -- emp_name类型与employee表中name列的类型一致
BEGIN
 SELECT name INTO emp_name FROM employee WHERE id=&emp_id; -- &emp_id 从键盘接收输入
 DBMS_OUTPUT.PUT_LINE(‘姓名:‘ || emp_name);
END;

-- %ROWTYPE
DECLARE
 rec employee%ROWTYPE;
BEGIN
 SELECT * INTO rec FROM employee WHERE id=1;
 DBMS_OUTPUT.PUT_LINE(‘姓名:‘ || rec.name || ‘, 生日:‘ || rec.birthday || ‘,地址:‘ || rec.address);
END;

-- 定义 RECORD
DECLARE 
 TYPE emp_type IS RECORD(
 ename employee.name%TYPE NOT NULL := ‘匿名‘,
 ebirth employee.birthday%TYPE,
 eaddr employee.address%TYPE
 );
 emp emp_type;
BEGIN
 SELECT name,birthday,address INTO emp FROM employee WHERE id=4;
 DBMS_OUTPUT.PUT_LINE(‘姓名:‘ || emp.ename || ‘, 生日:‘ || emp.ebirth || ‘,地址:‘ || emp.eaddr);
END;

-- 定义索引表
DECLARE
 TYPE emp_name_type IS TABLE OF employee.name%TYPE
 -- INDEX BY BINARY_INTEGER;
 INDEX BY VARCHAR2(20);
 
 emp_names emp_name_type;
BEGIN
 emp_names(‘lily‘) := ‘Lily‘;
 emp_names(‘lucy‘) := ‘Lucy‘;
 emp_names(‘tom‘) := ‘Tommy‘;
 -- SELECT name INTO emp_names(‘abc‘) FROM employee WHERE id=1;
 DBMS_OUTPUT.PUT_LINE(‘姓名:‘ || emp_names(‘lily‘) || ‘,‘ || emp_names(‘lucy‘) || ‘,‘ || emp_names(‘tom‘));
END;

-- 定义VARRAY

DECLARE
 TYPE array_type IS VARRAY(5) OF VARCHAR2(20);
 
 arr array_type;
BEGIN
 -- 为各元素赋初值
 arr := array_type(‘a‘,‘b‘,NULL,‘c‘, ‘d‘);
 DBMS_OUTPUT.PUT_LINE(‘第一个:‘ || arr(1));
 DBMS_OUTPUT.PUT_LINE(‘第三个:‘ || arr(3));
 arr(3) := ‘张三‘;
 DBMS_OUTPUT.PUT_LINE(‘修改后第三个:‘ || arr(3));
END;     

PL/SQL编程基础

标签:

热心网友 时间:2022-04-08 00:47

《oracle 11g 数据库编程入门与实战》这本书入门不错。我就是买这本,工作时偶尔参考一下。
本书是Oracle 11g的入门教材,是初学者快速掌握Oracle数据库的途径,尤其适合Oracle数据库应用开发人员阅读,来获得应具备的数据库方面的知识和技能。本书从如何安装Oracle数据库入手,到如何掌握和Oracle交互的SQL语言和PL/SQL编程,逐步延伸至数据库的体系结构,并以此为基础,介绍数据库的SQL语句优化和备份恢复等内容。
本书内容共11章,分为5个部分。第1部分是Oracle基础,包括Oracle 11g的安装、SQL语言、数据库对象的管理、PL/SQL编程等;第2部分是Oracle体系结构;第3部分是Oracle数据库的用户及安全管理;第4部分是数据库中的SQL语句优化;第5部分是从程序员的角度来看数据库的备份和恢复。

热心网友 时间:2022-04-08 02:05

网上又教程 你可以下载一个看看啊追问谢谢了,你这个回答太笼统了。。

热心网友 时间:2022-04-08 03:39

其实都差不多,和sql语句基本一样,PL/SQL语句块也不算太难,楼主看看一般的sql语句就能写了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见好多鱼在水里活蹦乱跳 教你如何将让reaver PIN 进度随意更改精确前四位 求个保存PIN进度的方法 ...不上外接键盘,但鼠标一直有用,谁能告诉我怎么回事,先谢了。。_百度... 相机SD卡,卡上图片电脑显示不出来 相机SD卡用读卡器插到电脑上DCIM文件夹不显示照片怎么解决? win10查询错误日志的方法-win10怎么查询错误日志 电脑系统日志文件如何查看电脑里的系统日志 电脑事件日志在哪里看怎样查看电脑使用的日志 win11系统日志在哪里看 win11系统日志怎么看 移动硬盘如何把NTFS分区变成FAT32 怎么把NTFS的移动硬盘转换成FAT32的格式 据说散户的特点是买涨不买跌,那么一般股票下跌的时候的成交量是谁买出来的?大户还是机构?还是少部分理 除了格式化,怎么把移动硬盘分区NTFS格式改成FAT32的? 50万算散户吗 普通散户在投资的时候,非常明显的一个特点是什么? 股票市场中,机构比散户的优势有哪些? 什么是散户特征 股票散户有优势吗? 相对于庄家,散户都有哪些特点? 散户的主要特点 请问国家电网客服电话是多少? 国网上海市电力公司电话是多少? 无界变量和无穷大量的关系是什么? 量子力学中如何判断一个力学量是否是守恒量,论述量子力学中的守恒量和经典力学的守恒量定义有什么不同。 国网陕西电力咸阳客服电话 国网电力客服可以查地址嘛 量子力学对宇宙的物理理论做出什么贡献? QED、QCD、量子场论、规范场论的学习顺序是什么? 这些虚拟硬盘文件类型有什么区别, 如何将移动硬盘格式从NTFS转到FAT32 ? 怎么把移动硬盘的文件系统ntfs格式改回成fat32格式 如何把移动硬盘的NTFS文件系统改成FAT32 怎样把移动硬盘NTFS格式转换成FAT格式? 移动硬盘NTFS格式想改成fat32格式 怎么分区? 怎样将移动硬盘ntfs转换成FAT32,另FAT32是否只能分40G以下的区 我的移动硬盘是NTFS格式的,我要转换成FAT32格式的,怎么办? 如何把移动硬盘NTFS格式转换成FAT32格式 如何用IP地址获取手机型号 怎么把移动硬盘从NTFS变成FAT32 买了一个1TB的移动硬盘,怎么把NTFS转换成FAT32 iphone信息显示手机型号怎么关闭 移动硬盘怎样将ntf转成fat32 通过手机ip地址怎么找到手机型号规格 怎样把一个大于4G的文件下载到FAT32格式16G的移动硬盘里? 为什么在iphone 5s用喜马拉雅听书,锁屏1分钟后就会自动暂停? 被称为加权平均股价的是 喜马拉雅fm为啥手机屏幕一黑自己就停住了,,必须屏幕一直亮着才不会停 ... 算术平均股价和加权平均股价的区别 都怎么算的 iphone手机听蜻蜓,喜马拉雅广播之类的软件wifi环境下听新闻一会就自动中断了。