Oracle增加修改删除字段/主键
生活随笔
收集整理的這篇文章主要介紹了
Oracle增加修改删除字段/主键
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
修改字段名稱
alter table xgj rename column old_name to new_name;修改字段類型
alter table tablename modify (column datatype [default value][null/not null],….);栗子
假設(shè)表xgj,有一個(gè)字段為name,數(shù)據(jù)類型char(20)。
create table xgj( id number(9) , name char(20) )1、字段為空,則不管改為什么字段類型,可以直接執(zhí)行:
SQL> select * from xgj ;ID NAME ---------- --------------------SQL> alter table xgj modify(name varchar2(20));Table alteredSQL>2、字段有數(shù)據(jù),若兼容,改為varchar2(20)可以直接執(zhí)行:
--緊接著第一個(gè)情況操作,將name的類型改為創(chuàng)建時(shí)的char(20) SQL> alter table xgj modify(name char(20));Table altered --插入數(shù)據(jù) SQL> insert into xgj(id,name) values (1,'xiaogongjiang');1 row insertedSQL> select * from xgj;ID NAME ---------- --------------------1 xiaogongjiangSQL> alter table xgj modify(name varchar2(20));Table alteredSQL> desc xgj; Name Type Nullable Default Comments ---- ------------ -------- ------- -------- ID NUMBER(9) Y NAME VARCHAR2(20) Y SQL> alter table xgj modify(name varchar2(40)); Table alteredSQL> alter table xgj modify(name char(20)); Table altered3、字段有數(shù)據(jù),當(dāng)修改后的類型和原類型不兼容時(shí) ,執(zhí)行時(shí)會(huì)彈出:“ORA-01439:要更改數(shù)據(jù)類型,則要修改的列必須為空”
栗子:
--建表 create table xgj (col1 number, col2 number) ; --插入數(shù)據(jù) insert into xgj(col1,col2) values (1,2); --提交 commit ; --修改col1 由number改為varchar2類型 (不兼容的類型) alter table xgj modify ( col1 varchar2(20))解決辦法:
- 修改原字段名col1 為col1 _tmp
- 增加一個(gè)和原字段名同名的字段col1
- 將原字段col1_tmp數(shù)據(jù)更新到增加的字段col1
- 更新完,刪除原字段col1_tmp
總結(jié):
1、當(dāng)字段沒(méi)有數(shù)據(jù)或者要修改的新類型和原類型兼容時(shí),可以直接modify修改。
2、當(dāng)字段有數(shù)據(jù)并用要修改的新類型和原類型不兼容時(shí),要間接新建字段來(lái)轉(zhuǎn)移。
添加字段
alter table tablename add (column datatype [default value][null/not null],….);使用一個(gè)SQL語(yǔ)句同時(shí)添加多個(gè)字段:
alter table xgjadd (name varchar2(30) default ‘無(wú)名氏’ not null,age integer default 22 not null,salary number(9,2));刪除字段
alter table tablename drop (column);創(chuàng)建帶主鍵的表
create table student ( studentid int primary key not null, studentname varchar(8), age int);1、創(chuàng)建表的同時(shí)創(chuàng)建主鍵約束
(1)無(wú)命名
(2)有命名
create table students ( studentid int , studentname varchar(8), age int, constraint yy primary key(studentid));2、刪除表中已有的主鍵約束
(1)無(wú)命名
可用 SELECT * from user_cons_columns;
查找表中主鍵名稱得student表中的主鍵名為SYS_C002715
(2)有命名
alter table students drop constraint yy;3、向表中添加主鍵約束
alter table student add constraint pk_student primary key(studentid);總結(jié)
以上是生活随笔為你收集整理的Oracle增加修改删除字段/主键的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle-分析函数之取上下行数据la
- 下一篇: Oracle-等待事件解读