續 初學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;
今天的筆記就先做到這,主要介紹了下,我在建立資料表的時候碰到的些問題和注意點,希望對和我一樣的初學者有協助。