oracle入门(3)

2019-03-09 23:13

Oracle讲解

锁、分区、视图、索引等内容在此省略

2.5 Oracle序列

序列类似于SQLSERVER里的标识列,它是用来生成唯一的、连续的整数的数据库对象,可按升序或降序排列

CREATE SEQUENCE student_seq

START WITH 10 --从哪里开始 INCREMENT BY 2 --每次增加多少 MAXVALUE 2000 --最大值是多少

NOCYCLE --达到最大值后不能继续从头开始生成 CACHE 30; --使用CACHE预先生成一系列数据在缓存

访问序列

NEXTVAL访问序列的下一个值 CURRVAL返回序列的当前值

INSERT INTO Student(stuID,stuName) VALUES ('Y2'||student_seq.NEXTVAL,'张三');

SELECT stduent_seq.CURRVAL FROM dual; 更改序列

ALTER SEQUENCE student_seq MAXVALUE 5000 CYCLE; 删除序列

DROP SEQUENCE student_seq; 查看有所有序列

select sequence_name from ALL_SEQUENCES;

//创建学生表、课程表,成绩表所使用的序列

CREATE SEQUENCE student_seq START WITH 1 INCREMENT BY 1; CREATE SEQUENCE course_seq START WITH 1 INCREMENT BY 1; CREATE SEQUENCE score_seq START WITH 1 INCREMENT BY 1; /

//使用序列往三张表里放入测试数据

INSERT INTO student VALUES(student_seq.NEXTVAL,'杰克逊','JACKSON@163.com',23,'公安');

INSERT INTO student VALUES(student_seq.NEXTVAL,'张学友','zhangxueyou@sina.com',25,'香港');

INSERT INTO student VALUES(student_seq.NEXTVAL,'张国荣','zhangguorong@126.com',30,'沙市');

INSERT INTO student VALUES(student_seq.NEXTVAL,'范冰冰','fanbingbing@jzaccp.com',18,'

11

Oracle讲解

荆州');

--往课程表里放数据

INSERT INTO course VALUES(course_seq.NEXTVAL,'JAVA'); INSERT INTO course VALUES(course_seq.NEXTVAL,'HTML'); INSERT INTO course VALUES(course_seq.NEXTVAL,'SQL'); INSERT INTO course VALUES(course_seq.NEXTVAL,'C#'); ALTER TABLE student MODIFY(stuName varchar(25)); ALTER TABLE student ADD(stuEmail varchar(20));

INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1021,21,80); INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1021,22,56); INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1021,23,76); INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1021,24,35);

INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1022,21,52); INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1022,22,90); INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1022,23,98);

INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1023,21,65); INSERT INTO SCORE VALUES(score_seq.NEXTVAL,1023,24,24);

INSERT、UPDATE、DELETE后执行COMMIT;不然数据是临时的

//内连接查询(不是PL/SQL不要再后面加/因为加了会执行两次) SELECT stu.stuName 用户名,sco.score 成绩,sco.courseId 课程编号 from student stu INNER JOIN score sco ON(stu.stuId=sco.stuId); //外连接查询

SELECT stu.stuName 学员姓名,sco.score 成绩,sco.courseId 课程编号 FROM student stu,score sco WHERE stu.stuId=sco.stuId(+); 等价于:

SELECT stu.stuName 学员姓名,sco.score 成绩,sco.courseId 课程编号 FROM student stu LEFT OUTER JOIN score sco ON(stu.stuId=sco.stuId);

//+跟着哪边就以对方作为基准去找

PL/SQL简介

(Procedural Language/SQL)过程语言/SQL是结合了ORACLE的过程语言和结构化查询语言SQL的一种扩展语言。 其一般分为三部分:

[DECLARE declarations] --声明部分 BEGIN Executable statements --可执行部分

12

Oracle讲解

[Exception exception handlers] --异常处理部分 END;

PL/SQL对大小写不敏感,可以包含下列复合符号:

:= || -- /* */ << >> .. ** 赋值 连接 单行注释 多行注释 标签分隔符 范围 求幂 声明变量必须指定变量的数据类型,可以在声明的时候进行初始化 声明常量时被赋予初始值 DECLARE vcode VARCHAR2(10); vname VARCHAR2(25):=’JACK’; total CONSTANT NUMBER:=100; BEGIN vcode:=’Y21001’; .. END;

其中:=可以使用DEFAULT代替 数据类型: 数据类型 BINARY_INTEGER NUMBER PLS_INTEGER CHAR RAW LONG或LONG RAW VARCHAR2 DATE TIMESTAMP BOOLEAN BFILE BLOB CLOB NCLOB %TYPE %ROWTYPE

描述 带符号整数,有很多子类型 存储整数定点数浮点数,子类型有FLOAT、INTEGER等 带符号的整数,效率更高 存储固定长度的字符串 存储二进制或字节串,最大2000字节 最大2G 可变长度的字符串,子类型STRING与VARCHAR 日期类型 日期类型是DATE的扩展 存储TRUE、FALSE、NULL 存储二进制对象,BFILE是文件定位器 存储二进制对象 存储大型字符数据 存储大型NCHAR数据 引用某个变量或某列的数据类型 表中一行的记录类型,可以表示从游标提取出的整行数据 13

Oracle讲解

Oracle的控制结构:

3.1 条件结构:

IF 条件 THEN 语句; END IF;

IF 条件 THEN 语句1; ELSE 语句2; END IF;

IF 条件1 THEN 语句1;

ELSEIF 条件2 THEN 语句2; ELSE 语句3; END IF;

CASE 表达式 WHEN 表达式1 THEN 语句1; WHEN 表达式2 THEN 语句2; WHEN 表达式3 THEN 语句3; ELSE 语句n; END CASE;

SET SERVEROUTPUT ON; DECLARE scode1 NUMBER(2):=7; BEGIN scode1:=&请输入scode的值; CASE scode1 WHEN 1 THEN DBMS_OUTPUT.PUT_LINE('1---添加用户'); WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('2---修改用户'); WHEN 3 THEN DBMS_OUTPUT.PUT_LINE('3---删除用户'); ELSE DBMS_OUTPUT.PUT_LINE('请输入1-3之间的数'); END CASE; END; /

14

Oracle讲解

&grade是要求用户输入grade的值

SET SERVEROUTPUT ON 打开输出

DBMS_OUTPUT.PUT_LINE(‘输出的内容’);

3.2 循环结构:

LOOP 循环体语句; END LOOP;

SET SERVEROUTPUT ON; DECLARE n NUMBER(2):=0; BEGIN LOOP n:=n+1; DBMS_OUTPUT.PUT_LINE('accp'); EXIT WHEN n>10; END LOOP; END; /

WHILE 条件 LOOP 语句;@ END LOOP;

SET SERVEROUTPUT ON; DECLARE n NUMBER(2):=0; BEGIN WHILE n<10LOOP n:=n+1; DBMS_OUTPUT.PUT_LINE('accp'); END LOOP; END; /

--循环加分,直到都及格,最高分不能超过100

--给JAVA(21)成绩循环加5分,直到都及格为止,分数不能超过100分 SET SERVEROUTPUT ON; DECLARE

num NUMBER(5):=1; BEGIN

15


oracle入门(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南海公司案例分析审计作业

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: