Oracle数据库脚本学习:建用户、删用户、建表、改表、删表

本文介绍了一个名为dbscore.sh的Shell脚本,该脚本可以创建或删除用户及表,并更新表TEST_SCORE中特定范围的成绩。文章还提供了创建用户、建表、更新表数据及删除用户的SQL脚本。

一、Shell脚本:dbscore.sh

调用方法:

/bin/sh dbscore.sh create_all

/bin/sh dbscore.sh update_score

/bin/sh dbscore.sh drop_all

#!/bin/sh

echo "$1"

if [ "$1" == "create_all" ]; then

    echo Create User and Table...
    sqlplus / as sysdba @create_all.sql

elif [ "$1" == "drop_all" ]; then

    echo Drop User and Table...
    sqlplus / as sysdba @drop_all.sql

elif [ "$1" == "update_score" ]; then
    
    echo Update Score...
    sqlplus / as sysdba @update_score.sql

fi

二、建用户、建表:create_all.sql

SET SERVEROUTPUT ON

CREATE USER "TSYBIUS" IDENTIFIED BY "1234";
GRANT "DBA" TO "TSYBIUS";

CREATE TABLE TEST_SCORE
(
    StudentId    number(10,0),
    StudentName  varchar2(20),
    TestScore    number(10,0),
    PRIMARY KEY(StudentId)
);

INSERT INTO TEST_SCORE (StudentId, StudentName, TestScore)
    VALUES (0, 'Gaius', 70);

INSERT INTO TEST_SCORE (StudentId, StudentName, TestScore)
    VALUES (1, 'Marcus', 57);

INSERT INTO TEST_SCORE (StudentId, StudentName, TestScore)
    VALUES (2, 'Titus', 54);

INSERT INTO TEST_SCORE (StudentId, StudentName, TestScore)
    VALUES (3, 'Quintus', 49);

INSERT INTO TEST_SCORE (StudentId, StudentName, TestScore)
    VALUES (4, 'Verinus', 60);

INSERT INTO TEST_SCORE (StudentId, StudentName, TestScore)
    VALUES (5, 'Rufus', 59);

EXIT

三、将表中属性TestScore在[55,60)的值调整为60:update_score.sql

(就是把那些考试成绩和及格线差不到5分的学生分数提到及格,汗!)

SET SERVEROUTPUT ON

DECLARE

    V_ID    TEST_SCORE.StudentId%TYPE;
    V_NAME  TEST_SCORE.StudentName%TYPE;
    V_SCORE TEST_SCORE.TestScore%TYPE;
    CURSOR C IS SELECT StudentId, StudentName, TestScore FROM TEST_SCORE;
    V_COUNTER    NUMBER(15,0)    :=0;

BEGIN

    OPEN C;
    
    LOOP
        FETCH C INTO V_ID, V_NAME, V_SCORE;
        EXIT WHEN C%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Checking Data: '||C%ROWCOUNT);
        IF V_SCORE<60 AND V_SCORE>=55 THEN
            UPDATE TEST_SCORE SET TestScore=60 WHERE StudentId=V_ID;
            V_COUNTER:=V_COUNTER+1;
            DBMS_OUTPUT.PUT_LINE(V_NAME||': Update Data!');
        END IF;
    END LOOP;

    CLOSE C;
    DBMS_OUTPUT.PUT_LINE('Total Update: '||V_COUNTER);

END;
/

EXIT

四、删用户、删表:drop_all.sql

DROP USER "TSYBIUS" CASCADE;
DROP TABLE TEST_SCORE;

EXIT

END

转载于:https://my.oschina.net/Tsybius2014/blog/286467

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值