• 表操作


     这节记录表的相关操作。

    1.创建表

    CREATE TABLE dbo.PurchaseOrderDetail  
    (  
        PurchaseOrderID int NOT NULL  
        ,LineNumber smallint NOT NULL  
        ,ProductID int NULL  
        ,UnitPrice money NULL  
        ,OrderQty smallint NULL  
        ,ReceivedQty float NULL  
        ,RejectedQty float NULL  
        ,DueDate datetime NULL  
    );  

    2.删除表

    DROP TABLE dbo.PurchaseOrderDetail;  

    3.重命名表

    USE AdventureWorks2012;   
    GO  
    EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr'; 

    4.查看表定义

    select * from sys.tables
    where object_id = OBJECT_ID('Person.Address')

     5.查看依赖项

    a.查看表依赖的对象

    USE AdventureWorks2012;  
    GO  
    SELECT * FROM sys.sql_expression_dependencies  
    WHERE referencing_id = OBJECT_ID(N'Production.vProductAndDescription');   
    GO  

     即查看表作为引用项时的情况(referencing_id)。就是它引用别人

    b.查看依赖于表的对象

    USE AdventureWorks2012;   
    GO  
    SELECT * FROM sys.sql_expression_dependencies  
    WHERE referenced_id = OBJECT_ID(N'Production.vProductAndDescription');   
    GO  

     表作为被引用项的情况(referenced_id)

    6.向表中添加列

    ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ;

    7.从表中删除列

    ALTER TABLE dbo.doc_exb DROP COLUMN column_b;

    8.对列重命名

    EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';

    9.复制列

    a.只将表定义从一个表复制到另一个表,不复制表数据。

    即只复制表的列

    select * 
    into AddressTemp
    from Person.Address
    where 1<>1

    b.将数据从一个表复制到另一个表

    USE AdventureWorks2012;  
    GO  
    CREATE TABLE dbo.EmployeeSales  
    ( BusinessEntityID   varchar(11) NOT NULL,  
      SalesYTD money NOT NULL  
    );  
    GO  
    INSERT INTO dbo.EmployeeSales  
        SELECT BusinessEntityID, SalesYTD   
        FROM Sales.SalesPerson;  
    GO

    10.修改列

    修改列的数据类型

    CREATE TABLE dbo.doc_exy (column_a INT ) ;  
    GO  
    INSERT INTO dbo.doc_exy (column_a) VALUES (10) ;  
    GO  
    ALTER TABLE dbo.doc_exy ALTER COLUMN column_a DECIMAL (5, 2) ;  
    GO  

    11.指定计算列

    计算列是虚拟列,并非实际存储在表中,除非此列标记为 PERSISTED。 计算列的表达式可以使用其他列中的数据来计算其所属列的值

    示例1.在创建表时指定计算列

    创建一个表,其中的计算列将 QtyAvailable 列的值乘以 UnitPrice 列的值。

    CREATE TABLE dbo.Products
       (
          ProductID int IDENTITY (1,1) NOT NULL
          , QtyAvailable smallint
          , UnitPrice money
          , InventoryValue AS QtyAvailable * UnitPrice
        )
    ;
    -- Insert values into the table.
    INSERT INTO dbo.Products (QtyAvailable, UnitPrice)
       VALUES (25, 2.00), (10, 1.5)
    ;
    -- Display the rows in the table.
    SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue
    FROM dbo.Products
    ;

    示例2:将新计算列定义添加到现有表中

    ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5)
    ;

    (可选)添加 PERSISTED 参数,将计算值以物理方式存储到表中:

    ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5) PERSISTED
    ;

    示例3:将现有列更改为计算列

    ALTER TABLE dbo.Products DROP COLUMN RetailValue
    ;
    GO
    ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5)
    ;

    12.指定列的默认值

    方式一:alter table

    CREATE TABLE dbo.doc_exz (column_a INT, column_b INT); -- Allows nulls.
    GO
    INSERT INTO dbo.doc_exz (column_a) VALUES (7);
    GO
    ALTER TABLE dbo.doc_exz
      ADD CONSTRAINT DF_Doc_Exz_Column_B
      DEFAULT 50 FOR column_b;
    GO

    方式二:create table

    CREATE TABLE dbo.doc_exz (
          column_a INT,
          column_b INT DEFAULT 50);

    方式三:命名的 CONSTRAINT

     CREATE TABLE dbo.doc_exz (
          column_a INT,
          column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50);

    参考网址

  • 相关阅读:
    边走边学Nodejs (基础入门篇)
    Android应用打包安装过程具体解释
    ubuntu与centos安装软件的不同点总结
    你好,C++(12)怎样管理多个类型同样性质同样的数据?3.6 数组
    oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段
    iOS中sqlite3操作
    sparkSQL1.1入门之二:sparkSQL执行架构
    [NHibernate]视图处理
    [NHibernate]立即加载
    [NHibernate]延迟加载
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/12670060.html
Copyright © 2020-2023  润新知