㈠ asp.net问题 报错 列 xxx 不属于表 Table 错误
在多线程同时访问数据库的时候,会出现一个还未访问完,另一个就建立了连接使用。返回的Dataset就会被改变,就会出现列不属于表。。。。
我们解决的办法就是在创建连接的时候
就要判断是否已经打开----
(开)New一个新的连接;(关)使用。
如果正在打开,则等待(锁住 这里我们可以用while(true))当已经打开,我们在new新的连接,
但是要注意,当前一个用户连接失败,则还是要第二个用户进行连接操作(try catch 连接失败第二个用户执行while(false)),否则就会无限的等待下去
㈡ 以下命令中,不属于sql定义语句的是() A、alter B、insert C、drop D、create
不属于SQL定义语句的是insert。
1、基本的数据库操作:
创建(create)、修改(alter)、删除(drop)
2、系统数据库操作:
master:记录系统级的信息。
model:为用户创建数据库提供模板。
msdb:代理调度警报作业、记录操作。
tempdb:临时表、临时数据库。
(2)不属于sql的表字段扩展阅读:
SQL注意事项:
1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
3、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4、应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
㈢ 在sql中怎么查询表中没有的字段
哎,上午都告诉你啦,用datediff
selectdatediff(year,出生日期,getdate())from表名
㈣ SQL中如何判断一个字符是否包含在表字段中,而不是包含在表记录中
Select
name
from
syscolumns
Where
ID=OBJECT_ID('表名')
这个可以查出你所查询的表的所有字段名字,如你所说你传入个3个话可以写
Select
name
from
syscolumns
Where
ID=OBJECT_ID('表名')
and
name
like
'%3%'
这样返回就是这个表的字段名包含3的字段了,在程序里你自己把这些个字段名取出来,拼成
字段1,字段2的格式,再放到你的查询语句去就是了~
㈤ 第五章 SQL定义表(一)
可以通过定义表(使用 CREATE TABLE )或通过定义投影到表的持久类来创建表:
由于以下原因,这两个名字之间的对应关系可能不相同:
表、视图或存储过程名称可以是限定的( schema.name ),也可以是限定的( name )。
模式名遵循标识符约定,需要特别注意非字母数字字符的使用。
模式名不应该指定为带分隔符的标识符。
尝试指定“USER”或任何其他SQL保留字作为模式名会导致 SQLCODE -312 错误。
INFORMATION_SCHEMA 模式名和相应的信息。
模式包名在所有命名空间中保留。
用户不应该在这个模式/包中创建表/类。
当执行一个创建操作(比如 create TABLE ),指定一个还不存在的模式时,InterSystems IRIS将创建新的模式。
InterSystems IRIS使用模式名生成相应的包名。
由于模式及其对应包的命名约定不同,用户应该注意非字母数字字符的名称转换注意事项。
这些名称转换的注意事项与表不同:
INFORMATION_SCHEMA 模式名和相应的信息。
模式包名在所有命名空间中保留。
用户不应该在这个模式/包中创建表/类
在所有名称空间中保留 IRIS_Shard 模式名。
用户不应在此模式中创建表、视图或过程。
存储在 IRIS_Shard 模式中的项不会通过编目查询或 INFORMATION_SCHEMA 查询显示。
初始设置是对所有名称空间(系统范围)使用相同的默认模式名。
可以为所有命名空间设置相同的默认模式名,也可以为当前命名空间设置默认模式名。
如果创建了一个具有非限定名称的表或其他项,InterSystems IRIS将为其分配默认模式名和相应的持久类包名。
如果一个命名的或默认的模式不存在,InterSystems IRIS将创建模式(和包),并将创建的项分配给该模式。
如果删除模式中的最后一项,InterSystems IRIS将删除该模式(和包)。
下面的模式名解析描述适用于表名、视图名和存储过程名。
系统范围的初始默认模式名是 SQLUser 。
对应的持久类包名是 User 。
因此,非限定表名 Employee 或限定表名 SQLUser 。
Employee 将生成类 User.Employee 。
因为 USER 是一个保留字,尝试用 USER 的模式名(或任何SQL保留字)指定限定名会导致 SQLCODE -1 错误。
要返回当前默认模式名,请调用 $SYSTEM.SQL.DefaultSchema() 方法:
或者使用以下预处理器宏:
可以使用以下任意一种方式更改默认模式名:
注意:当更改默认的SQL模式名称时,系统将自动清除系统上所有名称空间中的所有缓存查询。
通过更改默认模式名称,可以更改所有包含非限定表、视图或存储过程名称的查询的含义。
强烈建议在安装InterSystems IRIS时建立默认的SQL模式名,以后不要修改。
模式名用于生成相应的类包名。
因为这些名称有不同的命名约定,所以它们可能不相同。
可以通过将其设置为系统范围的默认模式来创建与SQL保留字同名的模式,但是不建议这样做。
名为 User 的默认模式根据类命名唯一性约定,生成相应的类包名称 User0 。
如果指定 _CURRENT_USER/name 作为默认模式名,其中name是选择的任意字符串,那么InterSystems IRIS将当前登录进程的用户名分配为默认模式名。
如果进程没有登录,则name将用作默认的模式名。
例如,如果进程没有登录, _CURRENT_USER/HMO 使用HMO作为默认模式名。
在 $SYSTEM.SQL.SetDefaultSchema() 中,指定 "_CURRENT_USER" 作为带引号的字符串。
当访问一个现有的表(或视图,或存储过程)进行DML操作时,将从模式搜索路径中提供一个非限定的名称。
按照指定的顺序搜索模式,并返回第一个匹配项。
如果在搜索路径中没有找到匹配的模式,或者没有搜索路径,则使用默认的模式名。
(注意, #Import 宏指令使用了不同的搜索策略,不会“失败”到默认的模式名。)
如果非限定名与模式搜索路径中指定的任何模式或默认模式名不匹配,则会发出 SQLCODE -30 错误,例如: SQLCODE: -30 消息: Table 'PEOPLE' not found in schemas: CUSTOMERS,EMPLOYEES,SQLUSER 。
当创建一个基于odbc的查询以通过Mac上的Microsoft query从Microsoft Excel运行时,如果从可用的表列表中选择一个表,则生成的查询不包括该表的模式(相当于类的包)。
例如,如果选择从示例模式返回 Person 表的所有行,则生成的查询为:
因为InterSystems IRIS将不限定的表名解释为 SQLUser 模式中的表名,所以该语句要么失败,要么从错误的表返回数据。
要纠正这一点,编辑查询(在SQL View选项卡上),显式引用所需的模式。
然后查询应该是:
INFORMATION.SCHEMA 。
SCHEMATA persistent 类列出当前名称空间中的所有模式。
下面的示例返回当前命名空间中的所有非系统模式名:
Management Portal SQL界面的左侧允许查看模式(或匹配筛选器模式的多个模式)的内容。
每个表在其模式中都有一个唯一的名称。
一个表有一个SQL表名和一个对应的持久化类名;
这些名称在允许的字符、区分大小写和最大长度方面有所不同。
如果使用SQL CREATE TABLE 命令定义,则指定遵循标识符约定的SQL表名;
系统生成一个对应的持久化类名。
如果定义为持久类定义,则必须指定只包含字母和数字字符的名称;
这个名称既用作区分大小写的持久类名,也用作(默认情况下)对应的不区分大小写的SQL表名。
可选的 SqlTableName class 关键字允许用户指定不同的SQL表名。
当使用 CREATE TABLE 命令创建表时,InterSystems IRIS使用表名生成相应的持久化类名。
由于表及其对应类的命名约定不同,用户应该注意非字母数字字符的名称转换:
同一个模式中的视图和表不能具有相同的名称。
尝试这样做会导致 SQLCODE -201 错误。
可以使用 $SYSTEM.SQL.TableExists() 方法确定一个表名是否已经存在。
可以使用 $SYSTEM.SQL.ViewExists() 方法确定视图名是否已经存在。
这些方法还返回与表或视图名称对应的类名。
管理门户SQL interface Catalog Details表信息选项显示与所选SQL表名称对应的类名。
试图指定 “USER” 或任何其他SQL保留字作为表名或模式名会导致 SQLCODE -312 错误。
要指定SQL保留字作为表名或模式名,可以指定名称作为带分隔符的标识符。
如果使用带分隔符的标识符指定包含非字母数字字符的表或模式名,InterSystems IRIS将在生成相应的类或包名时删除这些非字母数字字符。
适用以下表名长度限制:
在SQL中,每条记录都由一个唯一的整数值标识,这个整数值称为 RowID 。
在InterSystems SQL中,不需要指定 RowID 字段。
当创建表并指定所需的数据字段时,会自动创建RowID字段。
这个 RowID 在内部使用,但没有映射到类属性。
默认情况下,只有当持久化类被投影到SQL表时,它的存在才可见。
在这个投影表中,将出现一个额外的 RowID 字段。
默认情况下,这个字段被命名为 “ID” ,并分配给第1列。
默认情况下,当在表中填充数据时,InterSystems IRIS将从1开始向该字段分配连续的正整数。 RowID 数据类型为 BIGINT(%Library.BigInt) 。为 RowID 生成的值具有以下约束:每个值都是唯一的。不允许使用 NULL 值。排序规则是精确的。 默认情况下,值不可修改。
默认情况下,InterSystems IRIS将此字段命名为 “ ID” 。但是,此字段名称不是保留的。每次编译表时都会重新建立 RowID 字段名。如果用户定义了一个名为 “ ID” 的字段,则在编译表时,InterSystems IRIS会将 RowID 命名为 “ ID1” 。例如,如果用户随后使用 ALTER TABLE 定义了一个名为 “ ID1” 的字段,则表编译会将 RowID 重命名为 “ ID2” ,依此类推。在持久性类定义中,可以使用 SqlRowIdName 类关键字直接为此类投影到的表指定 RowID 字段名。由于这些原因,应避免按名称引用 RowID 字段。
InterSystems SQL提供了 %ID 伪列名称(别名),无论分配给 RowID 的字段名称如何,该伪列名称始终返回 RowID 值。 (InterSystems TSQL提供了 $IDENTITY 伪列名称,其作用相同。)
ALTER TABLE 无法修改或删除 RowID 字段定义。
将记录插入表中后,InterSystems IRIS将为每个记录分配一个整数ID值。 RowID 值始终递增。它们不被重用。因此,如果已插入和删除记录,则 RowID 值将按升序排列,但可能不连续。
可以通过设置 SetDDLUseSequence() 方法,将InterSystems IRIS配置为使用 $INCREMENT 执行 ID 分配。若要确定当前设置,请调用 $ SYSTEM.SQL.CurrentSettings() 方法。
在持久性类定义中, IdLocation 存储关键字global(例如,对于持久性类 Sample.Person:<IdLocation> ^ Sample.PersonD </ IdLocation> )包含RowID计数器的最高分配值。 (这是分配给记录的最高整数,而不是分配给进程的最高整数。)请注意,此RowID计数器值可能不再与现有记录相对应。要确定是否存在具有特定RowID值的记录,请调用表的 %ExistsId() 方法。
通过 TRUNCATE TABLE 命令重置 RowID 计数器。即使使用 DELETE 命令删除表中的所有行,也不会通过 DELETE 命令将其重置。如果没有数据插入表中,或者已使用 TRUNCATE TABLE 删除所有表数据,则 IdLocation 存储关键字全局值未定义。
默认情况下, RowID 值不可用户修改。尝试修改 RowID 值会产生 SQLCODE -107 错误。覆盖此默认值以允许修改 RowID 值可能会导致严重的后果,只有在非常特殊的情况下并应格外谨慎。 Config.SQL.AllowRowIDUpdate 属性允许 RowID 值是用户可修改的。
通过定义一个用于投影表的持久类,可以定义 RowID 以具有字段或字段组合中的值。为此,请使用 IdKey index 关键字指定一个索引。例如,一个表可以具有一个 RowID ,其 RowId 通过在 PatientName [IdKey] 上指定索引定义 IdxId 来与 PatientName 字段的值相同;或者可以通过指定索引定义 IdxId 来将 PatientName 和 SSN 字段的组合值在 (PatientName,SSN)[IdKey]; 上。
当 RowID 基于多个字段时, RowID 值是由 || 连接的每个组成字段的值。操作员。例如, Ross,Betsy || 123-45-6789 。 InterSystems IRIS尝试确定基于多个字段的 RowID 的最大长度。如果无法确定最大长度,则 RowID 长度默认为512。
用作外键引用的 RowID 必须是公共的。
默认情况下,不能将具有公共 RowID 的表用作源表或目标表,以使用 INSERT INTO Sample.DupTable SELECT * FROM Sample.SrcTable 将数据复制到重复表中。
可以使用Management Portal SQL界面“目录详细信息字段”列出“隐藏”列来显示 RowID 是否被隐藏。
可以使用以下程序返回指定字段(在此示例中为 ID )是否被隐藏:
㈥ 怎么判断textbox中的值是否属于sql表中的某个字段
你要找数据库某一字段名有没有这个值如下
首先连接数据库
打开连接
执行SQL语句
SQL
codeselect
'your
field'
from
'your
table'
where
'your
field'
=
textbox1.text
有返回值
则有这个值
,
否则没有这个值
你要找数据库有没有这个字段
,还是用我这个过程,SQL语句用楼上的
㈦ SQL server2005中哪些数据类型不能用作数据表中字段的数据类型啊
所有数据类型都能用作数据表中字段的数据类型。
数据类型是用一组属性描述其定义、标识、表示和允许值的数据单元,可以理解为数据的基本单元,将若干具有相关性的数据元按一定的次序组成一个整体结构即为数据模型。 在一定语境下,通常用于构建一个语义正确、独立且无歧义的特定概念语义的信息单元。
(7)不属于sql的表字段扩展阅读
数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型、数值类型以及日期类型等。数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源。
Sql Server 还能自动限制每个数据类型的取值范围,例如定义了一个类型为int的字段,如果插入数据时插入的值的大小在smallint或者tinyint范围之内, Sql Server会自动将类型转换为smallint或者tinyint。
这样一来,在存储数据时,占用的存储空间只有int的1/2或则1/4.Sql Server数据库管理系统中的数据类型可以分为两类,分别是:系统默认的数据类型和用户自定义的数据类型。
㈧ 不含某一字段的sql是什么,我现在表中有很多字段,但是我想输出中不含某一字段,该用什么sql语句
是不是这样的,
学生表中有'学号','姓名',‘成绩' 如果你不想输入成绩的话
你就 select 选择的时候,不选择成绩这段呗
如;select 学号,姓名 from student
㈨ 用SQL语句 查询某表一个字段,分别实现功能:等于、开始于、结束于、包含、存在、属于、不属于。
包含 select * from user where id='%352%';
存在 select * from user where exists (select * from list where user.id=list.id)
属于 select * from user where id in ('123','234');
不属于 select * from user where id not in ('123','234');
㈩ sql怎样查询到不包括某个字段的所有表名
SELECT table_name FROM all_col_comments WHERE column_name NOT LIKE '%A%';
你要的是不是这个
查询所有
不包括某个字段的所有表名