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)一本。