第五章 ALTER 改写历史
回想以前,当我们的表设计有问题时,我们总是重新创建一个表,然后把数据都移过去,这得有多烦人啊!
在这一章,你将学会如何在不改变现有记录情况下,修改表的结构,使用ALTER,准备好就开始吧。
回忆一下,我们学过UPDATE 与 SET,它可以让我们修改记录中的值,但却不能对表项进行改变,ALTER可以!
1.ALTER TABLE 为我们的表增加新的列,如下:
ALTER TABLE my_contacts
ADD COLUMN t_call VARCHAR(11);
这将会在我们的my_contacts的最后加入一列:t_call,试试看~
还记得上一章中添加主键列不?没错,这里只不过是普通的列!
2.那么如何放置我们新增的列呢?默认情况下是放在最后的,但如果我想放在last_name列后面呢,怎么办??
ALTER TABLE my_contacts
ADD COLUMN t_call VARCHAR(11) AFTER last_name;
没错,就是使用AFTER关键字,很简单吧~
更多关于位置的关键字:
1.FIRST :放在最开始
2.AFTER your_column:在your_column后面
3.BEFORE your_column:在your_column前面
4.LAST:放在最后
5.SECOND,THIRD依次类推,相信大家都懂的~
3.修改表
小心地雷:
你可以通过ALTER改变表里的一切,而且不用重新插入数据,但也要小心,如果改变列的类型,你可能会有遗失数据的风险!
下面列如不同命令的情况:
CHANGE 可同时改变现有列的名称和数据类型 *
MODIFY 修改现有列的数据类型或位置 *
ADD 在当前表中添加一列,可自选类型
DROP 从表中删除某列(它也可以删除表) *
注:* 表示可能导致数据遗失
下面是一个例子:
projekts
number descriptionofproj contractoronjob
1 outside house painting Murphy
2 kitchen remodel Valdez
3 wood floor installation Keller
4 roofing Jackson
建立这张表!
CREATE TABLE projekts
(
number INT,
descriptionofproj VARCHAR(30),
contractoronjob VARCHAR(30)
);
插入数据:
insert into projekts
(
number,
descriptionofproj,
contractoronjob
)
VALUES
(
1,
'outside house painting',
'Murphy'
);
insert into projekts
(
number,
descriptionofproj,
contractoronjob
)
VALUES
(
2,
'kitchen remodel',
'Valdez'
);
insert into projekts
(
number,
descriptionofproj,
contractoronjob
)
VALUES
(
3,
'wood floor installation',
'Keller'
);
insert into projekts
(
number,
descriptionofproj,
contractoronjob
)
VALUES
(
4,
'roofing',
'Jackson'
);
select * from projekts;
好了,表已经建好
但这张表很糟糕!从列名看出来,你都看不出是什么东西。。。。。。。那么下面,我们就要改变它,同时保留我们的数据,这正是我们想要的!
在修改表时,我们很查看一下这个表的情况,用什么命令?
DESC projekts;
或者
show columns from projekts;
情况如下:
Filed Type Null Key Default Extra
number int(11) YES (NULL)
descriptionofproj varchar(30) YES (NULL)
contractoronjob varchar(30) YES (NULL)
4.表的改名换姓
ALTER TABLE projekts
RENAME TO project_list;
我们要改变一下上面的表的情况,加入下面的列项:
proj_id proj_desc start_dese est_date con_name con_phone
有些内容上面表中已经有了,我们烦不着去新建一个表,把数据导进去,我们要在原表基础上修改,如何做呢?表名已经被我们改过了,这是一个很好的开始。
修改列名(也可以修改类型哦,只不过这样会有数据丢失危险,请确认你现在头脑很清醒-.-)
ALTER TABLE project_list
CHANGE COLUMN number proj_id INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (proj_id);
一次修改多个列名与类型:
ALTER TABLE project_list
CHANGE COLUMN descriptionofproj proj_desc VARCHAR(100),
CHANGE COLUMN contractoronjob con_name VARCHAR(30);
下面插入几个新的项到表中,使它形成下面的形式:
proj_id proj_desc start_dese est_date con_name con_phone
原来是这样的:
proj_id proj_desc con_name
开始工作,我们一次性完成这个工作,添加新的列,用ADD:
ALTER TABLE project_list
ADD COLUMN start_dese VARCHAR(30) AFTER proj_desc,
ADD COLUMN est_date DATE AFTER start_dese,
ADD COLUMN con_nTame VARCHAR(50) AFTER est_date,
ADD COLUMN con_phone VARCHAR(10) ;
很多时候我们不想改变列名而只是想改变类型,可以用MODIFY
ALTER TABLE project_list
MODIFY COLUMN proj_desc VARCHAR(150);
有时候,我们会想删除某一列,用DROP吧!
ALTER TABLE project_list
DROP COLUMN start_dese;
数据库学习笔记(3)
最新推荐文章于 2024-09-24 10:50:41 发布