SQL基础_第五章 ALTER

 第五章 ALTER

         有些表中,我们已经存储了数据,可随着业务的发展,表的结构需要做一些改动。即不能丢失数据,又要做变动,怎么办呢?

一.为表添加主键

          ALTER TABLE my_contacts

         ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST,

         ADD PRIMARY KEY (contact_id);

说明:a.ALTER TABLE + tablename,表示对表做更改

             b.  ADD COLUMN +columnname,在表中增加列,FIRST表示列在表中的位置,此处可以使用SECOND,AFTER + columnname,LAST之类的词修饰,来确定新增加列的位置,默认情况为LAST;

二.修改表

        CHANGE:可同时该表现有列的名称和数据类型

        MODIFY:修改现有列的数据类型或位置

        ADD:在当前表中添加一列

        DROP:从表中删除某列

/*为表改名*/

ALTER TABLE projects RENAME TO project_list;

说明:ALTER TABLE + 原表名+RENAME TO +新表名;

/*修改表中列名和数据类型*/

ALTER TABLE project_list

CHANGE COLUMN descriptionfproj proj_desc VARCHAR(100),

CHANGE COLUMN contractoronjob con_name VARCHAR(30);

说明:a.ALTER TABLE +表名+CHANGE COLUMN +原列名+新列名+新列类型+约束;

              b.一句ALTER TABLE中可加多个CHANGE;

            c.注意转化列类型的时候,类型不匹配是转化不了的。但是如果新列的长度比原列短,可能会造成数据别截断而遗失。

 

/*修改列的数据类型*/

ALTER TABLE project_list MODIFY COLUMN proj_desc VARCHAR(120);

说明:ALTER TABLE+表名+MODIFY COLUMN+列名+列类型。

 

/*删除表中的列*/

ALTER TABLE project_list DROP COLUMN start_date;

说明:ALTER TABLE+表名+DROP COLUMN+列名;

ALTER TABLE 改善表设计

/*my_contacts中增加两列*/

ALTER TABLE my_contacts

ADD COLUMN city VARCHAR(30) AFTER location,

ADD COLUMN station VARCHAR(20) AFTER city;

 

/*city的值去location中逗号前面部分*/

UPDATE  my_contacts SET city = SUBSTRING_INDEX(location,',',1);

UPDATE  my_contacts SET station = RIGHT(location,2);

 

/*删掉原有location*/

ALTER TABLE my_contacts DROP COLUMN location;

 

至此,my_contacts表越来越符合实际需求了。

 

本文出自 “墨痕” 博客,转载请与作者联系!

你可能感兴趣的:(数据库,职场,select,休闲)