zoukankan      html  css  js  c++  java
  • 表操作

     这节记录表的相关操作。

    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);

    参考网址

  • 相关阅读:
    datagrid在MVC中的运用05-加入时间搜索条件,枚举填充下拉框
    datagrid在MVC中的运用04-同时添加搜索和操作区域
    datagrid在MVC中的运用03-选择单行或多行
    datagrid在MVC中的运用02-结合搜索
    datagrid在MVC中的运用01-基本属性并实现分页
    Object [object Object] has no method 'live'
    AutoMapper在MVC中的运用小结
    error CS0234: 命名空间“XXX”中不存在类型或命名空间名称“UserInfoVm”(是否缺少程序集引用?)
    《黄聪:手机移动站SEO优化教程》2、PC端和手机移动端SEO优化区别
    《黄聪:手机移动站SEO优化教程》1、为什么要做手机移动端网站
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/12670060.html
Copyright © 2011-2022 走看看