Oracle(PLSQL)入门学习七

database

学习视频: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;

record类型,就像定义C#中的类

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#的字典类型。

declare

type myTable istableofnumberindexby 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 >30then

dbms_output.put_line("ok啊");

elsif i >5then-- 注意是 elsif

dbms_output.put_line("也ok啊");

else--注意没有then

dbms_output.put_line("不ok啊");

endif;

end;

/

declare

i number :=10;

begin

if i >30then

dbms_output.put_line("ok啊");

else--注意没有then

dbms_output.put_line("不ok啊");

endif;

end;

/

declare

i number :=10;

begin

if i >30then

dbms_output.put_line("ok啊");

endif;

end;

/

null值不参与比较运算,不会出现运算结果。如果用在if比较判断分支里,只能进else。

简单循环:loop...exit when;... end loop;要写退出条件,不然会陷入死循环。

declare

i number :=0;

begin

loop

dbms_output.put_line(i);

i := i +1;

exitwhen i =10; --不写退出条件,会陷入死循环。

--i := i + 1; 也可以在这里写条件

end loop;

end;

普通循环:使用while,条件前置了。

declare

i number :=0;

begin

while i <100 loop

if mod(i, 2) =0then

dbms_output.put_line(i);

endif;

i := i +1;

end loop;

end;

for循环:for的变量只能自增。但使用reverse,可以反转增长的序列。

begin

for i in1 .. 10 loop

dbms_output.put_line(i);

end loop;

end;

/

begin

for i inreverse1 .. 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 =7and y =3then

exit wai; --退出外层循环

endif;

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;

 

以上是 Oracle(PLSQL)入门学习七 的全部内容, 来源链接: utcz.com/z/533468.html

回到顶部