设置关联的两表或者多表、通过外键关联、外键字段是从表中的字段、外键(foreign
key)字段需要在主表做主键(primary
key)、
比如
学生表(学号
主键,姓名)
主表
课程表(课号
主键,课名)
主表
选了表(学号
外键,
课号
外键,成绩)
从表
这样三个表就关联了、记住建表顺序、先主表、再从表
然后可以使用代码或者图形界面管理器创建外键、创建完就关联了
外键的取值必须是主键的值
select from 表1,表2,表3 where 表1字段=表2字段 and 表1字段=表3字段。
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
一、简介
(1)SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。
(2)1980年10月,经美国国家标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,国际标准化组织(ISO)也作出了同样的决定。
SQL从功能上可以分为数据定义、数据 *** 纵和数据控制。SQL的核心部分相当于关系代数,但又具有关系代数所没有的许多特点,如聚集、数据库更新等。它是一个综合的、通用的、功能极强的关系数据库语言。其特点是:
1、数据描述、 *** 纵、控制等功能一体化。
2、两种使用方式,统一的语法结构。SQL有两种使用方式。一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。
前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。
3、高度非过程化。SQL是一种第四代语言(4GL),用户只需要提出“干什么”,无须具体指明“怎么干”,像存取路径选择和具体处理 *** 作等均由系统自动完成。
4、语言简洁,易学易用。尽管SQL的功能很强,但语言十分简洁,核心功能只用了9个动词。SQL的语法接近英语口语,所以,用户很容易学习和使用。
二、功能
SQL具有数据定义、数据 *** 纵和数据控制。
1、SQL数据定义功能
能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式有叫做视图(View),全局模式简称模式( Schema),内模式由系统根据数据库模式自动实现,一般无需用户过问。
2、SQL数据 *** 纵功能
包括对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。
3、SQL的数据控制功能
主要是对用户的访问权限加以控制,以保证系统的安全性。
三、语句结构
结构化查询语言包含6个部分:
1、数据查询语言(DQL:Data Query Language)
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。
2、数据 *** 作语言(DML:Data Manipulation Language)
其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。
3、事务控制语言(TCL)
它的语句能确保被DML语句影响地表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
扩展资料:
SQL的语言特点
1、SQL风格统一
SQL可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据、建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列 *** 作,这就为数据库应用系统开发提供了良好的环境,在数据库投入运行后,还可根据需要随时逐步修改模式,且不影响数据库的运行,从而使系统具有良好的可扩充性。
2、高度非过程化
非关系数据模型的数据 *** 纵语言是面向过程的语言,用其完成用户请求时,必须指定存取路径。而用SQL进行数据 *** 作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的 *** 作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。
3、面向集合的 *** 作方式
SQL采用集合 *** 作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新 *** 作的对象也可以是元组的集合。
参考资料来源:百度百科-结构化查询语言
首先我们打开Access数据库后,建立两个数据表来作为举例。
建立好数据表以后,点击表可以看到两个表中包含不同的字段内容,如果我们要查询任何一个字段的记录内容,就要将两个表建立起关系,相互关联。
选中任何一个表,然后点击工具栏上的视图图标。
现在切换到设计界面,点击工具栏上的关系按钮,打开关系窗口。
在关系窗口的添加表中,依次选择要添加的表,然后点击添加按钮,将表添加到关系窗口中。添加好以后点击关闭,回到关系窗口。
鼠标点击其中一个表的主键字段,即没有重复值的唯一字段。按住鼠标不放,然后拖动到另一个表的相同字段松开,在d出的窗口中点击确定。
现在两个表已经建立了以上岗证号为关联的关系。以后可以通过查询来显示任何一个表中的符合条件的字段记录。
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 pid, purl, pdescription, GROUP_CONCAT(f`name`)
from tb_pic p, tb_pic_flag_link l, tb_flag f
where pid = lpic_id and lflag_id=fid and pid=1;
2、查询所有的描述
效果:
查询语句:
SELECT pid, purl, pdescription, GROUP_CONCAT(f`name`)
from tb_pic p, tb_pic_flag_link l, tb_flag f
where pid = lpic_id and lflag_id=fid GROUP BY pid;
关于反映这三张表中数据之间的联系,提供三方面信息以供参考:
1、表关系分析:学生表与课程表是多对多的关系,建立一张关联表也就是选课表来将学生表与程表产生关联。
2、数据库表分析:学生表包括学生相关信息,课程表包括课程相关信息,选课表放其他两张表的各一个字段(可以维护唯一性,比如说主键)。
3、实体分析:包含学生和课程两个实体,在每个实体中加入另外一个实体的集合。
建立5个表,前提是,歌手只与专辑有直接关系,与歌曲无直接关系。
首先是歌手的基本信息表,包括歌手的id,name等;专辑的基本信息表,包括专辑的id,name等信息;歌曲的基本信息表,包括歌曲id,name等信息。
然后建立歌手与专辑的关联表,以歌手id与专辑id为联合主键;
建立专辑与歌曲的关联表,以专辑id和歌曲id为联合主键。
问题里面说‘歌手 与专辑是 1:1’现实中歌手与专辑应该是1:n的关系,当然上述建表也是可以满足你的要求的。
但是“歌手与歌曲:1:1”这个条件是不是真的需要,若一个歌手出一张专辑,那么这个条件要求一个专辑里面只有一首歌,很明显不符合实际。
aid肯定显示多条啊,你只要a和b关联了,aid就是多条的,是按照b的条数来的,如果你想要直显示aid的不重复的,如下:
select distinct aid from a,b,c where aid = bid and bid = cid
或者 select distinct a from a,b,c where aid = bid and bid = cid
如果你想要用b,c表中的内容,比如你1对2,1对3,1对4,1为表中的,2,3,4为b或者c得都行的,那么你要指定是那条比如你要制定1对3,那么要在where后加上bid = 3,或者cid = 3,不然数据库无法判断你具体要c表中,或者b表中的哪条
---table1指的是第一张表,table2指的是第二张表,table3指的是第三张表,
select auid,auname,aupsw,aurealname,autel,aremark,brname,brremark,cdeptname,cdeptremark from table1 a,table2 b, table3 c where asems_role_rid=brid and audeptid=cdeptid
以上就是关于SQL数据库里面怎样设置表与表之间的关联全部的内容,包括:SQL数据库里面怎样设置表与表之间的关联、SQL里3个表的连接查询的语句怎么写呀、怎么建立这三个表的表间关系access2010等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)