SQL Server 基础 05 多链表查询和子查询


 连接查询

值得注意的是:字段前必须加表名,以便混淆


1 -- 多表连接查询和子查询
2 select * from dbo.stu_info ,dbo.sname2
3 -- 加连接规则的查询 where
4 select * from dbo.stu_info ,dbo.sname2 where dbo.stu_info.sname= dbo.sname2.姓名

使用where前

使用where后

使用逻辑运算符 and


1 select dbo.stu_info.sno,dbo.stu_info.sname,dbo.stu_info.sex,dbo.stu_info.depart
2 ,dbo.sname2.score,dbo.sname2.姓名,dbo.sname2.sno
3 from dbo.stu_info,dbo.sname2
4 where dbo.stu_info.sname=‘张三‘
5 and dbo.stu_info.sno=dbo.sname2.sno
6 order by dbo.sname2.score desc

表别名简化语句


1 select A.sno,A.sname,A.sex,A.depart
2 ,B.score,B.姓名,B.sno
3 from dbo.stu_info as A,dbo.sname2 as B
4 where A.sname=‘张三‘
5 and A.sno=B.sno
6 order by B.score desc

多表连接查询

跟上面的相似,只是 from 后面多了n个表名 同时多了n-1 个  and  。。。

使用  inner join 连接查询

在where子句中表达式变的臃肿,为了变得清晰,让人理解,所以 ansi SQL 建议使用 inner join
进行多表连接

语法格式 :

select *
from 表名1

inner
join 表名2

on  连接规则1

inner
join 表名3

on  连接规则2

. . .
  . . .

inner
join 表名n

on  连接规则n-1

举例 :


1 -- 使用 inner join
2 select * from dbo.stu_info as A
3 inner join dbo.sname2 as B
4 on A.sno=B.sno
5 where A.depart=‘心理学‘
6 order by B.score desc

/**/  相比上面的 where + and 更简单

高级连接查询

// 这里只是粗略的概括下,来自 书本:《21 天学通SQL Server》  第11章
P226

1、自动连接查询

/**/

select 表名1.* from
表名1,表名2 where 表名1.字段=表名2.字段 and 表名2.字段=‘字段值’

2、内连接查询

等值连接  
 : 表名1.*=表名2.*

自然连接    :
select 后面不使用* ,而是字段名

不等值连接 : 由
>、>=、< 、<= 、<>  、between . . . 查询某些范围内的值

3、左外连接查询

语法    
    :select * from 表名1 left outer
join 表名2 on 表名1.字段=表名2.字段

4、右外连接查询

语法    
    :select * from 表名1 right outer
join 表名2 on 表名1.字段=表名2.字段

5、全外连接查询

语法    
    :select * from 表名1 full outer
join 表名2 on 表名1.字段=表名2.字段

6、交叉连接查询

语法    
    :select * from 表名1 cross
join 表名2

时间: 2024-10-12 19:43:32

SQL Server 基础 05 多链表查询和子查询的相关文章

数据库开发基础-SQl Server 主键、外键、子查询(嵌套查询)

主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值.由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列. 主键的作用 主键的主要作用如下: (1)保证实体的完整性: (2)加快数据库的操作速度: (3) 在表中添加新记录时,数据库会自

在 SQL Server 数据库的 WHERE 语句中使用子查询

这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Server Management Studio和AdventureWorks2012数据库的.读者可以阅读我的SQL Server使用入门学习使用这些免费的工具. 在WHERE语句中使用子查询 在WHERE语句中使用子查询是非常常见的.常见的用法是用EXISTS或IN测试存在性.在某些情况下重新考虑查询语

SQL Server的优化器会缓存标量子查询结果集吗

在这篇博客"ORACLE当中自定义函数性优化浅析"中,我们介绍了通过标量子查询缓存来优化函数性能: 标量子查询缓存(scalar subquery caching)会通过缓存结果减少SQL对函数(Function)的调用次数, ORACLE会在内存中构建一个哈希表来缓存标量子查询的结果. 那么SQL Server的优化器是否也会有类似这样的功能呢? 抱着这样的疑问,动手测试了一下,准备测试环境 CREATE TABLE TEST (    ID  INT );     DECLARE

SQL Server 基础 03 查询数据基础

查询数据 简单的查询 1 create table stu_info 2 ( 3 sno int not null 4 ,sname varchar(20) not null 5 ,sex varchar(2) not null 6 ,birth varchar(20) not null 7 ,email varchar(20) not null 8 ,telephone int not null 9 ,depart varchar(20) not null 10 ) 11 12 13 sele

SQL server基础知识(表操作、数据约束、多表链接查询)

SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database 数据库名称 查询:select name from master..sysdatabases 修改:alter database 数据库名称(在 sql server 中修改与数据库关联的文件和文件组.在数据库中添加或删除文件和文件组.更改数据库或其文件和文件组的属性) (3).管理表 选择数据库:use 数

SQL Server 基础 04 函数与分组查询数据

函数与分组查询数据 系统函数分 聚合函数.数据类型转换函数.日期函数.数学函数 . . . 1. 聚合函数 主要是对一组值进行计算,然后返回一个值. 聚合函数包括 sum(求和).avg(求平均值).min().max().count(求数量) sum函数语法  :  sum(列明) select sum(sno) as 序号和 from stu_info avg select avg(sno) as 序号平均值 from stu_info . . . count 用来一组值的个数,统计 sel

SQL Server基础

一.常用命令 1.使用命令行开启SQL Server服务 获取管理员权限的命令行工具: net start mssqlserver 开启sql server服务 net restart mssqlserver 重新启动sql server服务 net stop mssqlserver 关闭sql server服务 2.使用命令登陆(该方法可适用于在一台没有SQL Server的电脑去操作一台有SQL Server的电脑) 运行: sqpl ?/ [-S 服务器的名称]  [-U 登陆名] [-P

SQL Server基础知识

查看sql server版本 select @@VERSION 基本操作 use tty; 使用tty数据库 create table tt(name varchar(10)); 新建表tt insert into tt values('ftp'); 插入数据ftp select * from tt; 查看表tt delete from tt; 删除表表tt中的一条记录 运行命令的快捷方式: Alt+x 重启数据库服务 net restart mssqlserver 修改用户密码 企业管理器——

SQL编程之高级查询(子查询)以及注意事项

1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命令的WHERE子句中.子查询是一个 SELECT 语句,它嵌套在一个 SELECT.SELECT...INTO 语句.INSERT...INTO 语句.DELETE 语句.或 UPDATE 语句或嵌套在另一子查询中. 语法:select ....from  表1  where  列1  > (子查询) 外面的查询成为父查询,圆括号嵌入的查询成为称