mysql_数据查询_单表查询
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_数据查询_单表查询的更多相关文章
- SQL基本查询_单表查询(实验二)
SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- MySQL简单查询和单表查询
MySQL记录操作 概览 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用 ...
- SQL基本查询_多表查询(实验三)
SQL基本查询_多表查询(实验三) 题目要求(一) 针对emp.dept两表完成如下查询,并验证查询结果的正确性 使用显式内连接查询所有员工的信息,显示其编号.姓名.薪水.入职日期及部门名称: 使用隐 ...
- SQL基础--查询之一--单表查询
SQL基础--查询之一--单表查询
- MySQL数据查询之单表查询
单表查询 简单查询 - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMEN ...
- 查询数据SELECT 之单表查询
一.单表查询的语法与关键字的执行优先级""" # 单表查询# 单标查询完整与法:# select distinct(关键字,代表查询的意思,后面跟)字段1,字段2...( ...
- SQL数据查询之——单表查询
一.SQL数据查询的一般格式 数据查询是数据库的核心操作.SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT [ALL | DISTINCT]<目标列表达式>[,< ...
- (七)MySQL数据操作DQL:单表查询1
(1)单表查询 1)环境准备 mysql> CREATE TABLE company.employee5( id int primary key AUTO_INCREMENT not null, ...
随机推荐
- jq 笔记
http://bbs.miaov.com/forum.php?mod=forumdisplay&fid=40 2014.10.10jquery 2.0 不兼容ie 6 7 8,以上更适合做移动 ...
- Linux ANSI 乱码问题
原帖http://blog.chinaunix.net/u/24624/showart_184609.html Windows 到 linux 解决samba-3.x客户端中文乱码问题 dos cha ...
- stl空间配置器alloc
new运算包含两阶段操作: 1) 调用::operator new分配内存 2) 调用构造函数构造对象内容 delete运算包含两阶段操作: 1)调用析构函数将对象析构 2)调用::op ...
- 架构师速成6.7-设计开发思路-uml
uml是什么东西?统一建模语言.一门语言.是用来进行软件设计的一门语言. 事实上一门语言的诞生并不伟大,让大多数人都使用才足够伟大. uml就是一门伟大的语言.由于眼下软件设计的唯一语言就是它. UM ...
- C#反射发出System.Reflection.Emit学习
一.System.Reflection.Emit概述 Emit,可以称为发出或者产生.与Emit相关的类基本都存在于System.Reflection.Emit命名空间下.反射,我们可以取得形如程序集 ...
- poj-1635 Subway tree systems(推断两个有根树是否同构)-哈希法
Description Some major cities have subway systems in the form of a tree, i.e. between any pair of st ...
- 微软公有云Azure是惠及全人类的计算资源
回归往事,1975年,微软以DOS创业.在随后的三十年中,微软给人类贡献了视窗操作系统Windows,至今,人们对桌面操作系统XP仍然不离不弃.可是,面对互联网的兴起.微软应该怎么办呢? 微软内部不乏 ...
- 【C语言】不使用大小于号,求出两数最大值
//不使用大小于号,求出两数最大值 #include <stdio.h> #include <math.h> double Max(double a, double b) { ...
- 二分查找法(binary search)
二分查找法:一种在有序列表中查找某个值的算法,它每次都将待查找的空间分为两半,在其中一般继续查找. 使用二分查找的前提是:已经排序好的列表.否则,sum对其查找的结果不做保证. 代码实现: // 使用 ...
- js【面向过程编程】、好、 【init()、 GetData()、 bindData()、bindDom、 bindEvent()、buyProduct()、AddProductToCart()】*****************
1. 一般页面开发方式 [可读性差.可维护性差]------初级开发工程师 一般页面编写方法 var name = 'iphone8' var description = '手机中的战斗机 ' var ...