这节记录表的相关操作。
1.创建表
代码语言:javascript复制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.删除表
代码语言:javascript复制DROP TABLE dbo.PurchaseOrderDetail;
3.重命名表
代码语言:javascript复制USE AdventureWorks2012;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
4.查看表定义
代码语言:javascript复制select * from sys.tables
where object_id = OBJECT_ID('Person.Address')
5.查看依赖项
a.查看表依赖的对象
代码语言:javascript复制USE AdventureWorks2012;
GO
SELECT * FROM sys.sql_expression_dependencies
WHERE referencing_id = OBJECT_ID(N'Production.vProductAndDescription');
GO
即查看表作为引用项时的情况(referencing_id)。就是它引用别人
b.查看依赖于表的对象
代码语言:javascript复制USE AdventureWorks2012;
GO
SELECT * FROM sys.sql_expression_dependencies
WHERE referenced_id = OBJECT_ID(N'Production.vProductAndDescription');
GO
表作为被引用项的情况(referenced_id)
6.向表中添加列
代码语言:javascript复制ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ;
7.从表中删除列
代码语言:javascript复制ALTER TABLE dbo.doc_exb DROP COLUMN column_b;
8.对列重命名
代码语言:javascript复制EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
9.复制列
a.只将表定义从一个表复制到另一个表,不复制表数据。
即只复制表的列
代码语言:javascript复制select *
into AddressTemp
from Person.Address
where 1<>1
b.将数据从一个表复制到另一个表
代码语言:javascript复制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.修改列
修改列的数据类型
代码语言:javascript复制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:将新计算列定义添加到现有表中
代码语言:javascript复制ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5)
;
(可选)添加 PERSISTED 参数,将计算值以物理方式存储到表中:
代码语言:javascript复制ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5) PERSISTED
;
示例3:将现有列更改为计算列
代码语言:javascript复制ALTER TABLE dbo.Products DROP COLUMN RetailValue
;
GO
ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5)
;
12.指定列的默认值
方式一:alter table
代码语言:javascript复制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
代码语言:javascript复制CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT DEFAULT 50);
方式三:命名的 CONSTRAINT
代码语言:javascript复制 CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50);