这节记录表的相关操作。
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);