㈠ sql 根据明细查询主表
请试一试下面的脚本:
selecta.id,a.group_namefrommaina
where
exists(
.main_id=a.id
anddetail.number=1andmal_name='猫'
)
andexists(
.main_id=a.id
anddetail.number=1andmal_name='狗'
)
如有疑问,及时沟通!
㈡ mysql 如何判断一个表是主表还是从表
--books表中有字段有bId,pId等字段。
--another有bId,pId等字段(create table another select bId,pid,bAuthor from books;--相关字段以及内容来自books表)。
--books和publising建立外键,参照publishing中的id字段。
alter table books add constraint FK_books_publishing foreign key (pid) references publishing (id) on update cascade;
--another和publishing之间创建外键,参照publishing中的id字段。
alter table another add constraint FK_another_publishing foreign key (pId) references publishing (id) on update cascade;
--举个简单的更新列子:
update publishing set id = 17,pname = '爱好者' where id='14';
--当执行这条语句时(更新publishing表),books表和another表同时进行更新。
--主表更新字段数据等,副表也随之更新,从上面可以看出,主表是publishing,副表是books和another。
--希望能帮到你
㈢ sql 什么是主从表
主表中有的从表中才可添加相关信息。
比如说有这样一个表
公司人员信息表
姓名 年龄 性别
张三 20 男
工资表
姓名 工资 工龄 奖金
其中工资表是公司人员信息表的从表帮定的是姓名字段,你想象下如果公司根本没这个人你能给这个人发工资吗,当然这个例子不太符合逻辑因为姓名是会相同的,你可以用工号来进行唯一性标示这样就不会有冗余信息了。
主从表是一种数据关系模型,主表约束从表。以学员信息表stuInfo和考试成绩表stuMarks为例, 我们知道它们是一对多的关系,当然一是主,多是从。所以stuInfo就是主表,stuMarks就是从表。那么,一般我们会在从表中做一个外键字段,引用主表中的主键。(为什么呢?大家想想是13亿人民记住主席的名字容易还是主席记住13亿人民名字呢?)这一点,已经在stuMarks表中得到了体现。那么,为了保持数据的完整性。主从表我们要尽量遵循以下原则:
1、当主表中没有对应的记录时,不能将记录添加到子表
——成绩表中不能出现在学员信息表中不存在的学号;
2、不能更改主表中的值而导致子表中的记录孤立
——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;
3、子表存在与主表对应的记录,不能从主表中删除该行
——不能把有成绩的学员删除了
4、删除主表前,先删子表
——先删学员成绩表、后删除学员信息表
㈣ sql 主从表查询
select * from A where exists (select 1 from B where Parentid=A.ID)
使用exists可以提高查询速度,不要用in来查询,in是要全表扫描的!
以上,希望对你有所帮助!
㈤ 如何看懂sql 系统表
Server数据库的一切信息都保存在它的系统表格里。我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格。但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器。你可以一个一个地检查表格,但是如果你有500个表格的话,这可能会消耗相当大的人工。
这就让sysobjects表格有了用武之地。虽然我不建议你更新这个表格,但是你当然有权对其进行审查。
在大多数情况下,对你最有用的两个列是sysobjects.name和sysobjects.xtype。前面一个用来列出待考察对象的名字,而后一个用来定义对象的类型,其代码如下:
C:检查约束。
D:默认的约束
F:外键约束
L:日志
P:存储过程
PK:主键约束
RF:复制过滤存储过程
S:系统表格
TR:触发器
U:用于表格。
UQ:独特的约束。
V:视图
X:被扩展的存储过程
在碰到触发器的情形下,用来识别触发器类型的其他三个列是:deltrig、instrig和uptrig。
你可以用下面的命令列出感兴趣的所有对象:
SELECT * FROM sysobjects WHERE xtype = <type of interest>
在特殊情况下,也就是在父表格拥有触发器的情况下,你可能想要用下面这样的代码查找数据库:
SELECT
Sys2.[name] TableName,
Sys1.[name] TriggerName,
CASE
WHEN Sys1.deltrig > 0 THEN'Delete'
WHEN Sys1.instrig > 0 THEN'Insert'
WHEN Sys1.updtrig > 0 THEN'Update'
END'TriggerType'
FROM
sysobjects Sys1 JOIN sysobjects Sys2 ON Sys1.parent_obj
= Sys2.[id]
WHERE Sys1.xtype='TR'
ORDERBY TableName
在SQL Server
2005里,首选的技术是使用系统视图。这种方式会把你的查询同微软选择对系统表格进行的任何改变隔绝开来。
下面是一个简单的例子,它使用了INFORMATION_SCHEMA_TABLES视图:
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
FROMINFORMATION_SCHEMA.TABLES
ORDERBY TABLE_SCHEMA, TABLE_NAME
对于AdventureWorks数据库或者任何你自己的数据库,使用这个查询可以产生一个表格快速列表。
为了说明这些架构查询的能力,看下面的语句,它们列出所选数据库里所有的函数和存储过程。
SELECT*FROMINFORMATION_SCHEMA.ROUTINES
ORDERBY ROUTINE_TYPE, ROUTINE_NAME
市面上有20种这样的信息架构视图。如果你需要将数据库归档,而且无法承担商业解决方案,例如Red
Gate或者Apex提供的方案的话,那么通过这些视图和一点点试验,你就可以让SQL Server给自己生成文档了。
介绍一下sql server数据库中的系统表sysobjects。在每个数据库中都存在此表。
sysobjects存放着数据库中的所有对象,如表,列,索引等等。
字段xtype代表对象类型,u代表用户表,p代表存储过程,tr代表触发器。
name字段表示对象名称。
以用友数据库为例
use ufdata_888_2004
查询数据库ufdata_888_2004的用户表
select * from sysobjects
where xtype = 'u' and name like 'fa_%'
order by name
查询数据库ufdata_888_2004的存储过程
select * from sysobjects
where xtype = 'p' and name like 'fa_%'
order by name
查询数据库ufdata_888_2004的触发器
select * from sysobjects
where xtype = 'tr' and name like 'sa_%'
order by name
介绍一下sql server数据库中的系统表:Syscolumns,在每个数据库中都存在此表。
name:名称
id:该列所属的表对象 ID,或与该参数关联的存储过程 ID
select * from Syscolumns
syscolumns和sysobjects连用:
select col.name,obj.name
from syscolumns col join sysobjects obj on col.id = obj.id
where obj.xtype = 'u' and obj.name like 'sa_%'
order by col.name
表syscolumns和systypes连用
select sysobjects.name,systypes.name from syscolumns inner join
systypes on syscolumns.type = systypes.type
inner join sysobjects on syscolumns.id = sysobjects.id
where systypes.name = 'datetime' and sysobjects.xtype = 'u' and
sysobjects.name like 'sa%'
作者:tshfang
来源: 泥胚文章写作 http://www.nipei.com 原文地址:
http://www.nipei.com/article/2181
㈥ plsql怎么看表结构
方式一:
按住ctrl键不放,鼠标左键点击表名称,即显示表的一切详细情况(表空间,表名称,索引,列,键,权限,触发器 ...)
㈦ 怎样用SQL语句查询一个数据库中的所有表
1、打开Microsoft SQL Server 2012,选中需要查询所有表的数据库。
㈧ SQL中有主外键的两表到底那这是主表
哪个是主表很重要么?如果两个表都有a_id 和 b_id,并且都是主键,那么就是互为主表。
以A为例,如果a.a_id是主键,那么就唯一不重复,a.b_id就是外键,关联B表(前提:b.b_id是主键)
互为外键的情况是很少的,因为这种情况几乎就是一一对应关系,范式上属于不合理结构
㈨ sql中多表联合查询怎么判断主表是那个
如果是用的join 或者 union 电话,最先写的是主表(即最左边的),
如果用的是嵌套方法的话,最外层的是主表,作为条件或者其他什么的是非主表,
一般情况下是将一个不为空的表作为主表,当然它要有你所要信息的主键,因为如果主表为空的话,再联合查询就会报错或者得到的信息不符合需求的,
㈩ sql 如何根据明细查询主表数据
SELECT * FROM 主表 a LEFT JOIN 子表 b ON a.主表ID=b.主表ID WHERE b.name LIKE '%乌龟%'