Before posting this question, I have tried so many things but that was not helpful for me.
I want to rename the column of table at sql server 2005, following query I have run at sql server2005:
1) ALTER TABLE Details RENAME COLUMN
AccountID TO UID; but it gives me the
error: Incorrect syntax near the
keyword 'COLUMN'.
2)I have added one new column in the
table by query: ALTER TABLE Details
ADD BID uniqueidentifier; and then I
want to set the coulmn property to not
null .
How can i do that?
Thanks in advance
AS
Use sp_Rename 'TableName.Column', 'NewColumnName', 'COLUMN'.
In order to do your second part of the question, you'll need to do:
ALTER TABLE myTable
ADD myColumn UNIQUEIDENTIFIER NOT NULL DEFAULT 'some default value'
If you don't want to specify a default value, you'll have to first create the column with NULL. Once the column is created, you can then populate with your desired values and then re-alter the column to NOT NULL.
1) Instead of using ALTER TABLE, why not use sp_rename? For example:
EXEC sp_rename 'Details.[AccountID]', 'title', 'UID'
2) You can use ALTER TABLE Details ALTER COLUMN BID NOT NULL, but you'll probably want to specify a default value for it also, if the table already has data in it.
Related
I Created the db with phpmyadmin and created 8 columns i forgot to create date column i tried to create it with this code and i got this
ALTER TABLE "users" ADD "cdate" DATE
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use
near '"users" ADD "cdate" DATE' at line 1
You can Use phpmyadmin to add a new column without any code
Or Use this :
ALTER TABLE `users` ADD `cdate` DATE
You should use this ` not this "
you can add columns to existing table using phpmyadmin
below the table structure you can find add [num] columns
and since you asked
ALTER TABLE `users` ADD `cdate` DATE
Read about this in the documentation https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
ALTER TABLE table_name ADD column_name column_definition
you dont need any qoute
ALTER TABLE users ADD cdate DATE
Backticks are to be used for table and column identifiers, but are only necessary when the identifier is a reserve word of mysql
I have a table in a database created in oracle 10G. It contains a column of type 'VARCHAR' and stores date as string in this format-> 'dd-mon-yyyy' eg: '12-aug-2008'. Now I want to change the datatype of this column from VARCHAR to DATE. but when i perfrom this query->
ALTER TABLE sales_order
MODIFY COLUMN delivery_date DATE;
I get following error
ORA-00905: missing keyword
I have also tried :
ALTER TABLE sales_order
ALTER COLUMN delivery_date DATE;
I got the error :
ORA-01735: invalid ALTER TABLE option
However when i try to add a fresh column with DATE datatype it works fine.
example :
ALTER TABLE sales_order
ADD delivery DATE;
So, can anybody suggest me a way to change the datatype without deleting the column and its data.
It's the first one, with a slight modification:
ALTER TABLE sales_order MODIFY (delivery_date DATE);
But I'm not sure that will work for those particular datatypes and it also may not work depending on the current data.
You may find it necessary in that case to:
create a new column X of date type.
populate X based on the old column (may need several passes of data fix-ups to work).
delete old column.
rename X to old column name.
Although its a pretty old question, I'll put my solution here for people seeking for a solution:
Here's my solution and it works perfectly.
ALTER TABLE `sales_order` CHANGE `delivery_date` `delivery_date` DATE;
Thank you
modify a column then syntax is:-
alter table table_name modify column_name datatype;
but when you modify the column datatype column must be empty
Thanks for the hints! This got it for me.
alter table Table_Name
Alter column Column_Name datatype
GO
I too was needing to change from a VARCHAR to a date. I am working in SQL 2008 R2. I have found that if I bring in dates as a char or varchar and then change the type to date or datetime, I can catch time/date problems more easily.
THIS STATEMENT WILL FAIL IF YOUR DATA HAS ANY BAD DATES. (I break the date down into sections to find the bad date so I can correct and then I can alter the column type.)
Alternatively, you could create a new column, in which the data type is DATE. then pass the data in your varchar as a date .then drop your initial column and finally rename your new column to what it was initially...code below.
ALTER TABLE my_table ADD (new_col DATE);
UPDATE my_table SET new_col=TO_DATE(old_col,'MM/DD/YYYY');
ALTER TABLE my_table DROP (old_col);
ALTER TABLE my_table RENAME COLUMN new_col TO old_col;
alter table employee add (DOB varchar(10));
if you add a column with datatype varchar and if you want to modify the datatype of DOB then you can use this command ->
alter table employee modify(DOB date);
Now the table is modified.
I have database and some text fields are CLOB type, I need to change most of these into VARCHAR2.
Have tried to do that using SQL Developer tool, by clicking edit on table, but get error like this one:
The following SQL statement failed:
ALTER TABLE TBL_PEOPLE MODIFY (PERSON VARCHAR2(150) )
Want to ask, how can this change be done
You can't, directly. The code you tried will have got an `ORA-22859, presumably. (It's helpful to show the actual errors you get, of course).
You'll need to add a new varchar2 column; copy the data across - or a substring of it if it might be larger than the new column you're creating; drop the clob column. You can rename the columns so it looks fairly transparent.
As in this SQL Fiddle:
alter table tbl_people rename column person to clob_person;
alter table tbl_people add (person varchar2(150));
update tbl_people set person = clob_person;
alter table tbl_people drop column clob_person;
Obviously don't drop the old column until you're sure the data has copied without errors. Also take into account any constraints, indexes, etc. that might exist in the old column; they will need to be recreated. And anything that references the old column will have been invalidated - generally procedures will recompile themselves on next use.
So be careful, test it first, and plan some down time.
ALTER TABLE tablename ADD (FIELD_LIST_TEMP VARCHAR2);
UPDATE tablename SET FIELD_LIST_TEMP = FIELD_LIST;
ALTER TABLE tablename DROP COLUMN FIELD_LIST;
ALTER TABLE tablename RENAME COLUMN FIELD_LIST_TEMP TO FIELD_LIST;
Here FIELD_LIST existing column which is defined it as CLOB. With above query it will change from CLOB to VARCHAR2.
I am working on an SQL Database, I have a column named "Price". When the database was created the column "Price" was set to NVARCHAR I need to change its type to decimal(18, 2) without losing the data in the database. This should be done by an SQL Script
I thought of creating a new column, moving the data to it, remove the old column, and then rename the newly created column.
Can someone help me with an example on how to do this?
Also is there a function in SQL to Parse string to decimal?
Thanks
You don't need to add a new column two times, just remove the old one after updating the new one:
ALTER TABLE table_name ADD new_column_name decimal(18,2)
update table_name
set new_column_name = convert(decimal(18,2), old_column_name)
ALTER TABLE table_name DROP COLUMN old_column_name
Note that if the old_column_name is not numeric, the convert may fail.
Something Like
Alter Table [MyTable] Add Column NewPrice decimal(18,2) null
Then
Update [MyTable] Set NewPrice = Convert(decimal(18,2),[Price]) Where Price is not null
If the above fails then you'll need to beef it up to deal with the funnies
Once you are happy drop the old column with an Alter Table and rename the new one with sp_rename
If you just want to change only column's data type, you can do like this=>
Alter Table YourTableName
Alter Column ColumnName DataType
I already test this on SQL server 2012 and its work.
You can make those changes visually using Management Studio. Then, use the button "Generate Change Script" to get the script for the changes you made. Be sure to do all testing in a copy of the original ddbb, in case something goes wrong..
How do I add a column after another column within MS SQL by using SQL query?
TempTable
ID int,
Type nvarchar(20),
Active bit
NewTable
ID int,
Type nvarchar(20),
Description text,
Active bit
That is what I want, how do I do that
Assuming MySQL (EDIT: posted before the SQL variant was supplied):
ALTER TABLE myTable ADD myNewColumn VARCHAR(255) AFTER myOtherColumn
The AFTER keyword tells MySQL where to place the new column. You can also use FIRST to flag the new column as the first column in the table.
It depends on what database you are using. In MySQL, you would use the "ALTER TABLE" syntax. I don't remember exactly how, but it would go something like this if you wanted to add a column called 'newcol' that was a 200 character varchar:
ALTER TABLE example ADD newCol VARCHAR(200) AFTER otherCol;
In a Firebird database the AFTER myOtherColumn does not work but you can try re-positioning the column using:
ALTER TABLE name ALTER column POSITION new_position
I guess it may work in other cases as well.