SQL乐园(8):修改表结构,删除数据表
软件世界
通过以前的学习,我们已经掌握了用SQL语句创建数据表的方法。
在实践过程中,数据表的最初设计都不可能尽善尽美。在系统开发过程中,系统的需求也有可能发生变化。所以,已经设计好的数据表结构很可能需要改变,比如增加/删除数据列、修改列的定义、增加/删除约束条件等等。下面我们介绍数据列的增删和修改。
添加列
语法格式:ALTER TABLE tablename ADD newcolumnname
例子:为Reader表增加列Age,对应的语句是:ALTER TABLE Reader ADD Age INT
删除列
语法格式:ALTER TABLE tablename DROP columnname
例子:删除刚才增加的列,对应的语句是:ALTER TABLE Reader DROP Age
修改列
语法格式:ALTER TABLE tablename ALTER COLUMN columnname
例子:将Reader表Remark列的定义由VARCHAR(2000)改成VARCHAR(4000),对应的语句是:ALTER TABLE Reader ALTER COLUMN Remark VAR CHAR(4000)
提示:在目前的数据库管理系统中,修改列的数据类型、添加/删除或更改约束条件的操作都可以在图形界面中完成。不过,从学习的角度讲,建议朋友们采取SQL语句的方式。
删除表
数据表有生命周期,不管是在开发过程中,还是应用过程中,都可能需要删除数据表。删除数据表的命令格式很简单:DROP TABLE tablename
例子:删除Reader表,对应的语句是:DROP TABLE Reader
提示:1.执行删除表命令一定要慎重,因为大多数数据库执行这个命令时都没有任何提示信息。
2.如果表之间定义了外部关键字,则要删除父表时,系统会出现提示信息。如果删除了父表(假设有这个权限),则子表中数据的引用完整性就遭到了破坏,变成了“孤儿”。
预告:下期我们开始介绍最常用的SELECT语句。
上期问题:请描述文中代码(详见第5期E14版)所建立的表结构。
参考答案:表名Reader,字段定义如下:ReaderID,INT型,主键;RecordingID,INT型,有外部关键字约束,父表是Recordings;ReaderName,可变长字符串;CheckerName,可变长字符串,非空,只能是张三或李四;Birthday,日期型;Remark,可变长字符串,默认值为“无”。
本期问题:在Reader表中增加Address列,删除CheckerName列和RecordingID列,写出对应的SQL语句。
本期的幸运读者是内蒙古包头市的NETEASE,他将获得《光盘刻录全程图解》(含1CD)一本。