初学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;

 

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

posted @ 2012-03-11 10:28  然嗄  阅读(6356)  评论(2编辑  收藏  举报