2017-3-13 SQL server 表连接

表连接分为横向表连接和纵向表连接

横向表连接有三种方式:

1、select 列名,列名 from 表名,表名 where 表名.列名=表名.列名

select student.Sno,sname,cno,degree from Student,Score
where Student.Sno = Score.Sno

2、子查询方式

select sno,sname,(select cno from Score where Student.Sno=Score.Sno) from Student

3、select 列名,列名 from 表名 join 表名 on 表名.列名=表名.列名

select Student.Sno,sname,Score.Cno,DEGREE,cname
from Student join Score on Student.Sno=Score.Sno
join Course on Score.Cno = Course.cno

纵向表连接:(注:两个表必须是同样的列数,对应的列数据类型必须一致)

select  列名,列名 from 表名 union select  列名,列名 from 表名

select sno 编号,sname 姓名,ssex 性别,sbirthday 生日 from Student
union
select tno,tname,tsex,tbirthday from Teacher

--------------------------------------------------------------------------------------------------------------------------------------------

灵活用法

select Student.sno,sname+‘同学‘,cname,abs(degree+10)
from Student,Score,Course
where Student.Sno=Score.Sno and Score.Cno=Course.Cno
and student.Sno=‘107‘

时间: 2024-10-17 19:00:27

2017-3-13 SQL server 表连接的相关文章

sql server 表连接

数据库操作中,我们需要的结果可能在两张表甚至多张表中,这时候就需要表连接操作,多表查询中的各个表之间的字段会存在连接,比如主外键关联,可以使用主外键来关联每张表.表连接方式有以下几种: JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN(左连接): 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN(右连接): 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN(全连接): 只要其中一个表中存在匹配,就返回行 下面用两个表演示下上面4种连接方式,两表数据为:

sql server 表连接类型

Nested Loop,Hash Join,Merge Join对比 类别 Nested Loop Hash Join Merge Join 使用条件 任何条件 等值连接(=) 等值或非等值连接(>,<,=,>=,<=),‘<>’除外 相关资源 CPU.磁盘I/O 内存.临时空间 内存.临时空间 特点 当有高选择性索引或进行限制性搜索时效率比较高,能够快速返回第一次的搜索结果. 当缺乏索引或者索引条件模糊时,Hash Join比Nested Loop有效.通常比Merg

SQL Server表分区详解

原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理.这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的. 所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select效率,还可以对历史数据经行区分存档等.但是数据量少的数据就不要凑这个热

[转载]在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?

原来使用SQL Server 2000数据库,通过DTS工具很方便地在SQL Server和DBF文件之间进行数据的导入和导出,现在安装了SQL Server2005之后,发现其提供的“SQL Server导入导出向导”中的数据源没有原来的丰富,缺少对DBF文件的支持. 1.右击数据库,选择“任务”>“导入数据”,打开“SQL Server导入和导出向导”对话框.2.在“数据源”中选择Microsoft OLE DB Provider for Visual FoxPro,单击“属性”按钮,打开“

在与SQL Server建立连接时出现于网络相关的或特定于实例的错误

客户遇到一个问题,用“服务器名\实例名”远程连接另外一台命名实例的时候连接失败,报“在与SQL Server建立连接时出现于网络相关的或特定于实例的错误,未找到或无法访问服务器.请验证实例名称是否正确并且SQL Server已配置允许远程访问连接.(provider:SQL Network Interfaces,error:26-定位指定的服务器/实例时出错)”. 首先,尝试用ip和端口号进行连接,发现可以连接上,说明实例运行正常,并不是因为实例未开启导致无法连接,如果此连接失败,则需要检查实例

[转]如何将SQL Server表驻留内存和检测

注意这个功能在SQL2005后已经废弃,因为SQL2005会自动管理哪些表常驻内存. 将SQL Server数据表驻留内存是SQL Server提供的一项功能,在一般小型系统的开发过程中估计很少会涉及到.这里整理了相关文档资料,演示如何把SQL Server中一个表的所有数据都放入内存中,实现内存数据库,提高实时性. 1, DBCC PINTABLE Marks a table to be pinned, which means Microsoft SQL Server does not flu

SQL Server表分区【转】

转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理.这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的. 所以大数据量的数据表,对分区的需要还是必要的

在一个SQL Server表中的多个列找出最大值

在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..##TestTable') IS NOT NULL) DROP TABLE ##TestTable CREATE TABLE ##TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(40), UpdateByApp1Date DATE

与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。

今天同学请教我数据库为什么打不开了,打开SQL Server 2008 的 SQL Server Management Studio,输入sa的密码发现,无法登陆数据库?提示以下错误: "在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)": 他最近刚刚装过了