首页数据库数据库查询代码(sql增删改查的基本代码)

数据库查询代码(sql增删改查的基本代码)

编程之家2023-10-22160次浏览

大家好,数据库查询代码相信很多的网友都不是很明白,包括sql增删改查的基本代码也是一样,不过没有关系,接下来就来为大家分享关于数据库查询代码和sql增删改查的基本代码的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

数据库查询代码(sql增删改查的基本代码)

关于查询数据表属性的SQL代码

CREATE TABLE

创建新表。

语法

CREATE TABLE

[ database_name.[ owner ].| owner.] table_name

({< column_definition>

数据库查询代码(sql增删改查的基本代码)

| column_name AS computed_column_expression

|< table_constraint>::= [ CONSTRAINT constraint_name ]}

| [{ PRIMARY KEY| UNIQUE} [,...n ]

)

[ ON{ filegroup| DEFAULT} ]

[ TEXTIMAGE_ON{ filegroup| DEFAULT} ]

数据库查询代码(sql增删改查的基本代码)

< column_definition>::={ column_name data_type}

[ COLLATE< collation_name> ]

[ [ DEFAULT constant_expression ]

| [ IDENTITY [( seed, increment) [ NOT FOR REPLICATION ] ] ]

]

[ ROWGUIDCOL]

[< column_constraint> ] [...n ]

< column_constraint>::= [ CONSTRAINT constraint_name ]

{ [ NULL| NOT NULL ]

| [{ PRIMARY KEY| UNIQUE}

[ CLUSTERED| NONCLUSTERED ]

[ WITH FILLFACTOR= fillfactor ]

[ON{filegroup| DEFAULT} ] ]

]

| [ [ FOREIGN KEY ]

REFERENCES ref_table [( ref_column) ]

[ ON DELETE{ CASCADE| NO ACTION} ]

[ ON UPDATE{ CASCADE| NO ACTION} ]

[ NOT FOR REPLICATION ]

]

| CHECK [ NOT FOR REPLICATION ]

( logical_expression)

}

< table_constraint>::= [ CONSTRAINT constraint_name ]

{ [{ PRIMARY KEY| UNIQUE}

[ CLUSTERED| NONCLUSTERED ]

{( column [ ASC| DESC ] [,...n ])}

[ WITH FILLFACTOR= fillfactor ]

[ ON{ filegroup| DEFAULT} ]

]

| FOREIGN KEY

[( column [,...n ]) ]

REFERENCES ref_table [( ref_column [,...n ]) ]

[ ON DELETE{ CASCADE| NO ACTION} ]

[ ON UPDATE{ CASCADE| NO ACTION} ]

[ NOT FOR REPLICATION ]

| CHECK [ NOT FOR REPLICATION ]

( search_conditions)

}

参数

database_name

是要在其中创建表的数据库名称。database_name必须是现有数据库的名称。如果不指定数据库,database_name默认为当前数据库。当前连接的登录必须在 database_name所指定的数据库中有关联的现有用户 ID,而该用户 ID必须具有创建表的权限。

owner

是新表所有者的用户 ID名,owner必须是 database_name所指定的数据库中的现有用户 ID,owner默认为与 database_name所指定的数据库中的当前连接相关联的用户 ID。如果 CREATE TABLE语句由 sysadmin固定服务器角色成员或 database_name所指定的数据库中的 db_dbowner或 db_ddladmin固定数据库角色成员执行,则 owner可以指定与当前连接的登录相关联的用户 ID以外的其它用户 ID。如果与执行 CREATE TABLE语句的登录相关联的用户 ID仅具有创建表的权限,则 owner必须指定与当前登录相关联的用户 ID。sysadmin固定服务器角色成员或别名为 dbo用户的登录与用户 ID dbo相关联;因此,由这些用户创建的表的默认所有者为 dbo。不是由上述两种角色的登录创建的表所有者默认为与该登录相关联的用户 ID。

table_name

是新表的名称。表名必须符合标识符规则。数据库中的 owner.table_name组合必须唯一。table_name最多可包含 128个字符,但本地临时表的表名(名称前有一个编号符#)最多只能包含 116个字符。

column_name

是表中的列名。列名必须符合标识符规则,并且在表内唯一。以 timestamp数据类型创建的列可以省略 column_name。如果不指定 column_name,timestamp列的名称默认为 timestamp。

computed_column_expression

是定义计算列值的表达式。计算列是物理上并不存储在表中的虚拟列。计算列由同一表中的其它列通过表达式计算得到。例如,计算列可以这样定义:cost AS price* qty。表达式可以是非计算列的列名、常量、函数、变量,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。

计算列可用于选择列表、WHERE子句、ORDER BY子句或任何其它可使用常规表达式的位置,但下列情况除外:

计算列不能用作 DEFAULT或 FOREIGN KEY约束定义,也不能与 NOT NULL约束定义一起使用。但是,如果计算列由具有确定性的表达式定义,并且索引列中允许计算结果的数据类型,则可将该列用作索引中的键列,或用作 PRIMARY KEY或 UNIQUE约束的一部分。

例如,如果表中含有整型列 a和 b,则可以在计算列 a+b上创建索引。但不能在计算列 a+DATEPART(dd, GETDATE())上创建索引,因为在以后的调用中,其值可能发生改变。

计算列不能作为 INSERT或 UPDATE语句的目标。

说明表中计算列所使用的列值因行而异,因此每行的计算列值可能不同。

计算列的为空性是由 SQL Server根据使用的表达式自动确定的。即使只有不可为空的列,大多数表达式的结果也认为是可为空的,因为可能的下溢或溢出也将生成 NULL结果。使用 COLUMNPROPERTY函数(AllowsNull属性)查看表中任何计算列的为空性。通过指定 ISNULL(check_expression, constant),其中常量为替代任何 NULL结果的非 NULL值,可为空的表达式 expr可以转换为不可为空的表达式。

ON{filegroup| DEFAULT}

指定存储表的文件组。如果指定 filegroup,则表将存储在指定的文件组中。数据库中必须存在该文件组。如果指定 DEFAULT,或者根本未指定 ON参数,则表存储在默认文件组中。

ON{filegroup| DEFAULT}也可以在 PRIMARY KEY约束或 UNIQUE约束中指定。这些约束会创建索引。如果指定 filegroup,则索引将存储在指定的文件组中。如果指定 DEFAULT,则索引将存储在默认文件组中。如果约束中没有指定文件组,则索引将与表存储在同一文件组中。如果 PRIMARY KEY约束或 UNIQUE约束创建聚集索引,则表的数据页将与索引存储在同一文件组中。

说明在 ON{filegroup| DEFAULT}和 TEXTIMAGE_ON{filegroup| DEFAULT}的上下文中,DEFAULT并不是关键字。DEFAULT是默认文件组的标识符并需对其进行定界,如 ON"DEFAULT"、ON [DEFAULT]和 TEXTIMAGE_ON"DEFAULT"或 TEXTIMAGE_ON [DEFAULT]。

TEXTIMAGE_ON

是表示 text、ntext和 image列存储在指定文件组中的关键字。如果表中没有 text、ntext或 image列,则不能使用 TEXTIMAGE ON。如果没有指定 TEXTIMAGE_ON,则 text、ntext和 image列将与表存储在同一文件组中。

data_type

指定列的数据类型。可以是系统数据类型或用户定义数据类型。用户定义数据类型必须先用 sp_addtype创建,然后才能在表定义中使用。

在 CREATE TABLE语句中,用户定义数据类型的 NULL/NOT NULL赋值可被替代。但长度标准不能更改;不能在 CREATE TABLE语句中指定用户定义数据类型的长度。

DEFAULT

如果在插入过程中未显式提供值,则指定为列提供的值。DEFAULT定义可适用于除定义为 timestamp或带 IDENTITY属性的列以外的任何列。除去表时,将删除 DEFAULT定义。只有常量值(如字符串)、系统函数(如 SYSTEM_USER())或 NULL可用作默认值。为保持与 SQL Server早期版本的兼容,可以给 DEFAULT指派约束名。

constant_expression

是用作列的默认值的常量、NULL或系统函数。

IDENTITY

表示新列是标识列。当向表中添加新行时,Microsoft® SQL Server™将为该标识列提供一个唯一的、递增的值。标识列通常与 PRIMARY KEY约束一起用作表的唯一行标识符。可以将 IDENTITY属性指派给 tinyint、smallint、int、bigint、decimal(p,0)或 numeric(p,0)列。对于每个表只能创建一个标识列。不能对标识列使用绑定默认值和 DEFAULT约束。必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值(1,1)。

seed

是装入表的第一行所使用的值。

increment

是添加到前一行的标识值的增量值。

NOT FOR REPLICATION

表示当复制登录(如 sqlrepl)向表中插入数据时,不强制 IDENTITY属性。复制的行必须保留发布数据库中所赋予的键值;NOT FOR REPLICATION子句确保不向复制进程所插入的行赋予新的标识值。其它登录所插入的行仍然具有以通常的方式创建的新标识值。建议同时使用具有 NOT FOR REPLICATION的 CHECK约束,以确保赋予的标识值处于当前数据库所需的范围内。

ROWGUIDCOL

表示新列是行的全局唯一标识符列。对于每个表只能指派一个 uniqueidentifier列作为 ROWGUIDCOL列。ROWGUIDCOL属性只能指派给 uniqueidentifier列。如果数据库兼容级别小于或等于 65,则 ROWGUIDCOL关键字无效。有关更多信息,请参见 sp_dbcmptlevel。

ROWGUIDCOL属性并不强制列中所存储值的唯一性。该属性也不会为插入到表中的新行自动生成值。若要为每列生成唯一值,那么或者在 INSERT语句中使用 NEWID函数,或者将 NEWID函数指定为该列的默认值。

collation_name

指定列的排序规则。排序规则名称既可以是 Windows排序规则名称,也可以是 SQL排序规则名称。collation_name仅适用于数据类型为 char、varchar、text、nchar、nvarchar及 ntext的列。如果没有指定该参数,那么如果列的数据类型是用户定义的,则该列的排序规则就是用户定义数据类型的排序规则,否则就是数据库的默认排序规则。

有关 Windows和 SQL排序规则名称的更多信息,请参见 COLLATE。

CONSTRAINT

是可选关键字,表示 PRIMARY KEY、NOT NULL、UNIQUE、FOREIGN KEY或 CHECK约束定义的开始。约束是特殊属性,用于强制数据完整性并可以为表及其列创建索引。

constrain_name

是约束的名称。约束名在数据库内必须是唯一的。

NULL| NOT NULL

是确定列中是否允许空值的关键字。从严格意义上讲,NULL不是约束,但可以使用与指定 NOT NULL同样的方法指定。

PRIMARY KEY

是通过唯一索引对给定的一列或多列强制实体完整性的约束。对于每个表只能创建一个 PRIMARY KEY约束。

UNIQUE

是通过唯一索引为给定的一列或多列提供实体完整性的约束。一个表可以有多个 UNIQUE约束。

CLUSTERED| NONCLUSTERED

是表示为 PRIMARY KEY或 UNIQUE约束创建聚集或非聚集索引的关键字。PRIMARY KEY约束默认为 CLUSTERED,UNIQUE约束默认为 NONCLUSTERED。

在 CREATE TABLE语句中只能为一个约束指定 CLUSTERED。如果在为 UNIQUE约束指定 CLUSTERED的同时又指定了 PRIMARY KEY约束,则 PRIMARY KEY将默认为 NONCLUSTERED。

[ WITH FILLFACTOR= fillfactor ]

指定 SQL Server存储索引数据时每个索引页的充满程度。用户指定的 fillfactor取值范围从 1到 100。如果没有指定 fillfactor,则默认为 0。创建索引时,fillfactor的值越低,不必分配新空间即可由新索引项使用的空间就越多。

FOREIGN KEY...REFERENCES

是为列中的数据提供引用完整性的约束。FOREIGN KEY约束要求列中的每个值在被引用表中对应的被引用列中都存在。FOREIGN KEY约束只能引用被引用表中为 PRIMARY KEY或 UNIQUE约束的列或被引用表中在 UNIQUE INDEX内引用的列。

ref_table

是 FOREIGN KEY约束所引用的表名。

(ref_column[,...n])

是 FOREIGN KEY约束所引用的表中的一列或多列。

ON DELETE{CASCADE| NO ACTION}

指定当要创建的表中的行具有引用关系,并且从父表中删除该行所引用的行时,要对该行采取的操作。默认设置为 NO ACTION。

如果指定 CASCADE,则从父表中删除被引用行时,也将从引用表中删除引用行。如果指定 NO ACTION,SQL Server将产生一个错误并回滚父表中的行删除操作。

例如,在 Northwind数据库中,Orders表和 Customers表之间有引用关系。Orders.CustomerID外键引用 Customers.CustomerID主键。

如果对 Customers表的某行执行 DELETE语句,并且为 Orders.CustomerID指定 ON DELETE CASCADE操作,则 SQL Server将在 Orders表中检查是否有与被删除的行相关的一行或多行。如果存在相关行,则 Orders表中的相关行将随 Customers表中的被引用行一同删除。

反之,如果指定 NO ACTION,若在 Orders表中至少有一行引用 Customers表中要删除的行,则 SQL Server将产生一个错误并回滚 Customers表中的删除操作。

ON UPDATE{CASCADE| NO ACTION}

指定当要创建的表中的行具有引用关系,并且在父表中更新该行所引用的行时,要对该行采取的操作。默认设置为 NO ACTION。

如果指定 CASCADE,则在父表中更新被引用行时,也将在引用表中更新引用行。如果指定 NO ACTION,SQL Server将产生一个错误并回滚父表中的行更新操作。

例如,在 Northwind数据库中,Orders表和 Customers表之间有引用关系:Orders.CustomerID外键引用 Customers.CustomerID主键。

如果对 Customers表的某行执行 UPDATE语句,并且为 Orders.CustomerID指定 ON UPDATE CASCADE操作,则 SQL Server将在 Orders表中检查是否有与被更新行相关的一行或多行。如果存在相关行,则 Orders表中的相关行将随 Customers表中的被引用行一同更新。

反之,如果指定 NO ACTION,若在 Orders表中至少有一行引用 Customers行,则 SQL Server将产生一个错误并回滚对 Customers行的更新操作。

CHECK

是通过限制可输入到一列或多列中的可能值强制域完整性的约束。

NOT FOR REPLICATION

是用于防止在复制所使用的分发过程中强制 CHECK约束的关键字。当表是复制发布的订户时,请不要直接更新订阅表,而要更新发布表,然后让复制进程将数据分发回订阅表。可以在订阅表上定义 CHECK约束,以防用户修改订阅表。但是如果不使用 NOT FOR REPLICATION子句,CHECK约束同样会防止复制进程将修改从发布表分发给订阅表。NOT FOR REPLICATION子句表示对用户的修改(而不是对复制进程)强加约束。

NOT FOR REPLICATION CHECK约束适用于被更新记录的前像和后像,以防在复制范围中添加记录或从复制范围中删除记录。将检查所有删除和插入操作;如果操作在复制范围内,则拒绝执行该操作。

如果对标识符列使用此约束,则当复制用户更新标识列时,SQL Server将允许不必重新计算表标识列的种子值。

logical_expression

是返回 TRUE或 FALSE的逻辑表达式。

column

是用括号括起来的一列或多列,在表约束中表示这些列用在约束定义中。

[ASC| DESC]

指定加入到表约束中的一列或多列的排序次序。默认设置为 ASC。

n

是表示前面的项可重复 n次的占位符。

注释

SQL Server的每个数据库最多可存储 20亿个表,每个表可以有 1024列。表的行数及总大小仅受可用存储空间的限制。每行最多可以存储 8,060字节。如果创建具有 varchar、nvarchar或 varbinary列的表,并且列的字节总数超过 8,060字节,虽然仍可以创建此表,但会出现警告信息。如果试图插入超过 8,060字节的行或对行进行更新以至字节总数超过 8,060,将出现错误信息并且语句执行失败。

包含 sql_variant列的 CREATE TABLE语句可以生成下列警告:

The total row size(xx) for table'yy' exceeds the maximum number of bytes per row(8060). Rows that exceed the maximum number of bytes will not be added.

出现该警告是因为 sql_variant的最大长度只能为 8016字节。当某个 sql_variant列包含与最大长度接近的值时,它可以超过行的最大大小限制。

每个表最多可以有 249个非聚集索引和一个聚集索引。其中包括所有为支持表中所定义的 PRIMARY KEY和 UNIQUE约束而生成的索引。

SQL Server在列定义中并不强制以特定的顺序指定 DEFAULT、IDENTITY、ROWGUIDCOL或列约束。

临时表

可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。

本地临时表的名称前面有一个编号符(#table_name),而全局临时表的名称前面有两个编号符(##table_name)。

SQL语句使用 CREATE TABLE语句中为 table_name指定的名称引用临时表:

CREATE TABLE#MyTempTable(cola INT PRIMARY KEY)

INSERT INTO#MyTempTable VALUES(1)

如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则 SQL Server必须能够区分由不同用户创建的表。为此,SQL Server在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb数据库的 sysobjects表中的临时表,其全名由 CREATE TABLE语句中指定的表名和系统生成的数字后缀组成。为了允许追加后缀,为本地临时表指定的表名 table_name不能超过 116个字符。

除非使用 DROP TABLE语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:

当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。

所有其它本地临时表在当前会话结束时自动除去。

全局临时表在创建此表的会话结束且其它任务停止对其引用时自动除去。任务与表之间的关联只在单个 Transact-SQL语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL语句完成后,将自动除去此表。

在存储过程或触发器中创建的本地临时表与在调用存储过程或触发器之前创建的同名临时表不同。如果查询引用临时表,而同时有两个同名的临时表,则不定义针对哪个表解析该查询。嵌套存储过程同样可以创建与调用它的存储过程所创建的临时表同名的临时表。嵌套存储过程中对表名的所有引用都被解释为是针对该嵌套过程所创建的表,例如:

CREATE PROCEDURE Test2

AS

CREATE TABLE#t(x INT PRIMARY KEY)

INSERT INTO#t VALUES(2)

SELECT Test2Col= x FROM#t

GO

CREATE PROCEDURE Test1

AS

CREATE TABLE#t(x INT PRIMARY KEY)

INSERT INTO#t VALUES(1)

SELECT Test1Col= x FROM#t

EXEC Test2

GO

CREATE TABLE#t(x INT PRIMARY KEY)

INSERT INTO#t VALUES(99)

GO

EXEC Test1

GO

下面是结果集:

(1 row(s) affected)

Test1Col

-----------

1

(1 row(s) affected)

Test2Col

-----------

2

当创建本地或全局临时表时,CREATE TABLE语法支持除 FOREIGN KEY约束以外的其它所有约束定义。如果在临时表中指定 FOREIGN KEY约束,该语句将返回警告信息,指出此约束已被忽略,表仍会创建,但不具有 FOREIGN KEY约束。在 FOREIGN KEY约束中不能引用临时表。

考虑使用表变量而不使用临时表。当需要在临时表上显式地创建索引时,或多个存储过程或函数需要使用表值时,临时表很有用。通常,表变量提供更有效的查询处理。有关更多信息,请参见 table。

PRIMARY KEY约束

一个表只能包含一个 PRIMARY KEY约束。

由 PRIMARY KEY约束生成的索引不能使表中的非聚集索引超过 249个,聚集索引超过 1个。

如果没有在 PRIMARY KEY约束中指定 CLUSTERED或 NONCLUSTERED,并且没有为 UNIQUE约束指定聚集索引,则将对该 PRIMARY KEY约束使用 CLUSTERED。

在 PRIMARY KEY约束中定义的所有列都必须定义为 NOT NULL。如果没有指定为空性,加入 PRIMARY KEY约束的所有列的为空性都将设置为 NOT NULL。

UNIQUE约束

如果 UNIQUE约束中没有指定 CLUSTERED或 NONCLUSTERED,则默认为 NONCLUSTERED。

每个 UNIQUE约束都生成一个索引。由 UNIQUE约束生成的索引不能使表中的非聚集索引超过 249个,聚集索引超过 1个。

FOREIGN KEY约束

如果在 FOREIGN KEY约束的列中输入非 NULL值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。

FOREIGN KEY约束应用于前面所讲的列,除非指定了源列。

FOREIGN KEY约束仅能引用位于同一服务器上的同一数据库中的表。数据库间的引用完整性必须通过触发器实现。有关更多信息,请参见 CREATE TRIGGER。

FOREIGN KEY可以引用同一表中的其它列(自引用)。

列级 FOREIGN KEY约束的 REFERENCES子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。

表级 FOREIGN KEY约束的 REFERENCES子句中引用列的数目必须与约束列列表中的列数相同。每个引用列的数据类型也必须与列表中相应列的数据类型相同。

如果 timestamp类型的列是外键或被引用键的一部分,则不能指定 CASCADE。

可以在相互间具有引用关系的表上组合使用 CASCADE和 NO ACTION。如果 SQL Server遇到 NO ACTION,将终止执行语句并回滚相关的 CASCADE操作。当 DELETE语句导致 CASCADE和 NO ACTION组合操作时,在 SQL Server检查 NO ACTION操作之前将执行所有 CASCADE操作。

一个表最多可包含 253个 FOREIGN KEY约束。

对于临时表不强制 FOREIGN KEY约束。

每个表在其 FOREIGN KEY约束中最多可以引用 253个不同的表。

FOREIGN KEY约束只能引用被引用表的 PRIMARY KEY或 UNIQUE约束中的列或被引用表上 UNIQUE INDEX中的列。

DEFAULT定义

每列只能有一个 DEFAULT定义。

DEFAULT定义可以包含常量值、函数、SQL-92 niladic函数或 NULL。下表显示 niladic函数及其在执行 INSERT语句时返回的默认值。 SQL-92 niladic函数返回的值

CURRENT_TIMESTAMP当前日期和时间。

CURRENT_USER执行插入操作的用户名。

SESSION_USER执行插入操作的用户名。

SYSTEM_USER执行插入操作的用户名。

USER执行插入操作的用户名。

DEFAULT定义中的 constant_expression不能引用表中的其它列,也不能引用其它表、视图或存储过程。

不能在数据类型为 timestamp的列或具有 IDENTITY属性的列上创建 DEFAULT定义。

如果用户定义数据类型绑定到默认对象,则不能在该用户定义数据类型的列上创建 DEFAULT定义。

CHECK约束

列可以有任意多个 CHECK约束,并且约束条件中可以包含用 AND和 OR组合起来的多个逻辑表达式。列上的多个 CHECK约束按创建顺序进行验证。

搜索条件必须取值为布尔表达式,并且不能引用其它表。

列级 CHECK约束只能引用被约束的列,表级 CHECK约束只能引用同一表中的列。

当执行 INSERT和 DELETE语句时,CHECK CONSTRAINTS和规则具有相同的数据验证功能。

当列上存在规则和一个或多个 CHECK约束时,将验证所有限制。

其它约束信息

为约束创建的索引不能用 DROP INDEX语句除去;必须用 ALTER TABLE语句除去约束。可以用 DBCC DBREINDEX语句重建为约束创建的并由其使用的索引。

约束的名称必须符合标识符规则,但其名称的首字符不能为#。如果没有提供 constraint_name,则使用系统生成的名称。约束名将出现在所有与违反约束有关的错误信息中。

当 INSERT、UPDATE或 DELETE语句违反约束时,将终止执行该语句。但将继续处理事务(如果此语句为显式事务的组成部分)。可以通过检查系统函数@@ERROR,在事务定义中使用 ROLLBACK TRANSACTION语句。

如果某个表具有 FOREIGN KEY或 CHECK CONSTRAINTS及触发器,则将在触发器执行前先检查约束条件。

若要获得关于表及其列的报表,请使用 sp_help或 sp_helpconstraint。若要重命名表,请使用 sp_rename。若要获得与表相关的视图和存储过程的报表,请使用 sp_depends。

通常情况下,为表和索引分配空间时,每次以一个扩展盘区为增量单位。当创建表或索引时,首先从混合扩展盘区为其分配页,直到它具有足够的页填满一个统一扩展盘区。当有足够的页填满统一扩展盘区后,每当当前分配的扩展盘区填满时,将再为其分配另一个扩展盘区。若要获得关于由表分配和占用的空间量的报表,请执行 sp_spaceused。

表定义中的为空性规则

列的为空性规则决定该列中是否允许以空值(NULL)作为其数据。NULL不是零或空白:它表示没有输入任何内容,或提供了一个显式 NULL值,通常表示该值未知或不适用。

当用 CREATE TABLE或 ALTER TABLE语句创建或更改表时,数据库或会话设置会影响且可能替代列定义中数据类型的为空性。建议始终将列显式定义为非计算列的 NULL或 NOT NULL,如果使用用户定义数据类型,则建议允许该列使用此数据类型的默认为空性。

在没有显式指定时,列的为空性遵循以下规则:

如果该列以用户定义数据类型定义:

SQL Server使用在创建数据类型时指定的为空性。使用 sp_help可获得该数据类型的默认为空性。

如果该

关于SQL数据库查询指令

说实话,不是看着这80分,我还真不敢随便回答你,因为看得出,你对数据库的了解,,,,真的还,,,,,

1.首先你得知道表名、字段,比如人物级别,你得知道它的字段是什么,一般不会用中文,可能的是 lv,弄清楚人物级别和标识的字段名字后,我们可以开始查询了

2.现在假设人物级别字段为lv,标识为 index,假设表名为 table

1-25级(包括1级,包括25级)人物标识为0001的语句:

select* from table where lv>=1 and lv<=25 and index='0001'

标识为0002的,而且级别是25-60(包括25,包括60)的语句:

select* from table where lv>=25 and lv<=60 and index='0002'

这样根据各个运行结果的条数,就可以看出对应人物有多少个

也可以这样写:

select count(*) from table where lv>=1 and lv<=25 and index='0001'

select count(*) from table where lv>=25 and lv<=60 and index='0002'

这样可以各只出现一条,看对应数字就可以了。

或者你需要2个在一条中看出来?按以下写;

select sum(case when lv>=1 and lv<=25 and index='0001' then 1 else 0 end)标识0001的25级以下的,sum(case when lv>=25 and lv<=60 and index='0002' then 1 else 0 end)标识0002的25以上的 from table

以上语句,如果你需要不包括,只需要把级别对应前面的等号去掉就OK了

OK,搞定,给分啦,好辛苦。嘿嘿

补充一下,你的数据库名,表名,字段名,这是任何人都猜不到的,因为是写程序的人自定义的,谁知道那天杀的怎么想。你可以去对应服务器的企业管理器里找,,,就可以找到了,当然最直接的是问程序开发者,或者看代码(估计你也看不出来,,,汗一个)

sql增删改查的基本代码

adoquery1.Fielddefs[1].Name;字段名

dbgrid1.columns[0].width:=10; dbgrid的字段宽度

adoquery1.Fields[i].DataType=ftString字段类型

update jb_spzl set kp_item_name=upper(kp_item_name)修改数据库表中某一列为大写

select* from master.dbo.sysobjects,jm_barcode.dbo.users多库查询

adotable1.sort:='字段名称 ASC' adotable排序

SQL常用语句一览

sp_password null,'新密码','sa'修改数据库密码

(1)数据记录筛选:

sql="select* from数据表 where字段名=字段值 orderby字段名 [desc]"

sql="select* from数据表 where字段名 like'%字段值%' orderby字段名 [desc]"

sql="select top10* from数据表 where字段名 orderby字段名[desc]"

sql="select* from数据表 where字段名 in('值1','值2','值3')"

sql="select* from数据表 where字段名 between值1 and值 2"

(2)更新数据记录:

sql="update数据表 set字段名=字段值 where条件表达式"

sql="update数据表 set字段1=值1,字段2=值2……字段n=值n where条件表达式"

(3)删除数据记录:

sql="delete from数据表 where条件表达式"

sql="delete from数据表"(将数据表所有记录删除)

(4)添加数据记录:

sql="insert into数据表(字段1,字段2,字段3…) values(值1,值2,值3…)"

sql="insert into目标数据表 select* from源数据表"(把源数据表的记录添加到目标数据表)

(5)数据记录统计函数:

AVG(字段名)得出一个表格栏平均值

COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名)取得一个表格栏最大的值

MIN(字段名)取得一个表格栏最小的值

SUM(字段名)把数据栏的值相加

引用以上函数的方法:

sql="selectsum(字段名)as别名from数据表where条件表达式"

setrs=conn.excute(sql)

用rs("别名")获取统的计值,其它函数运用同上。

(5)数据表的建立和删除:

CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)

例:CREATETABLEtab01(namevarchar(50), datetimedefaultnow())

DROPTABLE数据表名称(永久性删除一个数据表)

4.记录集对象的方法:

rs.movenext将记录指针从当前的位置向下移一行

rs.moveprevious将记录指针从当前的位置向上移一行

rs.movefirst将记录指针移到数据表第一行

rs.movelast将记录指针移到数据表最后一行

rs.absoluteposition=N将记录指针移到数据表第N行

rs.absolutepage=N将记录指针移到第N页的第一行

rs.pagesize=N设置每页为N条记录

rs.pagecount根据pagesize的设置返回总页数

rs.recordcount返回记录总数

rs.bof返回记录指针是否超出数据表首端,true表示是,false为否

rs.eof返回记录指针是否超出数据表末端,true表示是,false为否

rs.delete删除当前记录,但记录指针不会向下移动

rs.addnew添加记录到数据表末端

rs.update更新数据表记录

SQL语句的添加、删除、修改虽然有如下很多种方法,但在使用过程中还是不够用,不知是否有高手把更多灵活的使用方法贡献出来?

添加、删除、修改使用db.Execute(Sql)命令执行操作

╔----------------╗

☆数据记录筛选☆

╚----------------╝

注意:单双引号的用法可能有误(没有测式)

Sql="Select Distinct字段名 From数据表"

Distinct函数,查询数据库存表内不重复的记录

Sql="Select Count(*) From数据表 where字段名1>#18:0:0# and字段名1<#19:00#"

count函数,查询数库表内有多少条记录,“字段名1”是指同一字段

例:

set rs=conn.execute("select count(id) as idnum from news")

response.write rs("idnum")

sql="select* from数据表 where字段名 between值1 and值2"

Sql="select* from数据表 where字段名 between#2003-8-10# and#2003-8-12#"

在日期类数值为2003-8-10 19:55:08的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。

select* from tb_name where datetime between#2003-8-10# and#2003-8-12#

字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。

Sql="select* from数据表 where字段名=字段值 order by字段名 [desc]"

Sql="select* from数据表 where字段名 like'%字段值%' order by字段名 [desc]"

模糊查询

Sql="select top 10* from数据表 where字段名 order by字段名 [desc]"

查找数据库中前10记录

Sql="select top n* form数据表 order by newid()"

随机取出数据库中的若干条记录的方法

top n,n就是要取出的记录数

Sql="select* from数据表 where字段名 in('值1','值2','值3')"

╔----------------╗

☆添加数据记录☆

╚----------------╝

sql="insert into数据表(字段1,字段2,字段3…) valuess(值1,值2,值3…)"

sql="insert into数据表 valuess(值1,值2,值3…)"

不指定具体字段名表示将按照数据表中字段的顺序,依次添加

sql="insert into目标数据表 select* from源数据表"

把源数据表的记录添加到目标数据表

╔----------------╗

☆更新数据记录☆

╚----------------╝

Sql="update数据表 set字段名=字段值 where条件表达式"

Sql="update数据表 set字段1=值1,字段2=值2……字段n=值n where条件表达式"

Sql="update数据表 set字段1=值1,字段2=值2……字段n=值n"

没有条件则更新整个数据表中的指定字段值

╔----------------╗

☆删除数据记录☆

╚----------------╝

Sql="delete from数据表 where条件表达式"

Sql="delete from数据表"

没有条件将删除数据表中所有记录)

╔--------------------╗

☆数据记录统计函数☆

╚--------------------╝

AVG(字段名)得出一个表格栏平均值

COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名)取得一个表格栏最大的值

MIN(字段名)取得一个表格栏最小的值

SUM(字段名)把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as别名 from数据表 where条件表达式"

set rs=conn.excute(sql)

用 rs("别名")获取统的计值,其它函数运用同上。

╔----------------------╗

☆数据表的建立和删除☆

╚----------------------╝

CREATE TABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE数据表名称(永久性删除一个数据表)

╔--------------------╗

☆记录集对象的方法☆

╚--------------------╝

rs.movenext将记录指针从当前的位置向下移一行

rs.moveprevious将记录指针从当前的位置向上移一行

rs.movefirst将记录指针移到数据表第一行

rs.movelast将记录指针移到数据表最后一行

rs.absoluteposition=N将记录指针移到数据表第N行

rs.absolutepage=N将记录指针移到第N页的第一行

rs.pagesize=N设置每页为N条记录

rs.pagecount根据 pagesize的设置返回总页数

rs.recordcount返回记录总数

rs.bof返回记录指针是否超出数据表首端,true表示是,false为否

rs.eof返回记录指针是否超出数据表末端,true表示是,false为否

rs.delete删除当前记录,但记录指针不会向下移动

rs.addnew添加记录到数据表末端

rs.update更新数据表记录

%:代表任意长的一段字符 _:代表一个字符 [a,b,c,d]:a、b、c、d中的任意一个 [^a,b,c,d]:不在a、b、c、d中的任意一个

OK,本文到此结束,希望对大家有所帮助。

cdn加速服务器多少钱?cdn加速多少钱使用数据库?数据库的作用是什么