我创建了下表
CREATE TABLE PLACE(
POSTCODE VARCHAR(10) PRIMARY KEY,
STREET_NAME VARCHAR(10),
COUNTY VARCHAR(10),
CITY VARCHAR(10));
我想将name
,county
和city
从varchar(10)
更改为varchar(20)
。我该怎么做?
答案 0 :(得分:32)
ALTER TABLE place
MODIFY( street_name VARCHAR2(20),
county VARCHAR2(20),
city VARCHAR2(20) )
请注意,我也将数据类型从VARCHAR
更改为VARCHAR2
更为常规。目前两者之间没有功能差异,但VARCHAR
的行为将来可能会发生变化以符合SQL标准。
答案 1 :(得分:5)
如果您只想更改以下列的使用类型:
ALTER TABLE <table_name> MODIFY (<column_name> <new_Type>)
in your case:
ALTER TABLE place MODIFY (street_name VARCHAR2(20),
county VARCHAR2(20),
city VARCHAR2(20))
如果您的表格有数据,您可以采取以下措施:
要重命名列,请使用以下内容:
ALTER TABLE <table_name> rename column <column_name> to <new_column_name>
答案 2 :(得分:0)
ALTER TABLE table_name
MODIFY column_name datatype;
答案 3 :(得分:0)
一个非常通用的例子在这里做同样的事情 -
表格:
CREATE TABLE TABLE_NAME(
ID NUMBER PRIMARY KEY,
COLUMN_NAME NUMBER NOT NULL, -- Modify with varchar2(20) NOT NULL
.
.
.
);
将COLUMN_NAME的数据类型从NUMBER修改为VARCHAR2
的步骤步骤:
--Step 1: Add a temp column COLUMN_NAME_TEMP in table TABLE_NAME to hold data temporary
ALTER TABLE TABLE_NAME
ADD( COLUMN_NAME_TEMP varchar2(20) );
--Step 2: Update temp column COLUMN_NAME_TEMP with Old columns COLUMN_NAME data
UPDATE TABLE_NAME
SET COLUMN_NAME_TEMP = COLUMN_NAME;
--Step 3: Remove NOT NULL constrain from old columns COLUMN_NAME
ALTER TABLE TABLE_NAME MODIFY (COLUMN_NAME NULL);
--Step 4: Update old columns COLUMN_NAME data with NULL
UPDATE TABLE_NAME SET COLUMN_NAME = NULL;
--Step 5: Alter table old columns COLUMN_NAME to new data type varchar2(20)
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME varchar2(20);
--Step 6: Update old columns COLUMN_NAME with data from temp columns COLUMN_NAME_TEMP
UPDATE TABLE_NAME
SET COLUMN_NAME = COLUMN_NAME_TEMP;
--Step 7: Add NOT NULL constrain from old columns [COLUMN_NAME]
ALTER TABLE TABLE_NAME MODIFY (COLUMN_NAME NOT NULL);
--Step 8: Drop the temp column [COLUMN_NAME_TEMP]
alter table TABLE_NAME drop column COLUMN_NAME_TEMP;
如果 NOT NULL 约束不存在,则省略 step-3 和 step-7
答案 4 :(得分:-1)
Alter table placemodify(street name varchar2(20),city varchar2(20)
答案 5 :(得分:-2)
如果表格中已有一些记录,则无法修改表格的数据类型。
您必须先清空列的表记录(您想要修改数据类型),然后使用以下命令:
alter table place
modify ( street_name varchar2(20), country varchar2(20), city varchar2(20) );
肯定会起作用!