select *(列名) from table_name(表名) where column_name operator value 。

select * from stock_information where stockid = str(nid)

sql中的通配符:

通配符 描述
% 匹配零个及多个任意字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符

[^charlist]  或者       [!charlist]

不在字符列中的任何单一字符

只能在使用 like 关键字的中使用通配符

例子:

原始的表 (用在例子中的):

Persons 表:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

从上面的 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人:

SELECT * FROM Persons WHERE City LIKE 'Ne%'  

结果集:

Id LastName FirstName Address City
2 Bush George Fifth Avenue New York

例子 2 我们希望从 "Persons" 表中选取居住在包含 "lond" 的城市里的人:

SELECT * FROM Persons WHERE City LIKE '%lond%'

结果集:

Id LastName FirstName Address City
1 Adams John Oxford Street London

 使用 _ 通配符

例子 1  :我们希望从上面的 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人:

SELECT * FROM Persons WHERE FirstName LIKE '_eorge'

结果集:

Id LastName FirstName Address City
2 Bush George Fifth Avenue New York

例子 2 ,我们希望从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er":

SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'

结果集:

Id LastName FirstName Address City
3 Carter Thomas Changan Street Beijing

使用 [charlist] 通配符

我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[ALN]%'

结果集:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York

例子 2  我们希望从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[!ALN]%'  或者  [^ALN]

结果集:

Id LastName FirstName Address City
3 Carter Thomas Changan Street Beijing

  order by stockid desc(asc) --------- 排序, desc-降序, asc-升序
  order by 1,2 --------- by 列号
  stockname = (select stockname from stock_information where stockid = 4)  子查询:除非能确保内层 select 只返回一个行的值, 否则应在外层 where 子句中用一个 in 限定符
  select distinct column_name form table_name --------- distinct 指定检索独有的列值, 不重复查询

select stockname , count(*)  as "number"  from table_name group by stockname     --------- group by 将表按行分组,指定列中有相同的值

,Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。

having count(*) = 2 --------- having 选定指定的组

例子:   比如有如下数据集,其中水果名称(FruitName)和出产国家(ProductPlace)为联合主键:

FruitName ProductPlace Price
apple China 5
apple Japan 8
apple USA 4
Orange China 6
Banana China 12
Orange USA 8
     

如果我们想知道每个国家有多少种水果,那么我们可以通过如下SQL语句来完成:

SELECT  COUNT(*)  AS "水果种类" , ProductPlace  AS "出产国"  FROM  table  GROUP  BY  ProductPlace
  这个SQL语句就是使用了Group By + 分组字段的方式,那么这句SQL语句就可以解释成“我按照出产国家(ProductPlace)将数据集进行分组,然后分别按照各个组来统计各自的记录数量。”

值得注意的是结果集中有两个返回字段,一个是ProductPlace(出产国), 一个是水果种类。

如果我们这里水果种类不是用Count(*),而是类似如下写法的话:

SELECT  FruitName,ProductPlace  FROM table  GROUP  BY  ProductPlace

那么SQL在执行此语句的时候会报如下的类似错误:  选择列表中的列'T_TEST_FRUITINFO.FruitName'无效,因为该列没有包含在聚合函数或GROUPBY子句中。

这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。 将Group By操作想象成如下的一个过程,首先系统根据SELECT 语句得到一个结果集,如最开始的那个水果、出产国家、单价的一个详细表。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了。

常见的聚合函数如下表:

函数 作用 支持性
sum(列名) 求和     
max(列名) 最大值     
min(列名) 最小值     
avg(列名) 平均值     
first(列名) 第一条记录 仅Access支持
last(列名) 最后一条记录 仅Access支持
count(列名) 统计记录数 注意和count(*)的区别

Group By All [expressions] :

Group By All + 分组字段, 这个和前面提到的Group By [Expressions]的形式多了一个关键字ALL。这个关键字只有在使用了where语句的,且where条件筛选掉了一些组的情况才可以看出效果。

如果使用ALL关键字,那么查询结果将包括由GROUP BY子句产生的所有组,即使某些组没有符合搜索条件的行。没有ALL关键字,包含GROUPBY子句的SELECT语句将不显示没有符合条件的行的组。

首先我们不使用带ALL关键字的Group By语句:

SELECT COUNT(*) AS 水果种类, ProductPlace AS 出产国 FROM t WHERE(ProductPlace<>'Japan') GROUP BY ProductPlace

那么在最后结果中由于Japan不符合where语句,所以分组结果中将不会出现Japan。

现在我们加入ALL关键字:

SELECT COUNT(*) AS 水果种类, ProductPlace AS 出产国 FROM t WHERE(ProductPlace<>'Japan') GROUP BY ALL ProductPlace

重新运行后,我们可以看到Japan的分组,但是对应的“水果种类”不会进行真正的统计,聚合函数会根据返回值的类型用默认值0或者NULL来代替聚合函数的返回值。

GROUP BY [Expressions] WITH CUBE | ROLLUP:

这个暂时没看,不过想看的话 可以看看这两个,两位都做了总结:  http://www.cnblogs.com/glaivelee/archive/2010/11/19/1881381.html       http://blog.csdn.net/dreamwbt/article/details/53437118

Group By 和 Having, Where ,Order by语句的执行顺序:

当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
--执行where子句查找符合条件的数据;
--使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
--having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
--having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
--having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。

--然后按照Order By语句对视图进行排序,这样最终的结果就产生了。只有在Order By语句中才可以使用最终视图的列名

SELECT FruitName, ProductPlace, Price, ID AS IDE, Discount FROM table WHERE(ProductPlace='china') ORDER BY IDE

这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。

8、Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

示例8

select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18

示例9:Having和Where的联合使用方法

select 类别, SUM(数量)from A
where 数量 gt;8
group by 类别
having SUM(数量) gt; 10

转载于:https://www.cnblogs.com/a-lonely-wolf/p/6442146.html

sql的 select相关推荐

  1. SQL update select语句

    SQL update select语句 最常用的update语法是: UPDATE <table_name> SET <column_name1> = <value> ...

  2. c# 经验谈:巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)...

    我们在项目经常会碰到一些特殊需求 例如下拉框是复选的,查询条件是根据下拉框中复选项进行拼接 看到此图后大家肯定会说,这很简单嘛 将所有的选项 拼成"'1-3','5-9'"  然后 ...

  3. SQL update select结合语句详解及应用

    SQL update select语句 最常用的update语法是: 1 2 UPDATETABLE_NAME SET column_name1 =VALUE WHRER column_name2 = ...

  4. SQL语句 SELECT LIKE用法详解

    在SQL结构化查询语言中,LIKE语句有着至关重要的作用. LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用 ...

  5. MongoDB的查询语法和SQL的SELECT语法做对比

    2019独角兽企业重金招聘Python工程师标准>>> 对 数据库的查询是相当频繁的,而且很多特殊的需求我们都可以通过SQL查询语句构造出来.那么我们平时习惯的SELECT语法实现的 ...

  6. 了解SQL Server SELECT INTO语句

    Hey, readers! Hope you all are well. In the series of SQL SERVER, today we will be having a look at ...

  7. SQL的select 语句的执行顺序

    SQL的select 语句的执行顺序 标准SQL的解析顺序为: (1)from 子句, 组装来自不同数据源的数据 (2)where子句, 基于指定的条件对记录进行筛选 (3)group by 子句, ...

  8. 数据库实验4 SQL语言-SELECT查询操作

    数据库实验4 SQL语言-SELECT查询操作 1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据: 创建数据库jxgl: create database jxgl; 创建相应的表: ...

  9. 实验二 SQL 语言——SELECT 查询操作(第一部分)

    SQL 语言--SELECT 查询操作 实验目的: -了解查询的概念和方法:-掌握 SQL Server 集成管理器查询子窗口中执行 SELECT 操作的方法:-掌握 SELECT 语句在单表查询中的 ...

  10. 第七十一章 SQL命令 SELECT(三)

    文章目录 第七十一章 SQL命令 SELECT(三) 列别名 字段列别名 Non-Field列别名 FROM子句 表的别名 Sharding Transparent to SELECT Queries ...

最新文章

  1. postman自动打开_postman第1讲-开篇:介绍与安装
  2. 先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)
  3. mysql重装要删注册表_Mysql重装问题—删除注册表
  4. nyoj68三点顺序
  5. 超长数列中n个整数排序C++代码实现
  6. 847. Shortest Path Visiting All Nodes(二)
  7. BigInteger详解
  8. Go语言的map以及sort
  9. 【物理】概念的理解 —— 蒸馏、萃取
  10. 2019年贝莱德13亿美元收购另类投资服务商eFront
  11. Python模块安装:Python3安装pdfminer3k
  12. keystore签名文件与platform.pk8、platform.x509.pem之间的相互转换
  13. js实现实时的时间显示
  14. html打印去掉页码和日期,PPT打印讲义时如何去掉日期页码?
  15. 【美赛】全面助力2023年美国大学生数学建模竞赛,祝大家取得好成绩
  16. iOS经典讲解之播放本地音频文件
  17. mariadb审计插件
  18. java判断是否微信浏览器_Java判断浏览器是微信还是支付宝
  19. 亚马逊云科技平台上的无服务器 WebSocket
  20. mysql级联删除_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目

热门文章

  1. github开源库(三)
  2. Flutter AnimatedAlign 使用解析
  3. Android自定义View 开发流程综合简述 Android自定义View(三)
  4. Ubuntu使用——11(thinkPHP 5在Ubuntu上学习总结)
  5. 01c-1: 主流长远
  6. 世界上任何一件事的五个模块
  7. 一个http请求完整过程的个人理解
  8. day4作业(基本运算流程if for)
  9. 将一个包含汉字的字符串逐个转化为数字,并得出该字符串的十进制和
  10. Python 爬虫-BeautifulSoup