sql server2008怎么实现查询某个数据库中所有的表名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server2008怎么实现查询某个数据库中所有的表名相关的知识,希望对你有一定的参考价值。
参考技术A 12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-- 名名称和字段名
SELECT
(case when a.colorder=1 then d.name else '' end) 表名,
a.colorder 字段序号,
a.name 字段名,
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in (SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in (SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in (SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND (xtype = 'PK')) > 0 then '√' else '' end) 主键,
b.name 类型,
a.length 占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,
(case when a.isnullable=1 then '√'else '' end) 允许空,
isnull(e.text,'') 默认值,
isnull(g.[value],'') AS 字段说明
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id AND a.colid = g.minor_id
order by a.id,a.colorder本回答被提问者采纳 参考技术B 你是要写代码生成器么?--这是查表的数量Select [name] from sysObjects Where xtype='U'and [name]<>'dtproperties' Order By [name]--得到数据库中所有用户视图Select [name] From sysObjects Where xtype='V' And [name]<>'syssegments' And [name]<>'sysconstraints' Order By [name]--获得指定表中所有的列Selectc.name As ColumnName,t.name As TypeNameFrom syscolumns c, systypes t, sysobjects oWhere c.xtype = t.xusertypeAnd c.id = o.idAnd o.name = 'Book'Order By c.colorder
SQL Server中三个表两两关联 怎么实现查询??急!!
现有一数据库,包含三张表,每表内容如下:
管理员表
用户名、密码、区域
学员表
姓名、性别、学员号、所在学校
校区表
所在学校、区域
问题如下:
我在管理员登陆页面设置账户名、密码输入,点击登录按钮能直接把管理员所在区域的学校的学员信息检索出来。即 我通过密码、用户名选出对应的区域,通过区域选出该区域下包括的所有学校,通过所在学校再筛选出学员表的全部信息。
三个表两两相互关联,怎么能直接管理员一成功登陆就直接能在GridView里显示学员信息。
希望大家帮帮忙啊 !!!!!
select a.*
from 学员表 a
inner join 校区表 b on a.所在学校=b.所在学校
inner join 管理员表 c on b.区域=c.区域
where c.用户名=@用户名 and c.密码=@密码
注意:最好把登陆和列表查询分开来做,因为无论是从安全还是程序实现的角度来看,都比较好。
扩展资料:
mysql三张表联合查询总结
一、表结构
1、图片表(存放图片)
CREATE TABLE `tb_pic` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长 id',
`url` varchar(255) DEFAULT NULL COMMENT '图片 url 路径',
`description` varchar(255) DEFAULT NULL COMMENT '图片描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='图片表';
2、标签表(存放标签)
CREATE TABLE `tb_flag` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长 id',
`name` varchar(255) DEFAULT NULL COMMENT '标签名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='标签表';
3、图片标签链接表(图片、标签中间表)
CREATE TABLE `tb_pic_flag_link` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长 id',
`pic_id` int(11) DEFAULT NULL COMMENT '图片 id',
`flag_id` int(11) DEFAULT NULL COMMENT '标签 id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='图片标签链接表';
二、实现的效果
1、查询单张图片的描述
效果:
查询语句:
SELECT p.id, p.url, p.description, GROUP_CONCAT(f.`name`)
from tb_pic p, tb_pic_flag_link l, tb_flag f
where p.id = l.pic_id and l.flag_id=f.id and p.id=1;
2、查询所有图片的描述
效果:
查询语句:
SELECT p.id, p.url, p.description, GROUP_CONCAT(f.`name`)
from tb_pic p, tb_pic_flag_link l, tb_flag f
where p.id = l.pic_id and l.flag_id=f.id GROUP BY p.id;
参考技术Aselect a.*
from 学员表 a
inner join 校区表 b on a.所在学校=b.所在学校
inner join 管理员表 c on b.区域=c.区域
where c.用户名=@用户名 and c.密码=@密码
扩展资料
在SQL Server中使用join on 【inner join on】关联多表查询
select cyb.id, xa.name
from GeneShop.dbo.t_member_cyb cyb
join GeneShop.dbo.xx_admin xa on xa.id = cyb.hzjg_id
join GeneShop.dbo.t_bg bg on bg.cyb_id = cyb.id
where (cyb.cybbm=402045 and bg.product_id = 121) or (cyb.cybbm=402070 and bg.product_id = 118)
具体情况若是判断逻辑关系是否正确可以使用如下代码:
Select dbo.usersinfo.usercode,dbo.ryqxb.usercode,dbo.ryqxb.reportto,b.ename
FROM DBO.UsersInfo,DBO.UsersInfo B,dbo.RYQXB
where DBO.UsersInfo.UserCode=dbo.RYQXB.Usercode AND
dbo.RYQXB.REPORTTO=B.Ename
参考资料来源:百度百科 - SQL JOIN
参考技术B如,现在有以下三张表:
管理员表:
用户名、密码、区域
学员表:
姓名、性别、学员号、所在学校
校区表:
所在学校、区域
现在要查询一条完整的信息,可以用这种方法写sql语句:
select * from 管理员表 a,学员表 b,校区表 c where a.区域=c.区域 and b.所在学校=c.所在学校;注意:可以把*替换成自己想查的表的字段,但必须带上前缀,比如要查管理员表中的用户名,可以写做a.用户名。
登陆后,用session存储区域信息,然后像以下查询
select 学员表.* from 学员表,校区表 where 学员表.所在校区 = 校区表.所在校区
当然,你非要直接做也行
select 学员表.* from 学员表,校区表,管理员表 where 学员表.所在校区=校区表.所在校区 and 校区表.区域 = 管理员表.区域 where 用户名 = ? and 密码 = ?
如果你是这样写的话,建议做一下安全性校验,不然,很容易被注入攻击追问
我想的不同区域的管理员只能看到本区域学员的信息 这样不是更安全么
追答一样的啊..只要你控制好就行..现在没有人登陆和查询一起做的..都是登陆先单独校验权限,校验完权限再做其他操作~
参考技术D select a.*from 学员表 a
inner join 校区表 b on a.所在学校=b.所在学校
inner join 管理员表 c on b.区域=c.区域
where c.用户名=@用户名 and c.密码=@密码本回答被提问者采纳
以上是关于sql server2008怎么实现查询某个数据库中所有的表名的主要内容,如果未能解决你的问题,请参考以下文章
怎么在SQL SERVER 2008数据库中,将某一列字段中的某个值替换为其他的值
sqlserver2008如何实现 跨数据库 复制,查询? 跨数据库查询用 jpa 怎么实现? 求高手赐教?