续 初学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列真的删除了。
以下几个也是在创建表后,修改表结构是比较常用的,这边不一个个试过了,给大家参考:
问题:使用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;
今天的笔记就先做到这,主要介绍了下,我在创建数据表的时候碰到的些问题和注意点,希望对和我一样的初学者有帮助。