第 4章 表和表数据操作
4.1 表的创建
4.2 修改表
4.3 删除表
4.4 表的数据操作第
4
章表和表数据操作
< >
4.1 表的创建
4.1.1 数据类型
整型数据类型,Bigint,Int,smallint和 tinyint。
浮点型数据类型,real,float,decimal,numeric。
字符型数据类型,char,nchar,varchar和 nvarchar
日期和时间型数据类型,datetime和 smalldatetime
文本和图形数据类型,text,ntext和 image
逻辑型数据类型第
4
章表和表数据操作
< >
4.1.2 创建及删除用户定义数据类型
用企业管理器创建用户自定义数据类型
用系统存储过程 sp_addtype创建用户自定义数据类型
sp_addtype typename,phystype[,nulltype]
其中:
ltypename为用户自定义数据类型的名称,在每个数据库中是惟一的,但不同的用户自定义数据类型可拥有相同的数据类型定义 。
l phystype为 SQL Server提供的数据类型名称 。
l nulltype为决定用户自定义数据类型是否允许 NULL值,用户可指定允许 NULL或 NOT NULL。
第
4
章表和表数据操作
< >
4.1.3 使用 SQL Server企业管理器创建表
4.1.4 使用 T-SQL的 CREATE TABLE 语句创建表
CREATE TABLE
[ database_name.[ owner ],| owner.] table_name
(
{ col_name column_properties [ constraint
[constraint [ … constraint ] ] ]
| [ [,] constraint ] }
[ [,] {next_col_name | next_constraint } … ]
)
[ 0N segment_name ]
第
4
章表和表数据操作
< >
其中:
ldatabase_name:指定创建的表所在的数据库。
lowner:指定表的所有者。
ltable_name:指定新建表的名称。
lcol_name:指定表中的列的名称。
lcolumn_properties:指定列的属性(包括列的数据类型、
列上的约束等)
【 例 】 创建 数据表,Department”
CREATE TABLE Department (DepartmentID char(10) NOT
NULL RIMARY KEY,DepartmentName
varchar(30),DepartmentHead char(8))
第
4
章表和表数据操作
< >
4.2 修改表
4.2.1 使用 SQL Server 企业管理器修改表
4.2.2 使用 T-SQL的 ALTER TABLE 语句修改表
ALTER TABLE [ [ database_name,] owner.]table_name
[ WITH NOCHECK ]
ADD
{ [ column_name datatype [ column_constraints ] | [
[,] table_constraint ] ] }
[,[ { next_col_name | next_table_constraint } ] …]
}
| DROP
[ CONSTRAINT ] constraint_name| COLUMN column}[,…n ]
< >
第
4
章表和表数据操作其中:
l database_name:将要修改的表所在的数据库。
l owner:表对象的所有者。
l table_name:将要修改的表的名称。
l WITH NOCHECK:允许 check或者 foreign key约束加到一个表,而不验证现有的数据是否违反约束。若没有指定这个选项,增加的任何约束都要对现有数据进行检查,如果有任何约束违反,ALTER TABLE语句将被终止。
l ADD:在现有表中增加一个新的数据项或一个约束。
l column_name:增加的字段名称。
l datatype:新增字段的数据类型。
l DROP:删除现有表中的一个字段或约束。
l CONSTRAINT:删除数据库中的约束。
l COLUMN:指定删除数据库中的列。
< >
4.3 删除表
4.3.1 使用 SQL Server 企业管理器删除表
利用企业管理器删除表
利用 DROP TABLE 语句删除
DROP TABLE table_name
【 例 】 删除表 Department
DROP TABLE Department
第
4
章表和表数据操作
< >
4.4 表的数据操作
4.4.1 向表中插入数据
在企业管理器中向表中插入数据
用 INSERT语句向表中插入数据
INSERT [ INTO]
{ table_name WITH ( < table_hint_limited > [,..n ] )
| view_name| rowset_function_limited }
{[ ( column_list ) ]
{ VALUES( { DEFAULT | NULL | expression } [,...n] )
| derived_table| execute_statement
}
}
第
4
章表和表数据操作
< >
第
4
章表和表数据操作其中:
l INTO:一个可选的关键字,可以将它用在 INSERT 和目标表之间。
l table_name:将要接收数据的表或 table 变量的名称。 l WITH
(<table_hint_limited> [...n]):指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST,NOLOCK 和
READUNCOMMITTED。
l view_name:视图的名称及可选的别名。通过 view_name 来引用的视图必须是可更新的。由 INSERT 语句所做的修改不能影响视图的
FROM 子句中引用的多个基表。例如,在多表视图中的 INSERT 必须使用 column_list,column_list 是指引用来自一个基表的列。
l rowset_function_limited:是 OPENQUERY 或 OPENROWSET 函数。
l column_list:要在其中插入数据的一列或多列的列表。必须用圆括号将 column_list 括起来,并且用逗号进行分隔。
< >
第
4
章表和表数据操作
l VALUES:引入要插入的数据值的列表。对于 column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果 VALUES 列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用 column_list 明确地指定存储每个传入值的列。
l DEFAULT:强制 SQL Server 装载为列定义的默认值。如果对于某列并不存在默认值,并且该列允许 NULL,那么就插入 NULL。对于使用
timestamp 数据类型定义的列,插入下一个时间戳值。 DEFAULT 对标识列无效。
l Expression:一个常量、变量或表达式。表达式不能包含 SELECT
或 EXECUTE 语句。
l derived_table:任何有效的 SELECT 语句,它返回将装载到表中的数据行。
l execute_statement:任何有效的 EXECUTE 语句,它使用 SELECT
或 READTEXT 语句返回数据。
< >
第
4
章表和表数据操作
4.4.2 修改表中数据
在企业管理器中修改表数据
用 UPDATE语句修改表数据
UPDATE
{ table_name WITH ( < table_hint_limited > [,..n ] )}
SET { column_name = {expression | DEFAULT | NULL }
WHERE < search_condition >
< >
第
4
章表和表数据操作其中:
l table_name:需要更新的表的名称。如果该表不在当前服务器或数据库中,或不为当前用户所有,这个名称可用链接服务器、数据库和所有者名称来限定。
l WITH ( < table_hint_limited > [,..n ] ):指定目标表所允许的一个或多个表提示,需要有 WITH 关键字和圆括号。
l SET:指定要更新的列或变量名称的列表。
l column_name:含有要更改数据的列的名称。 column_name 必须驻留于 UPDATE 子句中所指定的表或视图中。标识列不能进行更新。
l expression:变量、字面值、表达式或加上括弧的返回单个值的
subSELECT 语句。
l DEFAULT:指定使用对列定义的默认值替换列中的现有值。如果该列没有默认值并且定义为允许空值,这也可用来将列更改为 NULL。
lWHERE:指定条件来限定所更新的行。
< >
第
4
章表和表数据操作
4.4.3 删除表中数据
在企业管理器中删除表中数据
用 DELETE语句删除表中数据
DELETE [ FROM ]
{ table_name WITH ( < table_hint_limited > [,..n ] )
| view_name| rowset_function_limited
}
[ FROM { < table_source > } [,...n ] ]
[ WHERE
{ < search_condition >
} ]
< >
第
4
章表和表数据操作其中:
l FROM:是可选的关键字,可用在 DELETE 关键字与目标 table_name、
view_name 或 rowset_function_limited 之间。
l table_name:是要从其中删除行的表的名称。在其作用域内的 table
变量、或是将 OPENDATASOURCE 函数作为服务器名称的由四部分组成的表名(或视图名称)还可以在 DELETE 语句中作为表源使用。
l WITH (<table_hint_limited> [...n]):指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、
NOLOCK 和 READUNCOMMITTED。
l view_name:是视图名称。在视图的 FROM 子句中,view_name 引用的视图必须可更新且正确引用一个基表。
l FROM < table_source >:指定附加的 FROM 子句。这个对 DELETE
的 Transact-SQL 扩展使用户得以从 <table_sources> 指定数据,并从第一个 FROM 子句内的表中删除相应的行。
l WHERE:指定用于限制删除行的条件。如果没有提供 WHERE 子句,则
DELETE 删除表中的所有行。
4.1 表的创建
4.2 修改表
4.3 删除表
4.4 表的数据操作第
4
章表和表数据操作
< >
4.1 表的创建
4.1.1 数据类型
整型数据类型,Bigint,Int,smallint和 tinyint。
浮点型数据类型,real,float,decimal,numeric。
字符型数据类型,char,nchar,varchar和 nvarchar
日期和时间型数据类型,datetime和 smalldatetime
文本和图形数据类型,text,ntext和 image
逻辑型数据类型第
4
章表和表数据操作
< >
4.1.2 创建及删除用户定义数据类型
用企业管理器创建用户自定义数据类型
用系统存储过程 sp_addtype创建用户自定义数据类型
sp_addtype typename,phystype[,nulltype]
其中:
ltypename为用户自定义数据类型的名称,在每个数据库中是惟一的,但不同的用户自定义数据类型可拥有相同的数据类型定义 。
l phystype为 SQL Server提供的数据类型名称 。
l nulltype为决定用户自定义数据类型是否允许 NULL值,用户可指定允许 NULL或 NOT NULL。
第
4
章表和表数据操作
< >
4.1.3 使用 SQL Server企业管理器创建表
4.1.4 使用 T-SQL的 CREATE TABLE 语句创建表
CREATE TABLE
[ database_name.[ owner ],| owner.] table_name
(
{ col_name column_properties [ constraint
[constraint [ … constraint ] ] ]
| [ [,] constraint ] }
[ [,] {next_col_name | next_constraint } … ]
)
[ 0N segment_name ]
第
4
章表和表数据操作
< >
其中:
ldatabase_name:指定创建的表所在的数据库。
lowner:指定表的所有者。
ltable_name:指定新建表的名称。
lcol_name:指定表中的列的名称。
lcolumn_properties:指定列的属性(包括列的数据类型、
列上的约束等)
【 例 】 创建 数据表,Department”
CREATE TABLE Department (DepartmentID char(10) NOT
NULL RIMARY KEY,DepartmentName
varchar(30),DepartmentHead char(8))
第
4
章表和表数据操作
< >
4.2 修改表
4.2.1 使用 SQL Server 企业管理器修改表
4.2.2 使用 T-SQL的 ALTER TABLE 语句修改表
ALTER TABLE [ [ database_name,] owner.]table_name
[ WITH NOCHECK ]
ADD
{ [ column_name datatype [ column_constraints ] | [
[,] table_constraint ] ] }
[,[ { next_col_name | next_table_constraint } ] …]
}
| DROP
[ CONSTRAINT ] constraint_name| COLUMN column}[,…n ]
< >
第
4
章表和表数据操作其中:
l database_name:将要修改的表所在的数据库。
l owner:表对象的所有者。
l table_name:将要修改的表的名称。
l WITH NOCHECK:允许 check或者 foreign key约束加到一个表,而不验证现有的数据是否违反约束。若没有指定这个选项,增加的任何约束都要对现有数据进行检查,如果有任何约束违反,ALTER TABLE语句将被终止。
l ADD:在现有表中增加一个新的数据项或一个约束。
l column_name:增加的字段名称。
l datatype:新增字段的数据类型。
l DROP:删除现有表中的一个字段或约束。
l CONSTRAINT:删除数据库中的约束。
l COLUMN:指定删除数据库中的列。
< >
4.3 删除表
4.3.1 使用 SQL Server 企业管理器删除表
利用企业管理器删除表
利用 DROP TABLE 语句删除
DROP TABLE table_name
【 例 】 删除表 Department
DROP TABLE Department
第
4
章表和表数据操作
< >
4.4 表的数据操作
4.4.1 向表中插入数据
在企业管理器中向表中插入数据
用 INSERT语句向表中插入数据
INSERT [ INTO]
{ table_name WITH ( < table_hint_limited > [,..n ] )
| view_name| rowset_function_limited }
{[ ( column_list ) ]
{ VALUES( { DEFAULT | NULL | expression } [,...n] )
| derived_table| execute_statement
}
}
第
4
章表和表数据操作
< >
第
4
章表和表数据操作其中:
l INTO:一个可选的关键字,可以将它用在 INSERT 和目标表之间。
l table_name:将要接收数据的表或 table 变量的名称。 l WITH
(<table_hint_limited> [...n]):指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST,NOLOCK 和
READUNCOMMITTED。
l view_name:视图的名称及可选的别名。通过 view_name 来引用的视图必须是可更新的。由 INSERT 语句所做的修改不能影响视图的
FROM 子句中引用的多个基表。例如,在多表视图中的 INSERT 必须使用 column_list,column_list 是指引用来自一个基表的列。
l rowset_function_limited:是 OPENQUERY 或 OPENROWSET 函数。
l column_list:要在其中插入数据的一列或多列的列表。必须用圆括号将 column_list 括起来,并且用逗号进行分隔。
< >
第
4
章表和表数据操作
l VALUES:引入要插入的数据值的列表。对于 column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果 VALUES 列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用 column_list 明确地指定存储每个传入值的列。
l DEFAULT:强制 SQL Server 装载为列定义的默认值。如果对于某列并不存在默认值,并且该列允许 NULL,那么就插入 NULL。对于使用
timestamp 数据类型定义的列,插入下一个时间戳值。 DEFAULT 对标识列无效。
l Expression:一个常量、变量或表达式。表达式不能包含 SELECT
或 EXECUTE 语句。
l derived_table:任何有效的 SELECT 语句,它返回将装载到表中的数据行。
l execute_statement:任何有效的 EXECUTE 语句,它使用 SELECT
或 READTEXT 语句返回数据。
< >
第
4
章表和表数据操作
4.4.2 修改表中数据
在企业管理器中修改表数据
用 UPDATE语句修改表数据
UPDATE
{ table_name WITH ( < table_hint_limited > [,..n ] )}
SET { column_name = {expression | DEFAULT | NULL }
WHERE < search_condition >
< >
第
4
章表和表数据操作其中:
l table_name:需要更新的表的名称。如果该表不在当前服务器或数据库中,或不为当前用户所有,这个名称可用链接服务器、数据库和所有者名称来限定。
l WITH ( < table_hint_limited > [,..n ] ):指定目标表所允许的一个或多个表提示,需要有 WITH 关键字和圆括号。
l SET:指定要更新的列或变量名称的列表。
l column_name:含有要更改数据的列的名称。 column_name 必须驻留于 UPDATE 子句中所指定的表或视图中。标识列不能进行更新。
l expression:变量、字面值、表达式或加上括弧的返回单个值的
subSELECT 语句。
l DEFAULT:指定使用对列定义的默认值替换列中的现有值。如果该列没有默认值并且定义为允许空值,这也可用来将列更改为 NULL。
lWHERE:指定条件来限定所更新的行。
< >
第
4
章表和表数据操作
4.4.3 删除表中数据
在企业管理器中删除表中数据
用 DELETE语句删除表中数据
DELETE [ FROM ]
{ table_name WITH ( < table_hint_limited > [,..n ] )
| view_name| rowset_function_limited
}
[ FROM { < table_source > } [,...n ] ]
[ WHERE
{ < search_condition >
} ]
< >
第
4
章表和表数据操作其中:
l FROM:是可选的关键字,可用在 DELETE 关键字与目标 table_name、
view_name 或 rowset_function_limited 之间。
l table_name:是要从其中删除行的表的名称。在其作用域内的 table
变量、或是将 OPENDATASOURCE 函数作为服务器名称的由四部分组成的表名(或视图名称)还可以在 DELETE 语句中作为表源使用。
l WITH (<table_hint_limited> [...n]):指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、
NOLOCK 和 READUNCOMMITTED。
l view_name:是视图名称。在视图的 FROM 子句中,view_name 引用的视图必须可更新且正确引用一个基表。
l FROM < table_source >:指定附加的 FROM 子句。这个对 DELETE
的 Transact-SQL 扩展使用户得以从 <table_sources> 指定数据,并从第一个 FROM 子句内的表中删除相应的行。
l WHERE:指定用于限制删除行的条件。如果没有提供 WHERE 子句,则
DELETE 删除表中的所有行。