SQL语法 之 基本查询
一、语法结构
SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY broup_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_by_expression [ ASC | DESC ]
查询语句中的主要参数说明:
[1] select_list:查询的列或者表达式的列表,用逗号进行分隔。
[2] new_table: 新的表名。
[3] table_source:要查询的表。如果是多个表,用逗号进行分隔;或者用联接。
[4] search_condition:查询条件。
[5] group_by_expression:分组表达式。
[6] order_by_expression:排序表达式。
[7] ASC:升序排序。
[8] DESC:降序排序。
二、选择列表
选择列表用于定义select语句的结果集中的列
1、* 查询所有列:
SELECT * FROM person
* 就是结果集合,表示查询person表中的所有列。
2、distinct:去除重复数据
distinct是对所有列作用,也就是说,所有列都相同才算重复数据。
SELECT distinct name FROM person
3、可包含函数的查询,如下:
SELECT COUNT(*) FROM person
三、FROM 子句
FROM 子句实际上就是用逗号分隔的表名、视图名和 JOIN 子句的列表。使用 FROM 子句可以实现如下功能:
1、列出选择列表和where子句引用的列所在的表和视图。可以使用as子句为表和视图指定别名。
(1) 别名: 两种方式,如果为表分配了别名,那么T-SQL语句中对该表的所有显示引用都必须使用别名,而不能使用原名。
[1] 原名与别名之间加 AS 关键字;
[2] 原名与别名之间加空格;
2、联接类型。这些类型由on子句中指定的联接条件限定,着要分为内联接和外联接:
------------内联接-----------------
JOIN 等价于 INNER JOIN
------------外联接-----------------
LEFT JOIN 等价于 LEFT OUTER JOIN
RIGHT JOIN 等价于 RIGHT OUTER JOIN
FULL JOIN 等价于 FULL OUTER JOIN
四、WHERE 子句
可以 通过 where 子句筛选结果集的源表中的行。带有where子句的select语句的结构如下:
SELECT <字段列表> FROM <表名> WHERE <条件表达式>
条件表达式是由各种字段、常量、表达式、关系运算符、逻辑运算符和特殊的运算符组合起来的。
WHERE 子句中的运算符:
1、关系运算符
关系运算符用来表示两个表达式之间的比较关系。
[1] = :等于;
[2] < :小于;
[3] > :大于;
[4] != 或 <> :不等于;
[5] >= : 大于等于;
[6] <= : 小于等于;
[7] !> :不大于;
[8] !< : 不小于。
2、逻辑运算符
逻辑运算符用于表示两个表达式之间的逻辑关系:
[1] NOT : 非(否)
[2] AND : 与
[3] OR : 或
3、特殊运算符
[1] % :通配符,通常与like配合使用,可指代任意长度的字符串;
[2] _ : 通配符,代表严格的一个字符。where name like '_xxx'将查找以xxx结尾的所有4个字母的名字(sxxx,dxxx等)
[3] [] : 指定范围([a-f])或集合([abcdefg])中的任何单个字符。where name like '[a-f]xxxx',将超找以abcdef开头,xxxx结尾的字符。
[4] [^] : 不属于指定范围的([a-f])或集合([abcdefg])的任何单个字符。
[5] BETWEEN ... AND ... :定义一个取值范围区间,使用and分开。between开始值与and结束值。
[6] LIKE :字符串匹配。
[7] IN : 一个字段的值是否在一组定义的值之中。
[8] EXISTS:子查询有结果集返回(则子查询返回True)。
[9] NOT EXISTS:子查询没有结果集返回(则子查询返回True)。
[10] IS NULL : 字段是否为null。
[11] IS NOT NULL :字段是否不为null。
[12] ANY / SOME:ANY和SOME关键字是同义词,表示子查询结果集中任意一条记录满足条件,则返回TRUE。
[13] ALL:表示子查询结果集所有所有记录均满足条件,才返回TRUE。
在 WHERE子 句中使用EXISTS(如果使用得当的话)可以大大提高性能。因为使用EXISTS时,只要找到和条件匹配的记录,SQL Server就立即停止。假设有一个包含一百万条记录的表,并且在第三个记录中找到了匹配的记录,那么使用EXISTS选项将避免读取999997条记录!NOT EXISTS以同样的方式工作。
五、group by子句
六、HAVING 筛选查询
WHERE与HAVING的区别:
[1] WHERE(分组前过滤):WHERE不能对聚合函数列进行过滤,因为执行WHERE的时候,分组尚未执行,聚合函数也未执行。
[2] HAVING(分组后过滤):主要用于对聚合函数列进行过滤,因为 HAVING 子句是在分组之后执行的。HAVING子句只能配合GROUP BY子句使用。没有GROUP BY子句时不能使用HAVING。
使用WHERE与HAVING的示例:
七、ORDER BY子句
ORDER BY 子句用于指定结果集的排序。
order by子句的语法如下:
[ order by { order_by_expression [ asc | desc] } [ ,...n ] ]
参数说明如下:
[1] order_by_espression:指定要排序的列、列的别名、表达式或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。
[2] ASC:按递增顺序对指定列中的值进行排序。
[3] DESC:按递减顺序对指定列中的值进行排序。
八、INTO 查询
INTO 子句将查询结果生成新表,新表的结构由查询字段列表组成。也可以将查询的结果送入tempdb数据库的临时表中,这样关闭服务器之后临时表会自动删除。
into查询的语法结构:
SELECT <字段名列表>
[ into 新的数据表名 ]
FROM 数据库表名
[ where <条件表达式> ]
SQL语法 之 基本查询的更多相关文章
- Linq to SQL 语法整理(子查询 & in操作 & join )
子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c in ctx.Customers where (from o in ctx.Orders group o by ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- ORACLE分页查询SQL语法——最高效的分页
--1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ...
- Oracle实现分页查询的SQL语法汇总
1.无ORDER BY排序的写法.(效率最高) 经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然! sql语句如下: ) TABLE_ALIAS ; 2. ...
- ORACLE分页查询SQL语法——高效的分页
--1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ...
- 160321、ORACLE分页查询SQL语法——最高效的分页
--1:无ORDER BY排序的写法.(效率最高) --(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELE ...
- 高级数据查询SQL语法
接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL语法, ...
- SQL语法精讲(包括建库、建表、建视图、查询、增加、删除、)
SQL语法精讲(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELE ...
- SQL 语法总结
学了一个月的java,开始有入门的感觉.这段时间接触到了java的JDBC, 发现学习这部分的内容还是要有SQL的基础,于是花费了几天时间学习了一下SQL语法,并将其总结于下. 选择数据 SELECT ...
随机推荐
- 注入AspectJ切面
为什么要用AspectJ:AspectJ提供了Spring AOP很多不能实现的多种切点类型(比如属性,构造方法切入,由于不能实现构造方法的切入spring aop就不能实现对象创建过程的通知) As ...
- Python协程(上)
几个概念: event_loop 事件循环:程序开启一个无限的循环,程序员会把一些函数注册到事件循环上.当满足事件发生的时候,调用相应的协程函数. coroutine 协程:协程对象,指一个使用asy ...
- 什么是P问题、NP问题和NPC问题
为了迎接我的期末考试,认真的看了一下关于NP完全性理论这一章,奈何课本上说的我怎么都看不懂,所以找了个博客认真研究了一下,同样贴出来分享给大家,大牛就是大牛,把问题说的很明白,看完后受益匪浅.其中有一 ...
- wpf企业应用之UI模块解耦
关于UI模块的解耦,说简单点,首先需要配置菜单与对应操作类的映射关系(或存放于配置文件,或继承接口直接写死在模块代码中,或存放到数据库,原理都一样),然后在菜单加载时,读取配置项动态生成菜单或是其他控 ...
- Matrix-tree定理 spoj HIGH
Matrix-tree定理,给出一个无向图,问求出的生成树方案有多少种方案,利用Matrix-tree定理,主对角线第i行是i的度数,(i,j) 值为i和j之间边的数量,然后删去第一行第一列,利用初等 ...
- hihoCoder #1695 公平分队II
题目大意 Alice 和 Bob 在玩一个游戏.Alice 将 $1$ 到 $2n$ 这 $2n$ 个整数分成两组,每组 $n$ 个.Bob 从中选一组,剩下一组归 Alice.Alice 可以与 B ...
- svn 服务器搭建及使用 三
SVN服务器搭建和使用(三) 接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等. 添加文件 在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文 ...
- hashcode()与equals
http://blog.csdn.net/afgasdg/article/details/6889383 一.equals方法的作用 1.默认情况(没有覆盖equals方法)下equals方法都是调用 ...
- MAMP PRO 下安装 memcache
本人PHP用的是 5.5.10,编译 memcache 模块需要用到 php 源码,mamp 不自带,到 php 官网下一个 php-5.5.11.tar.gz, 解压后,生成 zend_config ...
- 【mybatis】在mybatis分页查询时,主表对关联表 一对多 分页查询怎么实现
现在有这样一个需求: 1.积分商品分页查询 2.一个积分商品会有多张商品图片在商品图片表 1:n的关系 这样在积分商品分页查询的时候,想要顺便把每个积分商品对应的商品图片信息也带出来 实现如下: 1 ...