表操作
这节记录表的相关操作。
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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现