请问高手:如何用SQL语句获得数据表中所有关键字段的名称?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问高手:如何用SQL语句获得数据表中所有关键字段的名称?相关的知识,希望对你有一定的参考价值。
我使用的是Delphi5.在Delphi自带的SQLExplore
使用
SQL语句"select
*
from
syscolumns
"这条简单的语句的.如果创建数据库别名时数据库类型用MSSQL,即通过Micrsosoft
SQL
Server
2000与数据库连接,这时使用SQL语句"select
*
from
syscolumns
"返回的结果中包括"name"字段;如果创建数据库别名时数据库类型用SQL
Server,即通过ODBC数据源与数据库连接,这时使用SQL语句"select
*
from
syscolumns
"返回的结果中就不包括"name"字段,好像返回的记录数倒是相同.你们说奇不奇怪?用'sp_pkeys
tablename'也出现类似的现象:无'COLUMN_NAME'字段!与本地数据库连接,结果也是如此!不信吗?我试过好几台机子!!!
我之所以测试用ODBC与异地数据库进行连接是由于ODBC驱动程序是windows(Win2000)系统自带的,不需要额外再用专门的Micrsosoft
SQL
Server!请楼上的各位兄弟帮忙解决! 参考技术A select
syscolumns.name
from
syscolumns
left
join
sysobjects
on
syscolumns.id=sysobjects.idleft
join
sysindexkeys
on
syscolumns.colid=sysindexkeys.colid
and
sysobjects.id=sysindexkeys.idwhere
sysindexkeys.indid=1
and
sysobjects.name='你的表名'PS;你提到的ODBC问题我不清楚怎么回事,但应该不会存在这样的问题,你重新建ODBC看看,或者更新ODBC驱动,在SQL里上面的语句可以找到一个表中的关键字段 参考技术B var
ts:Tstrings;
i:integer;begin
ts:=Tstringlist.Create;
//adoconnection1.GetTableNames(ts,false);
//for
i:=0
to
ts.Count-1
do
//
showmessage('第'+inttostr(i+1)+'个表名是'+ts.Strings[i]);
adoconnection1.GetFieldNames('stu',ts);
for
i:=0
to
ts.Count-1
do
showmessage('第'+inttostr(i+1)+'个字段名是'+ts.Strings[i]);end;
//注:用session控件也可以完成以上的功能 参考技术C 到syscolumns找一下是主键的,看一下与别的字段有什么不同,然后以这个为条件来select 参考技术D 请教高手:如何用SQL语句获得数据表中所有关键字段的名称?
如何用SQL语句将数据库中的表的某一时间型字段的默认值设置为当前日期
1、如果是创建新表格,创建的SQL语句添加:datetime default getdate() ,即新增行,默认当前日期。
比如:
CREATE TABLE a2(bh int IDENTITY NOT NULL,
rq datetime default getdate() ,
CONSTRAINT p_a2 PRIMARY KEY NONCLUSTERED (bh)) ;
2、如果是已创建的表格datetime字段,insert into语句中直接赋值getdate()。
比如:
insert into 表格名 (rq) values (getdate()); 参考技术A 假设表名为aaa,字段名为dt,语句为:ALTER TABLE aaa ADD CONSTRAINT
DF_aaa_dt DEFAULT getdate() FOR dt
这样aaa的dt字段默认值就是当前系统日期了 参考技术B 设为getdate()即可。 参考技术C update 表名 set 字段名 = getdate() 参考技术D 默认值设为getdate()本回答被提问者和网友采纳
以上是关于请问高手:如何用SQL语句获得数据表中所有关键字段的名称?的主要内容,如果未能解决你的问题,请参考以下文章
oracle数据库如何用update批量更新某列数据中的字段