大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Oracle(PLSQL)入门学习七[通俗易懂],希望您对编程的造诣更进一步.
学习视频:https://www.bilibili.com/video/BV1tJ411r7EC?p=74
设计数据库步骤:
良好的数据库设计:节省空间,数据完整,方便开发。
步骤:1、收集信息 2、标识实体 3、标识实体属性 4、标识实体之间的关系 5、画E-R图,编写Sql
概念了解:
- 映射基数有一对一、一对多、多对一、多对多。
- 三大范式:每列是不可再分的数据单元,例如“地址列”内容“中国北京”可以拆分“国家列”和“城市列”;每个表只描述一件事情。列和主键要有直接的关系,不能间接相关。
PL/SQL:
是一种过程语言,与结构化SQl结合的编程语言,对SQL语句的扩展。分为三个部分:声明,执行,异常。如果没有东西要声明可以不写declare,不捕获异常可以不写exception。注释分分单行“–”和多行“/**/”,变量标识符最大长度31。
变量的声明以“变量名 类型 := 值”,注意“:=”是赋值用的,而“=”是判断用的。如果要声明常量,在变量名后加关键字“constant”即“变量名 constant 类型 := 值”,声明常量必须赋值。
属性类型:
属性类型有%Type、%RowType。应该了解的常见类型有:number(整型和浮点)、char、varchar2(可变长度)、date、boolean、binary_integer(整型)。“%Type”用于引用表格字段的类型,用法“表名.列名%Type”。
declare name varchar2(20) := "数据库"; i constant number :=3; salary emp.sal%type:=1000; begin dbms_output.put_line(name || "hahhah"); end;
代码100分
record类型,就像定义C#中的类
代码100分declare type student is record( stuid emp.empno%type, stuname emp.ename%type ); stu student; begin stu.stuid:=11; stu.stuname:="bibi"; dbms_output.put_line("学号" || stu.stuid); end;
%rowtype ,就是一种引用表的record类型。
declare stu emp%rowtype; --emp是一个表,使用rowtype获取表的行类型。stu其实就是record类型 begin stu.empno := 5555; stu.ename := "bibi"; dbms_output.put_line(stu.empno || stu.ename); select * into stu from emp where empno=7369; dbms_output.put_line(stu.empno || stu.ename); end;
table类型,类似C#的字典类型。
代码100分declare type myTable is table of number index by binary_integer; tableone myTable; x number; begin tableone(0) := 100; tableone(1) := 200; tableone(2) := 200; tableone(4) := 200; tableone(3) := 200; dbms_output.put_line(tableone(0) || tableone(1)); x := tableone.first(); --获取第一个key dbms_output.put_line("第一个key" || x); x := tableone.next(x); --获取当前key的下一个key dbms_output.put_line("第一个key的下一个key" || x); x := tableone.last(); --获取最后一个key dbms_output.put_line("(自动)排序最后的一个key" || x); end;
变量作用域:
declare i number := 90; begin declare j number :=100; begin dbms_output.put_line(j); --使用内层变量 dbms_output.put_line(i); --使用外层变量 end; end;
if分支:if…elsif..else ;if…;if…else..;if….elsif…elsif…各种组合。
declare i number := 10; begin if i > 30 then dbms_output.put_line("ok啊"); elsif i > 5 then -- 注意是 elsif dbms_output.put_line("也ok啊"); else --注意没有then dbms_output.put_line("不ok啊"); end if; end; / declare i number := 10; begin if i > 30 then dbms_output.put_line("ok啊"); else --注意没有then dbms_output.put_line("不ok啊"); end if; end; / declare i number := 10; begin if i > 30 then dbms_output.put_line("ok啊"); end if; end; /
null值不参与比较运算,不会出现运算结果。如果用在if比较判断分支里,只能进else。
简单循环:loop…exit when;… end loop;要写退出条件,不然会陷入死循环。
declare i number := 0; begin loop dbms_output.put_line(i); i := i + 1; exit when i = 10; --不写退出条件,会陷入死循环。 --i := i + 1; 也可以在这里写条件 end loop; end;
普通循环:使用while,条件前置了。
declare i number := 0; begin while i < 100 loop if mod(i, 2) = 0 then dbms_output.put_line(i); end if; i := i + 1; end loop; end;
for循环:for的变量只能自增。但使用reverse,可以反转增长的序列。
begin for i in 1 .. 10 loop dbms_output.put_line(i); end loop; end; / begin for i in reverse 1 .. 10 loop dbms_output.put_line(i); end loop; end; /
多重循环:如果要退出外层循环,应给外层循环起别名,“exit 外层循环”,纯粹的exit只能退出当前循环。
declare x number := 1; y number := 1; begin <<wai>> while x <= 10 loop dbms_output.put_line("----" || x); y := 1; while y <= 5 loop dbms_output.put_line(y); if x = 7 and y = 3 then exit wai; --退出外层循环 end if; y := y + 1; end loop; x := x + 1; end loop; end;
goto:跳转,绕道而行。
begin dbms_output.put_line("1"); dbms_output.put_line("2"); dbms_output.put_line("3"); goto hi; dbms_output.put_line("4"); dbms_output.put_line("5"); <<hi>> dbms_output.put_line("6"); dbms_output.put_line("7"); end;
begin dbms_output.put_line("1"); dbms_output.put_line("2"); dbms_output.put_line("3"); goto hi; dbms_output.put_line("4"); dbms_output.put_line("5"); <<hi>> null; end;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8639.html