




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL SERVER培训1、 如何使用Select、Insert、Delete和Update。(1)SELECT从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列。虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC 可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。语法SELECT statement := ORDER BY order_by_expression | column_position ASC | DESC ,.n COMPUTE AVG | COUNT | MAX | MIN | SUM ( expression ) ,.n BY expression ,.n FOR BROWSE | XML RAW | AUTO | EXPLICIT , XMLDATA , ELEMENTS , BINARY base64 OPTION ( ,.n ) := | ( ) UNION ALL query specification | ( ) .n :=SELECT ALL | DISTINCT TOP integer | TOP integer PERCENT WITH TIES INTO new_table FROM ,.n WHERE GROUP BY ALL group_by_expression ,.n WITH CUBE | ROLLUP HAVING 由于 SELECT 语句的复杂性,下面按子句说明详细的语法元素和参数:SELECT 子句INTO 子句FROM 子句WHERE 子句GROUP BY 子句HAVING 子句UNION 运算符ORDER BY 子句COMPUTE 子句FOR 子句OPTION 子句SELECT 子句指定由查询返回的列。语法SELECT ALL | DISTINCT TOP n PERCENT WITH TIES :=* | table_name | view_name | table_alias .*| column_name | expression | IDENTITYCOL | ROWGUIDCOL AS column_alias | column_alias = expression ,.n 参数ALL指定在结果集中可以显示重复行。ALL 是默认设置。DISTINCT指定在结果集中只能显示唯一行。为了 DISTINCT 关键字的用途,空值被认为相等。TOP n PERCENT指定只从查询结果集中输出前 n 行。n 是介于 0 和 4294967295 之间的整数。如果还指定了 PERCENT,则只从结果集中输出前百分之 n 行。当指定时带 PERCENT 时,n 必须是介于 0 和 100 之间的整数。如果查询包含 ORDER BY 子句,将输出由 ORDER BY 子句排序的前 n 行(或前百分之 n 行)。如果查询没有 ORDER BY 子句,行的顺序将任意。WITH TIES指定从基本结果集中返回附加的行,这些行包含与出现在 TOP n (PERCENT) 行最后的 ORDER BY 列中的值相同的值。如果指定了 ORDER BY 子句,则只能指定 TOP .WITH TIES。为结果集选择的列。选择列表是以逗号分隔的一系列表达式。 * 指定在 FROM 子句内返回所有表和视图内的所有列。列按 FROM 子句所指定的由表或视图返回,并按它们在表或视图中的顺序返回。table_name | view_name | table_alias.* 将 * 的作用域限制为指定的表或视图。column_name 是要返回的列名。限定 column_name 以避免二义性引用,当 FROM 子句中的两个表内有包含重复名的列时会出现这种情况。例如,Northwind 数据库中的 Customers 和 Orders 表内都有名为 ColumnID 的列。如果在查询中联接这两个表,可以在选择列表中将客户 ID 指定为 Customers.CustomerID。expression 是列名、常量、函数以及由运算符连接的列名、常量和函数的任意组合,或者是子查询。 IDENTITYCOL 返回标识列。有关更多信息,请参见 IDENTITY(属性)、ALTER TABLE 和 CREATE TABLE。 如果 FROM 子句中的多个表内有包含 IDENTITY 属性的列,则必须用特定的表名(如 T1.IDENTITYCOL)限定 IDENTITYCOL。 ROWGUIDCOL 返回行全局唯一标识列。 如果在 FROM 子句中有多个表具有 ROWGUIDCOL 属性,则必须用特定的表名(如 T1.ROWGUIDCOL)限定 ROWGUIDCOL。 column_alias 是查询结果集内替换列名的可选名。例如,可以为名为 quantity 的列指定别名,如Quantity或Quantity to Date或Qty。 别名还可用于为表达式结果指定名称,例如: USE NorthwindSELECT AVG(UnitPrice) AS Average PriceFROM Order Detailscolumn_alias 可用于 ORDER BY 子句。然而,不能用于 WHERE、GROUP BY 或 HAVING 子句。如果查询表达式是 DECLARE CURSOR 语句的一部分,则 column_alias 不能用在 FOR UPDATE 子句中。 INTO 子句创建新表并将结果行从查询插入新表中。用户若要执行带 INTO 子句的 SELECT 语句,必须在目的数据库内具有 CREATE TABLE 权限。SELECT.INTO 不能与 COMPUTE 子句一起使用。有关更多信息,请参见事务和显式事务。 通过在 WHERE 子句中包含 FALSE 条件,可以使用 SELECT.INTO 创建没有数据的相同表定义(不同表名)。语法 INTO new_table 参数new_table根据选择列表中的列和 WHERE 子句选择的行,指定要创建的新表名。new_table 的格式通过对选择列表中的表达式进行取值来确定。new_table 中的列按选择列表指定的顺序创建。new_table 中的每列有与选择列表中的相应表达式相同的名称、数据类型和值。当选择列表中包含计算列时,新表中的相应列不是计算列。新列中的值是在执行 SELECT.INTO 时计算出的。在此次发布的 SQL Server 版本中,select into/bulkcopy 数据库选项对是否可以使用 SELECT INTO 创建永久表没有影响。对包括 SELECT INTO 在内的某些大容量操作的记录量,取决于对数据库有效的恢复模式。有关更多信息,请参见使用恢复模型。在以前发布的版本中,如果设置了 select into/bulk copy,则可用 SELECT INTO 创建永久表。select into/bulk copy 用于向后兼容,但在以后的版本中可能不支持该选项。有关更多信息,请参考恢复模式和向后兼容性主题以及 ALTER DATABASE 主题。(2)INSERT将新行添加到表或视图。语法INSERT INTO table_name WITH ( .n )| view_name| rowset_function_limited ( column_list ) VALUES( DEFAULT | NULL | expression ,.n )| derived_table| execute_statement | DEFAULT VALUES := FASTFIRSTROW| HOLDLOCK| PAGLOCK| READCOMMITTED| REPEATABLEREAD| ROWLOCK| SERIALIZABLE| TABLOCK| TABLOCKX| UPDLOCK 参数INTO一个可选的关键字,可以将它用在 INSERT 和目标表之间。table_name将要接收数据的表或 table 变量的名称。 WITH ( .n)指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、NOLOCK 和 READUNCOMMITTED。有关表提示的更多信息,请参见 FROM。view_name视图的名称及可选的别名。通过 view_name 来引用的视图必须是可更新的。由 INSERT 语句所做的修改不能影响视图的 FROM 子句中引用的多个基表。例如,在多表视图中的 INSERT 必须使用 column_list,column_list 是只引用来自一个基表的列。有关可更新视图的更多信息,请参见 CREATE VIEW。 rowset_function_limited是 OPENQUERY 或 OPENROWSET 函数。有关更多信息,请参见 OPENQUERY 以及 OPENROWSET。 (column_list)要在其中插入数据的一列或多列的列表。必须用圆括号将 column_list 括起来,并且用逗号进行分隔。 如果某列不在 column_list 中,则 Microsoft SQL Server 必须能够基于该列的定义提供一个值;否则不能装载行。如果列满足下面的条件,那么 SQL Server 将自动为列提供值: 具有 IDENTITY 属性。使用下一个增量标识值。 有默认值。使用列的默认值。 具有 timestamp 数据类型。使用当前的时间戳值。 是可空的。使用空值。 当向标识列中插入显式的值时,必须使用 column_list 及 VALUES 列表,并且对于表,SET IDENTITY_INSERT 选项必须是 ON。VALUES引入要插入的数据值的列表。对于 column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果 VALUES 列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用 column_list 明确地指定存储每个传入值的列。DEFAULT强制 SQL Server 装载为列定义的默认值。如果对于某列并不存在默认值,并且该列允许 NULL,那么就插入 NULL。对于使用 timestamp 数据类型定义的列,插入下一个时间戳值。DEFAULT 对标识列无效。expression一个常量、变量或表达式。表达式不能包含 SELECT 或 EXECUTE 语句。derived_table任何有效的 SELECT 语句,它返回将装载到表中的数据行。execute_statement任何有效的 EXECUTE 语句,它使用 SELECT 或 READTEXT 语句返回数据。如果将 execute_statement 与 INSERT 一起使用,那么每个结果集都必须与表中或 column_list 中的列兼容。execute_statement 可以用来执行同一服务器或远程服务器上的存储过程。执行远程服务器中的过程,然后将结果集返回到本地服务器,并装载到本地服务器的表中。如果 execute_statement 使用 READTEXT 语句返回数据,那么每个单独的 READTEXT 语句最多可以返回 1 MB (1024 KB) 的数据,也可以将 execute_statement 与扩展过程一起使用,并且插入扩展过程的主线程返回的数据。不会插入不是主线程的其它线程中的输出结果。说明对于 SQL Server 7.0,execute_statement 不包含返回 text 或 image 列的扩展存储过程。这个行为是从 SQL Server 早期版本变化而来的。DEFAULT VALUES强制新行包含为每个列所定义的默认值。注释INSERT 将新行追加到表中。若要替换表中的数据,必须在使用 INSERT 装载新数据之前,使用 DELETE 或 TRUNCATE TABLE 语句清除现有的数据。若要修改现有行中的列值,请使用 UPDATE。若要创建新表,并且通过一个步骤给它装载数据,请使用 SELECT 语句的 INTO 选项。table 变量在其作用域内可以像常规表一样访问。因此,可以像在 INSERT 语句中将行添加到表一样使用 table 变量。有关更多信息,请参见 table。由 OPENDATASOURCE 函数建立的、作为服务器名部分的四段名称可以作为表源,该表源可以出现在 INSERT 语句中显示表名的所有位置。使用 uniqueidentifier 数据类型创建的列存储特殊格式的 16 字节二进制值。与标识列不同,SQL Server 不会为带有 uniqueidentifier 数据类型的列自动地生成值。在插入操作过程中,带有 uniqueidentifier 数据类型的变量以及某些字符串常量可以用于 uniqueidentifier 列(这些字符串常量的形式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,有 36 个字符,其中包括连字符。x 是十六进制数,范围为 0-9 或 a-f。)。例如,对于 uniqueidentifier 变量或列,6F9619FF-8B86-D011-B42D-00C04FC964FF 是一个有效值。使用 NEWID() 函数可以获取全局唯一的 ID (GUID)。插入行时,可以应用下列规则: 如果将值装载到带有 char、varchar 或 varbinary 数据类型的列,尾随空格(对于 char 和 varchar 是空格,对于 varbinary 是零)的填充和截断是由 SET ANSI_PADDING 设置确定的。该设置是在创建表时为列定义的。有关更多信息,请参见 SET ANSI_PADDING。 下表显示 SET ANSI_PADDING 为 OFF 时的默认操作。数据类型默认操作Char将带有空格的值填充到已定义的列宽。Varchar删除最后的非空格字符后面的尾随空格,而对于只由空格组成的字符串,一直删除到只留下一个空格字符。Varbinary删除尾随的零。 如果将一个空字符串 ( ) 装载到带有 varchar 或 text 数据类型的列,那么默认操作是装载一个零长度的字符串。如果数据库的兼容级别小于 70,那么将该值转换成单个空格。有关更多信息,请参见 sp_dbcmptlevel。 如果 INSERT 语句违反约束或规则,或者它有与列的数据类型不兼容的值,那么该语句就会失败,并且 SQL Server 显示错误信息。 将空值插入到 text 或 image 列不能创建有效的文本指针,也不能预分配 8 KB 的文本页。有关插入 text 和 image 数据的更多信息,请参见使用 text、ntext 和 image 函数。 如果 INSERT 正在使用 SELECT 或 EXECUTE 装载多行,正在装载的值中出现任何违反规则或约束的行为都会导致整个语句终止,从而不会装载任何行。 当向远程 SQL Server 表中插入值且没有为所有列指定值时,则用户必须标识将向其中插入指定值的列。 在本地和远程分区视图上,忽略 INSERT 语句的 SET ROWCOUNT 选项的设置。而且,当兼容级别设置为 80 时,在 SQL Server 2000 中的远程表上也不支持 INSERT 语句的 SET ROWCOUNT 选项。当为表或视图的 INSERT 操作定义了 INSTEAD-OF 触发器时,该触发器就会执行 INSERT 语句中的 instead of。以前的 SQL Server 版本只支持在 INSERT 中定义的 AFTER 触发器,以及其它数据修改语句。如果在表达式赋值过程中 INSERT 语句遇到算术错误(溢出、被零除或域错误),那么 SQL Server 会处理这些错误,就好像 SET ARITHABORT 是 ON 一样。批处理的其余部分将终止,并且会返回一条错误信息。权限默认情况下,INSERT 权限被授予 sysadmin 固定服务器角色成员,db_owner 和 db_datawriter 固定数据库角色成员,以及表的所有者。sysadmin、db_owner 和 db_securityadmin 角色成员和表所有者可以将权限转让给其他用户。示例A. 使用简单的 INSERT下面的示例创建表 T1,并且插入一行。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = T1) DROP TABLE T1GOCREATE TABLE T1 ( column_1 int, column_2 varchar(30)INSERT T1 VALUES (1, Row #1)B. 插入与列顺序不同的数据下面的示例使用 column_list 及 VALUES 列表显式地指定将被插入每个列的值。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = T1) DROP TABLE T1GOCREATE TABLE T1 ( column_1 int, column_2 varchar(30)INSERT T1 (column_2, column_1) VALUES (Row #1,1)C. 插入值少于列个数的数据下面的示例创建一个带有四个列的表。INSERT 语句插入一些行,这些行只有部分列包含值。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = T1) DROP TABLE T1GOCREATE TABLE T1 ( column_1 int identity, column_2 varchar(30) CONSTRAINT default_name DEFAULT (column default), column_3 int NULL, column_4 varchar(40)INSERT INTO T1 (column_4) VALUES (Explicit value)INSERT INTO T1 (column_2,column_4) VALUES (Explicit value, Explicit value)INSERT INTO T1 (column_2,column_3,column_4) VALUES (Explicit value,-44,Explicit value)SELECT * FROM T1D. 将数据装载到带有标识列的表前两个 INSERT 语句允许为新行生成标识值。第三个 INSERT 语句用 SET IDENTITY_INSERT 语句替代列的 IDENTITY 属性,并且将一个显式的值插入到标识列。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = T1) DROP TABLE T1GOCREATE TABLE T1 ( column_1 int IDENTITY, column_2 varchar(30)INSERT T1 VALUES (Row #1)INSERT T1 (column_2) VALUES (Row #2)SET IDENTITY_INSERT T1 ON INSERT INTO T1 (column_1,column_2) VALUES (-99,Explicit identity value)SELECT * FROM T1E. 通过视图将数据装载到表在下面的示例中,INSERT 语句指定一个视图名;但是将新行插入该视图的基础表中。INSERT 语句中 VALUES 列表的顺序必须与视图的列顺序相匹配。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = T1) DROP TABLE T1GOIF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = V1) DROP VIEW V1GOCREATE TABLE T1 ( column_1 int, column_2 varchar(30)GOCREATE VIEW V1 AS SELECT column_2, column_1 FROM T1GOINSERT INTO V1 VALUES (Row 1,1)SELECT * FROM T1F. 使用 DEFAULT VALUES 选项装载数据在下面的示例中,CREATE TABLE 语句给每个列定义一个值,当在 INSERT 语句中没有为列指定显式的值时,就可以使用这个值。使用 INSERT 语句的 DEFAULT VALUES 选项,无须提供显式的值就可以添加行。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = T1) DROP TABLE T1GOCREATE DEFAULT bound_default AS Bound default valueGOCREATE TABLE T1 ( column_1 int identity, column_2 varchar(30) CONSTRAINT default_name DEFAULT (column default), column_3 timestamp, column_4 varchar(30), column_5 int NULL)GOUSE masterEXEC sp_bindefault bound_default,T1.column_4INSERT INTO T1 DEFAULT VALUES SELECT * FROM T1G. 使用 SELECT 和 EXECUTE 选项装载数据下面的示例演示三种不同的方法,用来从一个表获取数据,并将数据装载到另一个表。每种方法都基于一个多表 SELECT 语句,该语句在列列表中包含一个表达式及一个文字值。第一个 INSERT 语句使用一个 SELECT 语句直接从源表 (authors) 检索数据,并且将结果集存储到 author_sales 表。第二个 INSERT 执行一个包含 SELECT 语句的过程,而第三个 INSERT 将 SELECT 语句作为一个文字字符串执行。 IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = author_sales) DROP TABLE author_salesGOIF EXISTS(SELECT name FROM sysobjects WHERE name = get_author_sales AND type = P) DROP PROCEDURE get_author_salesGOUSE pubsCREATE TABLE author_sales( data_source varchar(20), au_id varchar(11), au_lname varchar(40), sales_dollars smallmoney)GOCREATE PROCEDURE get_author_sales AS SELECT PROCEDURE, authors.au_id, authors.au_lname, SUM(titles.price * sales.qty) FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id INNER JOIN sales ON titles.title_id = sales.title_id WHERE authors.au_id like 8% GROUP BY authors.au_id, authors.au_lnameGO-INSERT.SELECT exampleUSE pubsINSERT author_sales SELECT SELECT, authors.au_id, authors.au_lname, SUM(titles.price * sales.qty) FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id INNER JOIN sales ON titles.title_id = sales.title_id WHERE authors.au_id LIKE 8% GROUP BY authors.au_id, authors.au_lname-INSERT.EXECUTE procedure exampleINSERT author_sales EXECUTE get_author_sales-INSERT.EXECUTE(string) exampleINSERT author_sales EXECUTE (SELECT EXEC STRING, authors.au_id, authors.au_lname, SUM(titles.price * sales.qty) FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id INNER JOIN sales ON titles.title_id = sales.title_id WHERE authors.au_id like 8% GROUP BY authors.au_id, authors.au_lname)-Show results.SELECT * FROM author_salesH. 使用 SELECT 语句中的 TOP 子句插入数据因为可以在 INSERT 语句中指定 SELECT 语句,所以也可以将 TOP 子句用在 SELECT 语句中。下面的示例将 authors 表中最上面的 10 个作者插入到名为 new_authors 的新表中。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = new_authors) DROP TABLE new_authorsGOUSE pubsCREATE TABLE new_authors( au_id id, au_lname varchar(40), au_fname varchar(20), phone char(12), address varchar(40), city varchar(20), state char(2), zip char(5), contract bit)INSERT INTO new_authors SELECT TOP 10 * FROM authors请参见CREATE TABLEEXECUTEFROMIDENTITY(属性)NEWIDSELECTSET ROWCOUNT(3)DELETE从表中删除行。语法DELETE FROM table_name WITH ( .n ) | view_name | rowset_function_limited FROM ,.n WHERE | CURRENT OF GLOBAL cursor_name | cursor_variable_name OPTION ( ,.n ) :=table_name AS table_alias WITH ( ,.n ) | view_name AS table_alias | rowset_function AS table_alias | derived_table AS table_alias ( column_alias ,.n ) | := ON | CROSS JOIN | := INNER | LEFT | RIGHT | FULL OUTER JOIN := FASTFIRSTROW| HOLDLOCK| PAGLOCK| READCOMMITTED| REPEATABLEREAD| ROWLOCK| SERIALIZABLE| TABLOCK| TABLOCKX| UPDLOCK := INDEX ( index_val ,.n )| FASTFIRSTROW| HOLDLOCK| NOLOCK| PAGLOCK| READCOMMITTED| READPAST| READUNCOMMITTED| REPEATABLEREAD| ROWLOCK| SERIALIZABLE| TABLOCK| TABLOCKX| UPDLOCK := HASH | ORDER GROUP| CONCAT | HASH | MERGE UNION| FAST number_rows| FORCE ORDER| MAXDOP| ROBUST PLAN| KEEP PLAN 参数FROM是可选的关键字,可用在 DELETE 关键字与目标 table_name、view_name 或 rowset_function_limited 之间。 table_name是要从其中删除行的表的名称。 在其作用域内的 table 变量、或是将 OPENDATASOURCE 函数作为服务器名称的由四部分组成的表名(或视图名称)还可以在 DELETE 语句中作为表源使用。WITH ( .n)指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、NOLOCK 和 READUNCOMMITTED。有关表提示的更多信息,请参见 FROM。view_name是视图名称。在视图的 FROM 子句中,view_name 引用的视图必须可更新且正确引用一个基表。有关可更新视图的更多信息,请参见 CREATE VIEW。说明如果表或视图存在于另一个数据库内或有一个不同于当前用户的所有者,则使用格式为 server_name.database.owner.object_name 的由四部分组成的合法名称。有关更多信息,请参见 Transact-SQL 语法规则。rowset_function_limitedOPENQUERY 或 OPENROWSET 函数,视提供程序功能而定。有关提供程序所需功能的更多信息,请参见 OLE DB 提供程序的 UPDATE 和 DELETE 语句要求。有关行集函数的更多信息,请参见 OPENQUERY 和 OPENROWSET。FROM 指定附加的 FROM 子句。这个对 DELETE 的 Transact-SQL 扩展使您得以从 指定数据,并从第一个 FROM 子句内的表中删除相应的行。 这个扩展指定联接,可在 WHERE 子句中取代子查询来标识要删除的行。 table_name AS table_alias 是为删除操作提供标准值的表名。view_name AS table_alias 是为删除操作提供标准值的视图名称。带 INSTEAD OF UPDATE 触发器的视图不能是含有 FROM 子句的 UPDATE 的目标。WITH ( 指定一个或更多表提示。有关表提示的更多信息,请参见 FROM。rowset_function AS table_alias 是行集函数名和可选别名。有关行集函数列表的更多信息,请参见行集函数。derived_table AS table_alias 是从数据库中检索行的子查询。derived_table 用作对外部查询的输入。column_alias 替换结果集内列名的可选别名。在选择列表中放入每个列的一个别名,并将整个列别名列表用圆括号括起来。 由两个或更多表的积组成的结果集,例如: SELECT *FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3 RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4 ON tab3.c1 = tab4.c1 ON tab2.c3 = tab4.c3对于多个 CROSS 联接,请使用圆括号来更改联接的自然顺序。指定联接操作的类型。 INNER 指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。LEFT OUTER 指定在结果集内包含左表中所有不满足指定条件的行,并将右表中的输出列设置为 NULL 以作为对内联接所返回的所有行的补充。RIGHT OUTER 指定在结果集内包含右表中所有不满足指定条件的行,并将左表中的输出列设置为 NULL 以作为对内联接所返回的所有行的补充。FULL OUTER 如果来自左表或右表的某行与选择准则不匹配,则指定在结果集内包含该行,并且将与另一个表对应的输出列设置为 NULL。除此之外,结果集中还包含通常由内联接返回的所有行。JOIN 是表示在删除操作中使用 SQL-92 式联接的关键字。 ON 指定联接所基于的条件。尽管经常使用列和比较运算符,但此条件可指定任何谓词,例如:FROM Suppliers JOIN Products ON (Suppliers.SupplierID = Products.SupplierID)当条件指定列时,列不必具有相同的名称或数据类型;但是,如果数据类型不一致,则这些列必须相互兼容或是 Microsoft SQL Server 能够隐性转换的类型。如果数据类型不能隐性转换,则条件必须使用 CAST 函数显式转换数据类型。 有关搜索条件和谓词的更多信息,请参见搜索条件。 CROSS JOIN指定两个表的矢量积。这将返回相同的行,就好像在旧式的非 SQL-92 式联接中并没有指定 WHERE 子句。WHERE指定用于限制删除行数的条件。如果没有提供 WHERE 子句,则 DELETE 删除表中的所有行。基于 WHERE 子句中所指定的条件,有两种形式的删除操作。 搜索删除指定搜索条件限定删除的行。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版智能电网技术研发技术保密协议正本-电力行业保密协议
- 2025年度电梯维保及智能化改造项目合同
- 2025年车辆挂靠及运输服务合同模板
- 2025版国际会议中心租赁服务合同
- 2025二手农用三轮车买卖与农事配套服务合同
- 2025年度房地产营销策划服务合同范本
- 2025年软件开发使用权授权合同样本
- 2025年度人防工程防护设备安装与验收合同
- 2025版食品安全宣传资料保密制作合同
- 2025年建筑施工安全防护措施合同范本
- 无线充电技术在汽车上的应用
- 马工程《刑法学(下册)》教学课件 第17章 危害国家安全罪
- 11科室临床路径、单病种管理目录
- 《廉洁从业》企业文化培训课件
- 综合性文稿写作名师优质课赛课一等奖市公开课获奖课件
- 《生物多样性公约》及国际组织课件
- 种子全程质量管理制度
- 滴定管使用课件
- 单片机应用技术项目教程C语言版ppt课件(完整版)
- 公司金融课件(完整版)
- 14S501-1 球墨铸铁单层井盖及踏步施工
评论
0/150
提交评论