MSSQL 高级查询

连接类型:

有五种,CROSS JOIN 交叉连接,INNER JOIN 内连接,LEFT JOIN 或者 LEFT OUTER JOIN 左外连接,RIGHT JOIN 或RIGHT OUTER JOIN 右外连接,FULL JOIN 或FULL OUTER JOIN

1、交叉连接

两个表的交叉连接是两个表进行广义笛卡儿积运算。返回的结果数据的行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例如,在“图书”表中有8条记录,在出版社中有5条记录,那么使用交叉连接得到的记录是8*5行。在这类连接的结果集中,其连接只是单纯的广义笛卡尔运算,其结果会产生一些没有意义的元组。所以这类连接实际上很少使用。

2、内连接

内连接是指当且仅当连接条件成立时,才在结果集中产生一条连接记录。当左表中某记录根据连接条件在右表中没有匹配记录时,该记录便被忽略。一般分为等值连接、不等连接、自连接。

1)等值连接

等值连接是在连接条件中使用等于运算符,其查询结果中列出被连接表中的所有列,包括其中的重复列。在实际的使用中一般使用自然连接。自然连接就是在等值连接总把目标列中重复的列去掉。它通过在目标列中指定列的名称,在结果集中显示指定的列。

select * from t_userinfo inner join t_msg on t_userinfo.userid = t_msg.userid

2)不等连接

不等连接是在连接条件中使用除了等于运算符外的比较运算符,这些运算符包括>、>=、<=、<、!>、!<、<>等。

select * from t_userinfo inner join t_msg on t_userinfo.userid <> t_msg.userid

3)自连接

用户有时需要比较同一表中的两组信息才能获得所需的查询结果。SQL Server中提供了自连接来实现这种查询。所谓自连接就?是表通过与自身连接来获得该表中所需的属性列?。

select a.UserName, a.Password,a.UserID, a.Experience
from t_userinfo a inner join T_UserInfo b on a.UserID = b.UserID
group by a.UserName,a.Password,a.UserID,a.Experience

3、外连接

当至少有一个同属于两表的行符合连接条件时,内链接才返回行。内连接消除与另一个表中任何不匹配的行。如果要在结果集中包含在连接表中没有匹配的数据行,可以创建外连接。外连接会返回FROM子句中提到的至少一个表或视图的所有行,只要这些行符合任何WHERE或HAVING搜索条件。查询将通过左外连接引用左表的所有行,以及通过右外连接引用右外连接表中的所有行。完全连接中两个表所有行都将被返回。在进行一些统计时,常需要外连接。

select  * from t_userinfo a left join t_msg b on a.userid=b.userid
时间: 2024-09-08 05:10:39

MSSQL 高级查询的相关文章

数据库——基础(数据库操作,表格操作)——增加高级查询

笔记 LAMP:Linx(操作系统) A(阿帕奇)——网页的应用程序 M(Mysql):体积小,应用简单 P(PHP) 第一步:搭建网页环境——A\M\P WAMP:用WAMP搭建环境 DW:更好的显示 数据库的基本操作: 数据库——表结构——字段(列) 每一行数据成为一条数据(记录) 特点:关系型数据库,有严格的规范 1.必须有主键:能够唯一标识一条数据的字段 2 T-SQL:通用的数据库操作语句 自增长列code(主键列) ;连接键表 最后一个字段不加 ,#注释 创建表:create tab

MYSQL中的多类型查询及高级查询操作

离散查询select * from car where price=30 or price=40 or price=50 or price=60;select * from car where price in(30,40,50,60)取出数据select * from car where price not in(30,40,50,60)去掉数据 聚合函数(统计查询)select count(*) from carselect count(code) from car #取所有的数据条数sel

Linq高级查询与分页查询

Linq高级查询 以~开头: r=>r.Name.StartsWith("李"); 以~结尾: r=>r.Name.EndsWith("光"); 包含(模糊查询): r=>r.Name.Contains("四"); 数据总个数: Con.Goods.Count();||Con.Users.ToList().count; 最大值: Con.Goods.ToList().Max(r=>r.Price); 最小值: Con.Go

数据库的高级查询

高级查询 1.连接查询(对列的扩展) 第一种形式:select * from Info,Nation #会形成笛卡尔积select * from Info,Nation where Info.Nation = Nation.Code #加上筛选条件 select Info.Code,Info.Name,Sex,Nation.Name,Birthday from Info,Nation where Info.Nation = Nation.Code#查询指定列 select Info.Code a

数据库---查询语句(三):高级查询

高级查询 一.多表连接(连接的是两个表中的列) 1.select * from Info,Nation where Info.Nation=Nation.Code select  Info.Code,Info.Name,Nation.Name  from Info ,Nation where Info.Nation=Nation.Code    //where 后面是一个外键关系 select * from Info      出现的现象,形成的表叫做笛卡尔积 2. join 连接 select

mysql 高级查询

高级查询:1.连接查询select * from Info,Nation #这是两个表名,中间用逗号隔开形成笛卡尔积select * from Info,Nation where Info.nation=Nation.code select Info.code,Info.name,Info.sex,Nation.name as '民族',Info.birthday from Info,Nation where Info.nation=Nation.code select * from Info

关于EXT gridPanel进行高级查询时load提交后台乱码以及其他方式更新store的方法及遇到的问题

Ext.data.Store  加载数据的几个方法及注意的事项 下面为定义的Store var ds_edisCommonUser = new Ext.data.uStore({ storeId:'edisCommonUser', model:'Edis_CommonUser', pageSize:itemPerPage, autoLoad:false, proxy:{ type:'ajax', method:'POST', url:'EdisCommonUser/getUsers.action

数据库基础学习4--表格的 增 删 改 查(简单查询与高级查询)

一.增 C:create 增加,创建,向数据库里面添加数据. insert into Fruit values('K009','苹果',3.0,'高青',90,'') insert into Fruit(Ids,Name,Price,Source,Numbers) values('K010','苹果',3.0,'高青',90) 二.改 U:update修改,从数据库表里面修改数据. update Fruit set Source='烟台' where Ids='K001' 三.删 D:delet

SQL Server T-SQL高级查询(转)

高级查询在数据库中用得是最频繁的,也是应用最广泛的.   ? 基本常用查询   --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from student; --count 统计 select count(*) from student; select count(sex) from student; select count(di