如题

解决方案 »

  1.   

    Create Table [ DataBase_Name.[ Owner ]. | Owner. ] Table_Name( { < Column_Definition > | < Table_Constraint > | Column_Name As Computed_Column_Expression } [ ,...n ] )[ On { FileGroup | Default } ][ TextImage_On { FileGroup | Default } ]< Column_Definition > :: = { Column_Name Data_Type }[ [ Default Constant_Expression ] | [ Indentity [ ( Seed , Increment ) ] ] ][ < Column_Constraint > ] [ ,... ]DataBase_Name:要在哪个数据库中创建表的数据库名称。Owner:创建数据表的所有者名,若空,则默认为新表的创建者在当前数据库中的用户名。Table_Name:创建数据表的名称。Column_Name:是创建数据表中的字段名。如果表名包含空格,需要将字段名用方括号括起来。Computed_Column_Expression:定义计算字段值的表达式。[ On { FileGroup | Default } ]:指定存储表所在的文件组。如果指定FileGroup,则数据表将存在指定的文件组中,如果指定Default或者不指定On参数,则数据表将存储在默认文件组中。[ TextImage_On { FileGroup | Default } ]:将数据表中的Text和Image类型的数据存储到指定的文件组。Data_Type:指定字段的数据类型,可以使系统数据类型或者是用户自定义数据类型。Constant_Expression:是用作字段默认值的常量、Null或者系统函数。Indentity:指定该字段为标识字段。Seed:定义标识字段的起始值,起始值是装入表的第一条记录时所使用的值。Increment:定义标识增量,标识增量是指该字段值相对前一条记录标识字段的增量值。Column_Constraint:定义与字段相关的约束,如Null、Not Null和Primary等与约束有关的内容。
      

  2.   

    在关系数据库中 基表包含了实际的数据 在一个 SQL  Server 数据库中 可以创建多
    达两万亿个表 为了用 SQL 创建表 输入一条 Create Table 语句 指定下述内容
     包含表的数据库
     表的所有者
     表名 在同一个数据库中和同一个所有者下 该表名必须与任何其它基表或视图 不同
     指定 1 到 1024 个列
     主键约束(可选)
     1 到 250 个 Unique 约束(可选)
     1 到 253 个外键约束(可选)
    1.2.1 创建表的一般要求
    例 1-5 示意了一个比较复杂的 Customer 表的 Create Table 语句
    正如例 1-5 所示   Create Table 语句首先指定将要创建的表   然后列出列和约束的定义
    之间由逗号分开 用一组括号括住 SQL  是一种自由格式的语言 一条语句可以放在多行
    上 在字和符号之间使用空格 以提高可读性 该示例说明代码样式 代码以每个列的定 义开始 约束单独占一行 每个列的定义中相似的部分对齐 虽然这种列样式不是必须的
    但是它比不对齐的文本流形式更容易理解
    SQL 关键字对大小写不敏感 Create Table CREATE TABLE 和 CrEaTe TaBLE 都是正 确的 然而 记住在安装 SQL  Server 时选择的排列顺序决定标识符和字符串文字是否对大 小写敏感  如果使用对大小写不敏感的排列顺序(默认的安装选项)安装 SQL Server  那么 SQL
    Server  认为表名 Customer customer  和 CUSTOMER  是相同的 并且‵x 等于‵x 如 果使用对大小写敏感的排列顺序安装 SQL Server  那么 SQL Server 把表名 Customer  customer
    和 CUSTOMER 作为不同的标识符 并且认为‵x 不等于‵X 
    注意 即使使用对大小写不敏感的排列顺序 系统表中的表名和其他对象名称也是以
     
    输入它们的方式存储 例如 Customer customer或 CUSTOMER 因此 如果在 AppDta
    数据库中显示表的清单 那么例 1-5 所示的语句创建的表将被列为 Customer,
    使用对大小写不敏感的排列顺序 仍然可以在 SQL 语句中使用 CUSTOMER 或者
    customer 引用该表
    例  1-5  中使用的表名是一种完全限定的名称 在未限定的表名 Customer 之前包括 数据库名称(AppDta)和所有者名称 dbo 使用小圆点“.”作为限定名称的分隔符
    当创建数据库对象时 一般建议在代码中明确指定数据库名称和所有者名称 这样可
    以归类表的数据库和所有者 避免偶然在错误的数据库中或者使用错误的所有者创建表
    正如本示例所示   为了创建一个由数据库所有者拥有的表   可以在限定的名称中使用 dbo
    如果省略了数据库名称   就会在当前数据库中创建表   当前数据库可以是分配给 SQL Server 帐户的数据库   或者是在 Use 语句中指定的数据库   例 1-5  是 Customer 基表的 Create Table 语句
     
    例 1-5
    create Table AppDta.dbo.Customer
      Not Null check(CustId>0),
    Not Null
    check(Name<>''),
     
    ShipLine1 VarChar(100) Not Null
    Default '', ShipLine2 VarChar(100) Not Null
    Default '',
    Not Null
    Default '',
    Not Null
    Default '', ShipPostalCode1 Char (10) Not Null
    Default '', ShipPostalCode2 Char (10) Not Null
    Default '',
    Not Null
    Default '',
    Not Null
    Default '',
    Not Null
    Default '',
    Not Null
    Default '', CreditLimit Money( 1) Not Null
    Check (
    (CreditLimit Is Null) Or
    (CreditLimit >=0)); EntryDateTime DateTime Not Null
    Default Current_Timestamp,
     
    RowTimeStamp imeStamp Not Null,
    Key ( CustId),
    ( Status<>' ')Or
    (CreditLimit Is Null) ) )
    Use AppDta
    所有者名称也可以省略 SQL  Server  会用当前的用户名作为所有者 完全限定的表名
    和视图名必须是唯一的
    SQL 对象名称可以长达 128 个字符 包括字母 数字和下述特殊的符号 _(下划线)
    #(井号) $(美元符号)和@(at  号) 如果只使用字母(A-Z)开头并且只包含字母和数字(0-9)
    对于跨系统或者跨国应用程序 可以避免可能出现的命名问题
    另外 Transact-SQL 有多个保留字 例如 Create Table 和 Order 它们有特殊的含义
    这些保留字列在 Microsoft SQL Server Transact-SQL 参考手册中的 保留关键字 话题中
    如果希望使用这些保留字作为表名 列名或者其他 SQL 对象名称 那么当它们出现在 SQL
    语句中时   必须用双引号括起这些名称   下面这个示例说明如何编写一个 SQL Server 语句
    从表名为 Order 的表中检索行
    Select  *
    From Order
    Where CustId = 499320
    引号括起的名称也可以用于包含特殊字符的名称 如下示例
    Select  *
    From Order+Detail
    Where CustId = 499320
    一般应避免使用 SQL 的保留字或者特殊的字符作为 SQL 对象的名称
    注意 必须使用 SQL Server 的 quoted identifier 用户选项才能使用引号标识符
    Transact-SQL 还允许使用方括号作为关键字的分隔符 例如 Order 这种语 法不需要引号标识符用户选项
    1.2.2 在指定文件组上创建表正如在本章前面“定义文件组”一节中讨论的那样 可以定义文件组 它是一个或者多 个存储应用程序数据的操作系统文件的集合 为了把一个新表放在用户定义的文件组上
    可以在 Create Table 语句的末端增加一个 On 子句
    Create Table AppDta.dbo.Customer
    ( CustId Int Not Null
    Check ( CustId > 0 ), Name Char(  30 ) Not Null
    Check ( Name <> ‘ ’ )
    ...
    Constraint CustomerStatus Check ( ( Status <. ‘ ’ ) Or
    ( CreditLimit Is Null ) ) )
    On AppDtaGroup1
    这个文件组必须已由 Alter Database 语句创建
    注意 SQL 还有一个 Create Schema 语句 用于将多个 Create Table,CreateView 和
     
    Grant 语句组合到一个 SQL 语句中 当处理 Create Schema 语句时 SQL Server
    按序连续创建对象 以便满足所有的逻辑依赖关系(例如 视图和外键) 虽然
    一般由代码生成器使用 Create Schema 语句 但是该语句也可以用于手工创建
    有从属外键的两个或者多个表