why-Y

博客园 首页 新随笔 联系 订阅 管理

表是数据库中非常重要的对象,它用于存储用户的数据。创建表就是定义表所包含的列的结构,其中包括列的名称、约束等。 

    一、基本表的定义和删除 
    1.定义基本表 
    一般格式如下: 
      Create Table <表名>(<列名> <数据类型> [列级完整性约束条件]  
      [,<列名> <数据类型> [列级完整性约束条件]...] 
                    [,<表级完整性约束条件>]);  
    其中: 
    <表名>是所要定义的基本表的名字,最好能表达表的应用语义 
    <列名>是由一个或多个属性(列)组成。 
    建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由dbms自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

    
    下面我们以一个“学生-课程”数据库为例说明create语句的各种用法。 
    “学生-课程”数据库中包括三个表: 
    (1) “学生”表student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为: Student(Sno,Sname,Ssex,Sage,Sdept)  
    (2) “课程”表course由课程号(Cno)、课程名(Cname)、学期(Semster)、学分(Ccredit)、学时(Period)五个属性组成,可记为: Course(Cno,Cname,Semster,Ccredit,Period)  
    (3) “学生选课”表sc由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为: Sc(Sno,Cno,Grade) 

 
    例1 建立一个“学生”表student,它由学号sno、姓名sname、性别ssex、年龄sage、所在系sdept五个属性组成,其中学号属性不能为空,并且其值是唯一的。 
    Create    Table Student  
        (   Sno Char(5)     Primary  Key, 
            Sname Char(20)  Not  Null, 
            Ssex Char(1)    Check(Ssex=‘男’Or Ssex=‘女’), 
            Sage Tinyint    Check(Sage>=15 And Sage<=45), 
            Sdept Char(20)   Defalut  ‘计算机系’ 
         ); 

    例2:建立课程表 
    Create  Table  Course 
       (   Cno     Char(10)  Not Null, 
           Cname   Char(20)  Not  Null, 
           Ccredit  Tinyint  Check(Ccredit>0) 
           Semester  Tinyint  Check(Semester>0), 
           Period  Int  Check(Period>0), 
           Primary  Key(Cno) 
        ); 

    例3:建立选课表,注意参照完整性 
    Create  Table Sc 
        ( Sno  Char(7) Not  Null, 
          Cno  Char(10)  Not  Null, 
          Grade  Tinyint  Check (Grade>=10  And Grade<=100), 
          Primary Key (Sno,Cno), 
          Foreign  Key (Sno)  References  Student (Sno), 
          Foreign  Key (Cno)  Referenced  Course (Cno) 
        ); 

    2. 删除表 
    删除表时会将与表有关的所有对象一起删掉。基本表定义一旦删除,表中的数据、在此表上建立的索引都将自动被删除掉,而建立在此表上的视图虽仍然保留,但已无法引用。因此执行删除操作一定要格外小心。  
    一般格式为:Drop  Table  <表名>  
    删除student表 
    Drop  Table Student
  
    二、 修改表结构 
    一般格式为: 
    Alter Table <表名> 
    [Alter <列名> <新数据类型> ] 
    [Add <新列名> <数据类型> [完整性约束]] 
    [Drop <完整性约束名> <完整性约束名>] 
    [Modify <列名> <数据类型> <数据类型>] 
    [Add  Primary Key(列名)] 
    [Add  Preign Key(列名) Referneces  表名(列名)];   
    其中<表名>指定需要修改的基本表,Add子句用于增加新列和新的完整性约束条件,Drop子句用于删除指定的完整性约束条件,Modify子句用于修改原有的列定义。

  
    例4 向student表增加“入学时间”列,其数据类型为日期型 
    Alter Table Student Add Scome Date;  
    不论基本表中原来是否已有数据,新增加的列一律为空值。

   
    例5 将年龄的数据类型改为半字长整数 
    Alter Table Student Modify Sage Smallint;  
    修改原有的列定义有可能会破坏已有数据。 

  
    例6 删除关于学号必须取唯一值的约束 
    Alter Table Student Drop Unique(Sno);  


    Sql没有提供删除属性列的语句,用户只能间接实现这一功能,即先原表中要保留的列及其内容复制到一个新表中,然后删除原表,并将新表重命名为原表名。 

posted on 2010-05-10 16:03  why-Y  阅读(1340)  评论(0)    收藏  举报