1.单表查询:

1.1选中表中若干列:

SELECT子句的<目标列表达式>可以是表中属性列,也可以是表达式,还可以是字符常量。

  SELECT Sname,'year of birth:',2014-Sage FROM student;

1.2选定表中若干行:

1.去掉重复行:

  想要去除查询结果中重复的行,可以使用DISTINCT,没有DISTINCT,则默认为ALL,即保留重复。

    SELECT DISTINCT Sno FROM SC;

2.查询满足条件的元组:

a.比较大小

  SELECT Sname FROM Student WHERE Sdept='CS';

  SELECT Sname,Sage FROM Student WHERE Sage<20;

b.确定范围:

  使用谓词BETWEEN……AND……和NOE BETWEEN……AND……查询属性值在(或不在)指定范围的元组

  SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23;

  SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23;

  c.确定集合:

    谓词IN可以用来属性值属于指定集合的元组。

    SELECT Sname,Ssex FROM Student WHERE Sdept IN ('CS','BS','AS');

    SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN ('CS','BS','AS');

  d.字符串匹配:

    谓词LIKE可以用于字符串匹配

    一般语法格式:[NOT] LIKE '<匹配串>' [ESCAPE'<换码字符>']

    通配符:

      %(百分号):表示任意长度(可为0)的字符串

      _(下划线):表示任意单个字符

    如果用户要查询的字符串中本身就含有%或_,这时就要用ESCAPE'<换码字符>'对通配符转义。

    SELECT Cno,Ccredit FROM Course WHERE Cname LIKE 'DB\_Design' ESCAPE'\' ;

    自己在mysql上亲测,貌似不能用ESCAPE。

  e.涉及空值的查询:

    SELECT Sno,Cno FROM SC WHERE Grade IS NULL;

    SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;  

  f.多重条件查询:

    逻辑运算符AND和OR可用来连接多个查询条件。AND优先级高于OR,可用括号改变优先级。  

    谓词IN是多个OR运算符的缩写。

    SELECT Sname,Ssex FROM Student WHERE Sdept='CS' AND Sage<20;

3.ORDER BY子句

  用户可用 ORDER BY 子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排序,默认值为升序。对于空值的处理,根据系统而定。

  SELECT * FROM Student ORDER BY Sdept,Sage DESC;

4.聚集函数:

  COUNT(*)

  COUNT([DISTINCT|ALL] <列名>)

  SUM([DISTINCT|ALL] <列名>)

  AVG([DISTINCT|ALL] <列名>)

  MAX([DISTINCT|ALL] <列名>)  

  MIN([DISTINCT|ALL] <列名>)

  

  SELECT COUNT(*) FROM Student;

  SELECT COUNT(DISTINCT Sno) FROM SC;

  当聚集函数遇到空值时,除COUNT(*)外,都跳过空值只处理非空值。

  注:WHERE子句中是不能用聚集函数作为条件表达式的。聚集函数只能用于SELECT子句和GROUP BY中的HAVING子句。

5.GROUP BY

GROUP BY 子句将查询结果按某一列或多列的值分组,值相等的为一组。

对查询结果分组的目的是为了细化聚集函数的作用对象。如果未对查询结果分组,聚集函数将作用于整个查询结果。分组后聚集函数将作用于每一组,即每一组都有一个函数值。

SELECT COUNT(Sno) FROM student GROUP BY Sdept;

如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING短语指定筛选条件。

SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)>=2;

先用 GROUP BY 子句按Sno进行分组,再用聚集函数COUNT对每一组进行计数;HAVING短语给出了选择组的条件,只用满足条件才会被选择出来。

注:WHERE子句和HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。 HAVING短语作用于组,从中选择满足条件的组。

  WHERE子句中不能使用聚集函数作为条件表达式。

SELECT Sno FROM SC GROUP BY Sno HAVING AVG(Grade)>=80;

mysql_数据查询_单表查询的更多相关文章

  1. SQL基本查询_单表查询(实验二)

    SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...

  2. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  3. MySQL简单查询和单表查询

    MySQL记录操作 概览 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用 ...

  4. SQL基本查询_多表查询(实验三)

    SQL基本查询_多表查询(实验三) 题目要求(一) 针对emp.dept两表完成如下查询,并验证查询结果的正确性 使用显式内连接查询所有员工的信息,显示其编号.姓名.薪水.入职日期及部门名称: 使用隐 ...

  5. SQL基础--查询之一--单表查询

    SQL基础--查询之一--单表查询

  6. MySQL数据查询之单表查询

    单表查询 简单查询 - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMEN ...

  7. 查询数据SELECT 之单表查询

    一.单表查询的语法与关键字的执行优先级""" # 单表查询# 单标查询完整与法:# select distinct(关键字,代表查询的意思,后面跟)字段1,字段2...( ...

  8. SQL数据查询之——单表查询

    一.SQL数据查询的一般格式 数据查询是数据库的核心操作.SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT [ALL | DISTINCT]<目标列表达式>[,< ...

  9. (七)MySQL数据操作DQL:单表查询1

    (1)单表查询 1)环境准备 mysql> CREATE TABLE company.employee5( id int primary key AUTO_INCREMENT not null, ...

随机推荐

  1. SiteMesh2-decorators.xml文件

    SiteMesh默认使用decorators.xml作为装饰配置文件. decorators.xml顶层元素概览如下: <decorators> <decorator/> &l ...

  2. 利用scons构建project

    scons有非常多相对于make构建系统的优秀特性,可是因为发展时间比較短如今的应用范围还是不太多,可以找到的资料也不是非常多. scons如今一大问题就是初始上手还是有点难度的,对于有python的 ...

  3. FFmpeg总结(三)AV系列结构体之AVCodecContext

    位置: 描写叙述:主要扩展API的结构体 New fields can be added to the end with minor version bumps. Removal, reorderin ...

  4. 负载均衡算法,轮询方式 大话设计模式之工厂模式 C#

    负载均衡算法,轮询方式 2018-04-13 17:37 by 天才卧龙, 13 阅读, 0 评论, 收藏, 编辑 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现 ...

  5. 小胖说事22-----iOS开发技巧之取消键盘响应和截屏功能

    1.UILable内容模糊 在非Retina的iPad mini 的屏幕上,一个UILable的frame的origin值假设是有小数位(如0.5),就会造成显示模糊,所以不妨用整数值的origin. ...

  6. 如何用分布式缓存服务实现Redis内存优化

    Redis是一种支持Key-Value等多种数据结构的存储系统,其数据特性是“ALL IN MEMORY”,因此优化内存十分重要.在对Redis进行内存优化时,先要掌握Redis内存存储的特性比如字符 ...

  7. 具体解释kernel中watchdog 驱动程序

    watchdog不管在小系统还是大的project系统中都是必须存在的.在解决线程挂死.系统死循环等都用非常重要的应用,算是系统出问题恢复初始状态的救命稻草. 在kernel中wdt的应用不是非经常见 ...

  8. keepalived+nginx安装配置

    软件版本号: pcre8.36 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz keepalived1.2 ...

  9. BZOJ 2338 HNOI2011 数矩形 计算几何

    题目大意:给定n个点,求一个最大的矩形,该矩形的四个顶点在给定的点上 找矩形的方法是记录全部线段 若两条线段长度相等且中点重合 这两条线段就能够成为矩形的对角线 于是我们找到全部n*(n-1)/2条线 ...

  10. bzoj1977 [BeiJing2010组队]次小生成树 Tree——严格次小生成树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1977 因为严格,所以要记录到 LCA 的一个次小值: 很快写好,然后改掉一堆错误后终于过了样 ...