• 初学Oracle的笔记(2)——基础内容(实时更新中..)


    续 初学Oracle的笔记(1)——基础内容(实时更新中..)

    1.oracle中创建一张表,写法与sql server中的一样。
     

    SQL> create table Course
    2 ( cno char(8),
    3 cname varchar2(20),
    4 ccredit int,
    5 cpno char(8)
    6 );

    表已创建。

    但是,在写的过程中,发现cno这列的属性少写了一个not null。于是试着用原来sql server中的修改列属性的写法试了下,发现不行。
     

    SQL> alter table Course alter cno char(8) not null;
    alter table Course alter cno char(8) not null
    *
    第 1 行出现错误:
    ORA-01735: 无效的 ALTER TABLE 选项

    网上找了下,oracle中,修改列的属性的写法有点不同。
     

    SQL>alter table Course MODIFY(cno char(8) not null)
    SQL> /

    表已更改。

    SQL> desc course
    名称 是否为空? 类型
    ----------------------------------------- -------- ----------------------------
    CNO NOT NULL CHAR(8)
    CNAME VARCHAR2(20)
    CCREDIT NUMBER(38)
    CPNO CHAR(8)

    2.如果要添加一列怎么写呢?
    sql server中的写法是:
     Alter table course cdept char(8);

    在oralce中写的试了下,能够运行成功,如下:
     SQL> alter table course 

    2 add cdept char(8);

    表已更改。

    查看下此时的表的结构,如下:

    SQL> desc course;
    名称 是否为空? 类型
    ----------------------------------------- -------- ---------------------
    CNO NOT NULL CHAR(8)
    CNAME VARCHAR2(20)
    CCREDIT NUMBER(38)
    CPNO CHAR(8)
    CDEPT CHAR(8)

    3.如果要删除一列要怎么写呢?
    sql server中的写法大家应该挺熟悉的,如下:
    Alter table Course drop  cpno;

    在oracle中试了下,有错误,说缺少关键字:
     

    SQL> alter table course
    2 drop cdept;
    drop cdept
    *
    第 2 行出现错误:
    ORA-00905: 缺失关键字

    那么缺少的是什么关键字呢?网上找了下原因,好像是column。这个关键字,添加进去再试了下,发现就可以了:

    SQL> alter table course
    2 drop column cdept;

    表已更改。

     此时再看下表的结构,cdept列真的删除了。

    以下几个也是在创建表后,修改表结构是比较常用的,这边不一个个试过了,给大家参考:

    1.想修改表Course中的属性cname VARCHAR2(20),长度修改为100
    (只能从小到大,100-->20就不可以了)。
         ALTER table course MODIFY(cname VARCHAR2(100)); 
    2。如需要修改属性col1的名称为col2。
         ALTER TABLE Course MODIFY(col1 VARHCAR2(50), col2 VARCHAR2(100));
    3.仅修改字段名:
         ALTER TABLE liwh_620 RENAME COLUMN device_number TO serial_number; 
    
    

    问题:使用scott登录Oracle以后,创建视图,提示“权限不够”,怎么解决?
    回答:
    这是因为scott这个帐户目前没有创建视图的权限。
    解决方法为:
    首先使用system帐户进行登录,其中“tigertiger”为安装Oracle时所指定的密码(可修改):
    sqlplus system/tigertiger

    然后执行:
    grant create any view to scott
    提示:授权成功。
    执行:
    exit
    退出当前system帐户。

    再使用sqlplus登录就可以创建视图了,如:
    sqlplus scott/tigert
    下面创建一个最简单视图:
    create or replace view v1
    as
    select * from t1;

     

     今天的笔记就先做到这,主要介绍了下,我在创建数据表的时候碰到的些问题和注意点,希望对和我一样的初学者有帮助。

  • 相关阅读:
    浅析ES6中的iterator
    nodejs中的异步回调机制
    用好js与nodejs中的try...catch
    vscode设置html默认浏览器
    nodejs中相互引用(循环引用)的模块分析
    ES6—带默认值的函数参数及其作用域
    函数声明与函数表达式的区别
    let块级引起的闭包思考
    进程与线程
    angular(^4)-监控表格按键行为的问题
  • 原文地址:https://www.cnblogs.com/jianglan/p/2389842.html
Copyright © 2020-2023  润新知