Changing Column in MySQL from int to double? - mysql

Basically, I currently have a column in a MySQL table, which is an int.
I'd like to change that to double. I've searched the web, but all it came up with was conversion upon getting the values from the column (like converting some date to Date), but that's not what I mean.
I'm guessing it's something with Alter Table, and I looked that up on the MySQL dev page, but could not find what I was looking for.

Here's the real syntax. Make sure to set the nullability appropriately too:
ALTER TABLE your_table
MODIFY COLUMN your_column DOUBLE NULL;
or
ALTER TABLE your_table
MODIFY COLUMN your_column DOUBLE NOT NULL;

You're right that you need to use ALTER TABLE. The command will look something like this:
ALTER TABLE tablename MODIFY COLUMN columnname DOUBLE;

My SQL is Non-case sensitive*
You can use :
ALTER or alter, TABLE or table, COLUMN or column, DOUBLE or double
Right now , you follow this format
ALTER TABLE table_name MODIFY COLUMN column_name DOUBLE;
I hope,
it will be helpful for you.

Related

Cant rename a column in MySQL [duplicate]

I am trying to rename a column in MySQL community server 5.5.27 using this SQL expression:
ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
I also tried
ALTER TABLE table_name RENAME old_col_name TO new_col_name;
But it says:
Error: check the Manual that corresponds to your MySQL server version
Use the following query:
ALTER TABLE tableName CHANGE oldcolname newcolname datatype(length);
The RENAME function is used in Oracle databases.
ALTER TABLE tableName RENAME COLUMN oldcolname TO newcolname datatype(length);
#lad2025 mentions it below, but I thought it'd be nice to add what he said. Thank you #lad2025!
You can use the RENAME COLUMN in MySQL 8.0 to rename any column you need renamed.
ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
ALTER TABLE Syntax:
RENAME COLUMN:
Can change a column name but not its definition.
More convenient than CHANGE to rename a column without changing its definition.
In Server version: 5.6.34 MySQL Community Server
ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
From MySQL 5.7 Reference Manual.
Syntax :
ALTER TABLE t1 CHANGE a b DATATYPE;
e.g. : for Customer TABLE having COLUMN customer_name, customer_street, customercity.
And we want to change customercity TO customer_city :
alter table customer change customercity customer_city VARCHAR(225);
From MySQL 8.0 you could use
ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
ALTER TABLE Syntax:
RENAME COLUMN:
Can change a column name but not its definition.
More convenient than CHANGE to rename a column without changing its definition.
DBFiddle Demo
You can use following code:
ALTER TABLE `dbName`.`tableName` CHANGE COLUMN `old_columnName` `new_columnName` VARCHAR(45) NULL DEFAULT NULL ;
ALTER TABLE `table_name` CHANGE `$old_column_name` `new_column_name` VARCHAR(40)
this is working for me
Changing name in MySQL we have to use "ALTER" table command followed by "CHANGE". Below is the query.
ALTER TABLE tablename CHANGE COLUMN oldcolname newcolname datatype;
ALTER TABLE tablename CHANGE oldcolname newcolname datatype;
PS- You can add "COLUMN" word or ignore in the query. It will work same.
"RENAME" is used in Oracle database.
ALTER TABLE table_name CHANGE old_column_name new_column_name columnDataType;
Rename column name in mysql
alter table categories change type category_type varchar(255);
In mysql your query should be like
ALTER TABLE table_name change column_1 column_2 Data_Type;
you have written the query in Oracle.
Syntax: ALTER TABLE table_name CHANGE old_column_name new_column_name datatype;
If table name is Student and column name is Name.
Then, if you want to change Name to First_Name
ALTER TABLE Student CHANGE Name First_Name varchar(20);
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
For MySQL 8
alter table creditReportXml_temp change column applicationID applicantID int(11);
for mysql version 5
alter table *table_name* change column *old_column_name* *new_column_name* datatype();
Rename MySQL Column with ALTER TABLE Command
ALTER TABLE is an essential command used to change the structure of a MySQL table. You can use it to add or delete columns, change the type of data within the columns, and even rename entire databases. The function that concerns us the most is how to utilize ALTER TABLE to rename a column.
Clauses give us additional control over the renaming process. The RENAME COLUMN and CHANGE clause both allow for the names of existing columns to be altered. The difference is that the CHANGE clause can also be used to alter the data types of a column. The commands are straightforward, and you may use the clause that fits your requirements best.
How to Use the RENAME COLUMN Clause (MySQL 8.0)
The simplest way to rename a column is to use the ALTER TABLE command with the RENAME COLUMN clause. This clause is available since MySQL version 8.0.
Let’s illustrate its simple syntax. To change a column name, enter the following statement in your MySQL shell:
ALTER TABLE your_table_name RENAME COLUMN original_column_name TO new_column_name;
Exchange the your_table_name, original_column_name, and new_column_name with your table and column names. Keep in mind that you cannot rename a column to a name that already exists in the table.
Note: The word COLUMN is obligatory for the ALTER TABLE RENAME COLUMN command. ALTER TABLE RENAME is the existing syntax to rename the entire table.
The RENAME COLUMN clause can only be used to rename a column. If you need additional functions, such as changing the data definition, or position of a column, you need to use the CHANGE clause instead.
Rename MySQL Column with CHANGE Clause
The CHANGE clause offers important additions to the renaming process. It can be used to rename a column and change the data type of that column with the same command.
Enter the following command in your MySQL client shell to change the name of the column and its definition:
ALTER TABLE your_table_name CHANGE original_column_name new_col_name data_type;
The data_type element is mandatory, even if you want to keep the existing datatype.
Use additional options to further manipulate table columns. The CHANGE also allows you to place the column in a different position in the table by using the optional FIRST | AFTER column_name clause. For example:
ALTER TABLE your_table_name CHANGE original_column_name new_col_name y_data_type AFTER column_x;
You have successfully changed the name of the column, changed the data type to y_data_type, and positioned the column after column_x.
For MySQL <= 8
ALTER TABLE table_names CHANGE `old_column_name` `new_column_name` varchar(50);
Posting it here, it helps helps else ignore it but when trying to use the Change Column and Rename column functions it is throwing me an error.
So figured I would see what statement is generated when we go ahead and rename the column by going into table properties. Below is the command been generated.
EXEC DB.sys.sp_rename N'db.tablename.TrackingIDChargeDescription1' , N'ChargeDescription1', 'COLUMN';
I used and renamed bunch of columns in table.
None of the above worked when I had a column with parenthesis.
Then I tried ` and the magic worked. So if you have a special character in your column by mistake and you want to rename it, use ` for the name of the existing column. For example:
ALTER TABLE table_name RENAME COLUMN column(old) TO new_column;
if you are using gui SQL SMS
you can do db -> Tables -> Table -> columns -> column you want to rename
right click and rename

Hidden character in SQL column

I've copied and pasted an SQL statement which simply adds a column into the table:
ALTER TABLE `users` ADD COLUMN `favourites​` TEXT;
However, where I have copied and pasted, the favourites name has some how managed to pick up a hidden character.
I have left the hidden character in the example above for you to see/or not see as it may be!
It's favourites?, with what appears to be a question mark.
THE PROBLEM: I need to delete this column and re-add it manually so that the hidden character is not present. The problem is that any SQL statement I do, it doesn't recognise the the column name favourites because of the hidden character and I don't know how to target it.
Has anyone got any idea how to get around this?
Do the same use show
SHOW COLUMNS FROM your_table;
for obtain the column name and then copy the column you need in your delete command
alter table your_table drop column your_column_copied
and the add the column with the right name
alter table your_table add column your_column
otherwise, if is impossible get the column_name, you can create a temp table without the wrong column with create/select command
create table (col1, col2, col3)
select col1,col2, col3
from you_table
then drop the original table and rename the temporary table and last add your column with right name
You could use dynamic query:
DECLARE #sql nvarchar(800)
SELECT #sql = 'ALTER TABLE users DROP COLUMN ' + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'users' and COLUMN_NAME LIKE '%favour%'
EXEC sp_executesql #sql
You can obtain the column name by querying INFORMATION_SCHEMA and prepare statement with the obtained column name. Something like this:
DECLARE #StrangeColumnName NVARCHAR(16) := ''
SELECT #StrangeColumnName := COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'users' AND COLUMN_NAME LIKE 'favourites%'
DECLARE #SqlText NVARCHAR(32) := 'ALTER TABLE status DROP COLUMN ?'
EXECUTE #SqlText USING #StrangeColumnName
Maybe open the information schema of the table and copy the column name from there? i don't know which Database are you using. Please update for more information.
If you have access to phpMyAdmin or, if you can create a small script to run this script:
SELECT COLUMN_NAME, FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'your_tbl_name'
OR
SHOW COLUMNS
FROM 'your_tbl_name
and copy the column name from the page.
next, you can drop that column using
alter table your_tbl_name drop column column_name;
and you already know how to add a column in mysql so, i guess that should solve your problem.
I hope you do know that you can not comment if your reputation is below 50 and if you didn't provide enough information, those who might actually have an answer for you, but have below 50 rep, will have to post it in answers. or would you like to eliminate those who are 50 rep as candidates for helping you?
In order to delete a column you can use:
alter table <tblname> drop column <colname>
and then after deleting the column you can add the column by writing below code:
ALTER TABLE users ADD COLUMN favourites​ TEXT;
Some possibilities:
Using phpmyadmin
Using a tool to talk directly to the database like navicat etc

Rename a column in MySQL

I am trying to rename a column in MySQL community server 5.5.27 using this SQL expression:
ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
I also tried
ALTER TABLE table_name RENAME old_col_name TO new_col_name;
But it says:
Error: check the Manual that corresponds to your MySQL server version
Use the following query:
ALTER TABLE tableName CHANGE oldcolname newcolname datatype(length);
The RENAME function is used in Oracle databases.
ALTER TABLE tableName RENAME COLUMN oldcolname TO newcolname datatype(length);
#lad2025 mentions it below, but I thought it'd be nice to add what he said. Thank you #lad2025!
You can use the RENAME COLUMN in MySQL 8.0 to rename any column you need renamed.
ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
ALTER TABLE Syntax:
RENAME COLUMN:
Can change a column name but not its definition.
More convenient than CHANGE to rename a column without changing its definition.
In Server version: 5.6.34 MySQL Community Server
ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
From MySQL 5.7 Reference Manual.
Syntax :
ALTER TABLE t1 CHANGE a b DATATYPE;
e.g. : for Customer TABLE having COLUMN customer_name, customer_street, customercity.
And we want to change customercity TO customer_city :
alter table customer change customercity customer_city VARCHAR(225);
From MySQL 8.0 you could use
ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
ALTER TABLE Syntax:
RENAME COLUMN:
Can change a column name but not its definition.
More convenient than CHANGE to rename a column without changing its definition.
DBFiddle Demo
You can use following code:
ALTER TABLE `dbName`.`tableName` CHANGE COLUMN `old_columnName` `new_columnName` VARCHAR(45) NULL DEFAULT NULL ;
ALTER TABLE `table_name` CHANGE `$old_column_name` `new_column_name` VARCHAR(40)
this is working for me
Changing name in MySQL we have to use "ALTER" table command followed by "CHANGE". Below is the query.
ALTER TABLE tablename CHANGE COLUMN oldcolname newcolname datatype;
ALTER TABLE tablename CHANGE oldcolname newcolname datatype;
PS- You can add "COLUMN" word or ignore in the query. It will work same.
"RENAME" is used in Oracle database.
ALTER TABLE table_name CHANGE old_column_name new_column_name columnDataType;
Rename column name in mysql
alter table categories change type category_type varchar(255);
In mysql your query should be like
ALTER TABLE table_name change column_1 column_2 Data_Type;
you have written the query in Oracle.
Syntax: ALTER TABLE table_name CHANGE old_column_name new_column_name datatype;
If table name is Student and column name is Name.
Then, if you want to change Name to First_Name
ALTER TABLE Student CHANGE Name First_Name varchar(20);
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
For MySQL 8
alter table creditReportXml_temp change column applicationID applicantID int(11);
for mysql version 5
alter table *table_name* change column *old_column_name* *new_column_name* datatype();
Rename MySQL Column with ALTER TABLE Command
ALTER TABLE is an essential command used to change the structure of a MySQL table. You can use it to add or delete columns, change the type of data within the columns, and even rename entire databases. The function that concerns us the most is how to utilize ALTER TABLE to rename a column.
Clauses give us additional control over the renaming process. The RENAME COLUMN and CHANGE clause both allow for the names of existing columns to be altered. The difference is that the CHANGE clause can also be used to alter the data types of a column. The commands are straightforward, and you may use the clause that fits your requirements best.
How to Use the RENAME COLUMN Clause (MySQL 8.0)
The simplest way to rename a column is to use the ALTER TABLE command with the RENAME COLUMN clause. This clause is available since MySQL version 8.0.
Let’s illustrate its simple syntax. To change a column name, enter the following statement in your MySQL shell:
ALTER TABLE your_table_name RENAME COLUMN original_column_name TO new_column_name;
Exchange the your_table_name, original_column_name, and new_column_name with your table and column names. Keep in mind that you cannot rename a column to a name that already exists in the table.
Note: The word COLUMN is obligatory for the ALTER TABLE RENAME COLUMN command. ALTER TABLE RENAME is the existing syntax to rename the entire table.
The RENAME COLUMN clause can only be used to rename a column. If you need additional functions, such as changing the data definition, or position of a column, you need to use the CHANGE clause instead.
Rename MySQL Column with CHANGE Clause
The CHANGE clause offers important additions to the renaming process. It can be used to rename a column and change the data type of that column with the same command.
Enter the following command in your MySQL client shell to change the name of the column and its definition:
ALTER TABLE your_table_name CHANGE original_column_name new_col_name data_type;
The data_type element is mandatory, even if you want to keep the existing datatype.
Use additional options to further manipulate table columns. The CHANGE also allows you to place the column in a different position in the table by using the optional FIRST | AFTER column_name clause. For example:
ALTER TABLE your_table_name CHANGE original_column_name new_col_name y_data_type AFTER column_x;
You have successfully changed the name of the column, changed the data type to y_data_type, and positioned the column after column_x.
For MySQL <= 8
ALTER TABLE table_names CHANGE `old_column_name` `new_column_name` varchar(50);
Posting it here, it helps helps else ignore it but when trying to use the Change Column and Rename column functions it is throwing me an error.
So figured I would see what statement is generated when we go ahead and rename the column by going into table properties. Below is the command been generated.
EXEC DB.sys.sp_rename N'db.tablename.TrackingIDChargeDescription1' , N'ChargeDescription1', 'COLUMN';
I used and renamed bunch of columns in table.
None of the above worked when I had a column with parenthesis.
Then I tried ` and the magic worked. So if you have a special character in your column by mistake and you want to rename it, use ` for the name of the existing column. For example:
ALTER TABLE table_name RENAME COLUMN column(old) TO new_column;
if you are using gui SQL SMS
you can do db -> Tables -> Table -> columns -> column you want to rename
right click and rename

Is it possible to rename a column in a view?

I'm not seeing much regarding this after some searching
Do I need to drop the view and recreate it or is there a way to edit a column name?
I tried ALTER VIEW tableName oldColumnName newColumnName
But got a syntax error
You can use the ALTER keyword instead of CREATE but the syntax is the same.
This means ALTER VIEW does the same as CREATE VIEW but drops the existing view first. You must specify the complete new query that defines the view.
You can simply use :
CREATE VIEW viewname AS
SELECT colname "newcolname", colname "newcolname" FROM table-name;
its like give alias name to col of view..
for me following code worked fine to rename a column
ALTER
ALGORITHM=MERGE
VIEW viewname AS
SELECT emp_id as employee_id,first_name
FROM employee;
PS: it is for folks who tried rename column col1 to col2 and other ways.
You can use this to move column_name after another_column_name
ALTER TABLE table_name
MODIFY column_name datatype AFTER another_column_name;
or
ALTER TABLE table_name
MODIFY column_name datatype BEFORE another_column_name;
to move column_name before another_column_name

How to change the type of a column?

I have a table in SQL SERVER that has several columns. One of this column had type: VARCHAR(1000). But I want to change it to VARCHAR(MAX).
How to I do this with execute a query?
You can use something like:
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
Do Something like This
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
But I prefer using fixed size in a column Instead of MAX Because It takes more memory and Hence somehow reduces the speed.
try this:
You just need to do the ALTER TABLE statement in sql server
alter table <table> alter column col_name varchar(max)
Optionally you could give NULL/NOT NULL, DEFAULT etc.. along with the alter statement itself
See this link for more examples