数据库中对表的操作

来源:互联网 发布:vue组件引用js插件 编辑:程序博客网 时间:2024/06/05 03:32
       对表定义的修改,不同的数据库系统有不同的限制。Oracle数据库就限制对列的修改只能是加大列的宽度而不能是缩小,而且不能删除列。


增加新列


      ALTER TABLE table_name  ADD  colum_name  data_type


     向已有表中增加非空约束的列




     ALTER TABLE student  ADD  Email  CHAR(15) NOT NULL


     表中不能有其他数据,有数据会报错,因为所添列为非空,必须为其设置缺省值!


指明缺省值


      ALTER TABLE student  ADD  Email  CHAR(15) NOT NULL DEFAULT 'No Email'




删除列


      删除学生表中的birthday 列




      ALTER TABLE student  DROP COLUMN birthday




         直接删除具有非空约束的列


      ALTER TABLE student  DROP COLUMN sex


      该列设有缺省值,不能直接删除,需要先删除约束,再删除该列!约束名可从直接删除该列系统的出错报告信息中获取


          ALTER TABLE student  DROP CONSTRAINT  DF_student_sex_4CA06362


      ALTER TABLE student  DROP COLUMN sex




修改列


          ALTER TABLE student  MODIFY column_name data_type


     在SQL Server 数据库系统中,并不支持MODIFY 关键字。要修改数据库中的列,我们可以通过 ALTER COLUMN 关键字实现,即将MODIFY替换ALTER COLUMN 即可。


         ALTER TABLE student  ALTER COLUMN  Email  CHAR(25)


      取消 student 表中 sname 列的非空约束


          ALTER TABLE student  ALTER COLUMN  sname  CHAR(25) NULL


     修改表中的某列,为其增加非空约束时,我们必须确保该列已经存在的所有记录中没有NULL 值


      与许多DBMS产品不同,SQL Server 不仅允许改变列的数据长度,而且还允许改变其数据类型。但是当列为一下情况时,则不能改变其数据类型。


      1.列是 TEXT、IMAGE、NTEXT、TIMESTAMP类型


      2.列是索引的一部分


      3.列是PRIMARY 或者 KEY FOREIGN KEY的一部分


      4.列具有缺省值约束


      5.列具有CHECK约束


      6.列具有UNIQUE约束


       当改变列的数据类型时,列中已有的数据必须与新的数据类型兼容。比较常用的转换是从INTEGER 转换为字符串,因为CHAR列可保存数字、字母和特殊符号。但是,如果要将CHAR 类型转换为 INTEGER 类型,必须保证表的每行上所转换的CHAR 字段具有数字或NULL 值。


       将student 表的 sno 列的类型转换为CHAR 类型


           ALTER TABLE student  ALTER COLUMN  sno  CHAR(5) NOT NULL
0 0