一.select的简单用法


1.简单的数据检索

SELECT FROM T_Employee;

2.检索出需要的列

SELECT FNumber,FName,FAge FROM T_Employee

3.列别名

SELECT FNumber AS Number1,FName AS Name,FAge AS Age,FSalary AS Salary FROM T_Employee

4.按条件过滤

SELECT FName FROM T_Employee WHERE FSalary<5000

SELECT FROM T_Employee WHERE FSalary<5000 OR FAge>25

5.数据汇总

SELECT MAX(FSalary) FROM T_Employee WHERE FAge>25

SELECT MAX(FSalary) as MAX_SALARY FROM T_Employee WHERE FAge>25

SELECT AVG(FAge) FROM T_Employee WHERE FSalary>3800

SELECT SUM(FSalary) FROM T_Employee

SELECT MIN(FSalary),MAX(FSalary) FROM T_Employee

SELECT COUNT(*),COUNT(FNumber) FROM T_Employee; (区别是*把空值也统计了)

6.排序

SELECT FROM T_Employee ORDER BY FAge ASC (升序,降序是DESC)


二.高级数据过滤


1 通配符过滤

单字符匹配

以任意字符开头,剩余部分为“erry”。

SELECT FROM T_Employee WHERE FName LIKE ‘_erry’

多字符匹配

以“T”开头长度,长度任意。

SELECT FROM T_Employee WHERE FName LIKE ‘T%’

包含字母“n”。

SELECT FROM T_Employee WHERE FName LIKE ‘%n%’

集合匹配

集合匹配只在MSSQLServer 上提供支持,在MYSQL、Oracle、DB2 等数据库中不支持,必须采用变通的手段来实现。

2 空值检测

错误:SELECT * FROM T_Employee WHERE FNAME=null

正确:SELECT * FROM T_Employee WHERE FNAME IS NULL

SELECT * FROM T_Employee WHERE FNAME IS NOT NULL

3反义运算符

SELECT * FROM T_Employee WHERE FAge!=22 AND FSALARY!<2000; (只有MS,DB2支持)

SELECT * FROM T_Employee WHERE NOT(FAge=22) AND NOT(FSALARY<2000)

4.多值检测

SELECT FAge,FNumber,FName FROM T_Employee WHERE FAge=23 OR FAge=25 OR FAge=28

5.范围值检测

SELECT FROM T_Employee WHERE FAGE IN(23,24,25,26,27)

SELECT FROM T_Employee WHERE FAGE>=23 AND FAGE <=27

SELECT FROM T_Employee WHERE FAGE BETWEEN 23 AND 27

SELECT FROM T_Employee WHERE (FSalary BETWEEN 2000 AND 3000) OR (FSalary BETWEEN 5000 AND 8000)


三.数据分组


1.数据分组入门

SELECT FAge FROM T_Employee GROUP BY FAge

SELECT FAge FROM T_Employee WHERE FSubCompany = ‘Beijing’ GROUP BY FAg

SELECT FSubCompany,FDepartment FROM T_Employee GROUP BY FSubCompany,FDepartment

2.数据分组与聚合函数

SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee GROUP BY FAge

SELECT FSubCompany,FAge,COUNT(*) AS CountOfThisSubCompAge FROM T_Employee GROUP BY FSubCompany,FAge

SELECT FSubCompany,FAge,COUNT(*) AS CountOfThisSubCompAge FROM T_Employee GROUP BY FSubCompany,FAge ORDER BY FSubCompany

SELECT FDepartment,SUM(FSalary) AS FSalarySUM FROM T_Employee GROUP BY FDepartment

SELECT FDepartment,MIN(FAge) AS FAgeMIN,MAX(FAge) AS FAgeMAX FROM T_Employee GROUP BY FDepartment

3.HAVING 语句

错误:SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee GROUP BY FAge WHERE COUNT(*)>1 因为聚合函数不能在WHERE语句中使用

正确 :SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee GROUP BY FAge HAVING COUNT(*)>1

SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee GROUP BY FAge HAVING COUNT(*) =1 OR COUNT(*) =3

SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee GROUP BY FAge HAVING COUNT(*) IN (1,3)

注意:在HAVING语句中不能包含未分组的列名

错误:SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee GROUP BY FAge HAVING FName IS NOT NULL

正确 : SELECT FAge,COUNT(*) AS CountOfThisAge FROM T_Employee WHERE FName IS NOT NULL GROUP BY FAge


四. 限制结果集行数


mysql:

SELECT FROM T_Employee ORDER BY FSalary DESC LIMIT 2,5

oracle,DB2:

SELECT FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY FSalary DESC) row_num,
FNumber,FName,FSalary,FAge FROM T_Employee
) a
WHERE a.row_num>=3 AND a.row_num<=5

DB2:

SELECT FROM T_Employee ORDER BY FSalary Desc FETCH FIRST 6 ROWS ONLY


五.抑制数据重复


SELECT DISTINCT FDepartment FROM T_Employee

SELECT DISTINCT FDepartment,FSubCompany FROM T_Employee (组合不重复)


六.计算字段


1.常量字段

在数据库中不存在,只是会显示出来

SELECT ‘CowNew 集团’ AS CompanyName,918000000 AS RegAmount,FName,FAge,FSubCompany FROM T_Employee

2.字段间计算

SELECT FNumber,FName,FAge * FSalary AS FSalaryIndex FROM T_Employee

SELECT * FROM T_Employee WHERE FSalary/(FAge-21)>1000

3.数据处理函数

LENGTH(FName):取得字符串长度

SUBSTRING(FName,2,3):取FName中第2第3个字符

SIN(FAge):正弦

4.字符串的拼接

mysql:

SELECT CONCAT(‘工号为:’,FNumber,’的员工的幸福指数:’,FSalary/(FAge-21)) FROM T_Employee

SELECT CONCAT_WS(‘,’,FNumber,FAge,FDepartment,FSalary) FROM T_Employee (第一个参数是分隔符)

oracle:

SELECT ‘工号为’||FNumber||’的员工姓名为’||FName FROM T_Employee WHERE FName IS NOT NULL

SELECT CONCAT(‘工号:’,FNumber) FROM T_Employee (只支持两个参数,支持类型转换)

DB2:

用||

CONCAT (只支持两个参数,不支持类型转换)

5.计算字段的其他用途

计算处于合理工资范围内的员工

SELECT * FROM T_Employee WHERE Fsalary BETWEEN Fage*1.5+2000 AND Fage*1.8+5000

查询“工资年龄指数”

SELECT MAX(FSalary/FAge) AS MAXVALUE,MIN(FSalary/FAge) AS MINVALUE FROM T_Employee

年龄全部加1

UPDATE T_Employee SET FAge=FAge+1


七.不从实体表中取的数据


SELECT DISTINCT 1 FROM T_Employee

SELECT 1,2,3,’a',’b',’c’


八.联合结果集


SELECT FNumber,FName,FAge FROM T_Employee
UNION
SELECT FIdCardNumber,FName,FAge FROM T_TempEmployee

一是每个结果集必须有相同的列数

二是每个结果集的列必须类型相容

SELECT FName,FAge FROM T_Employee
UNION ALL
SELECT FName,FAge FROM T_TempEmployee


九.联合结果集应用举例


员工年龄报表

SELECT ‘正式员工最高年龄’,MAX(FAge) FROM T_Employee
UNION
SELECT ‘正式员工最低年龄’,MIN(FAge) FROM T_Employee
UNION
SELECT ‘临时工最高年龄’,MAX(FAge) FROM T_TempEmployee
UNION
SELECT ‘临时工最低年龄’,MIN(FAge) FROM T_TempEmployee

正式员工工资报表

SELECT FNumber,FSalary FROM T_Employee
UNION
SELECT ‘工资合计’,SUM(FSalary) FROM T_Employee

列出员工姓名

SELECT FName FROM T_Employee
UNION
SELECT FName FROM T_TempEmployee

分别列出正式员工和临时工的姓名

SELECT ‘以下是正式员工的姓名’
UNION ALL
SELECT FName FROM T_Employee
UNION ALL
SELECT ‘以下是临时工的姓名’
UNION ALL
SELECT FName FROM T_TempEmployee

SQL笔记-第四章,数据的检索的更多相关文章

  1. 【数据分析 R语言实战】学习笔记 第四章 数据的图形描述

    4.1 R绘图概述 以下两个函数,可以分别展示二维,三维图形的示例: >demo(graphics) >demo(persp) R提供了多种绘图相关的命令,可分成三类: 高级绘图命令:在图 ...

  2. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  3. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  4. 《Linux内核分析》读书笔记(四章)

    <Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...

  5. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...

  6. Laxcus大数据管理系统2.0(6)- 第四章 数据计算

    第四章 数据计算 Laxcus所有数据计算工作都是通过网络实施.相较于集中计算,在网络间进行的数据计算更适合处理那些数据量大.复杂的.耗时长的计算任务.能够实施网络计算的前提是数据可以被分割,就是把一 ...

  7. 4 Visual Effects 视觉效果 读书笔记 第四章

    4   Visual Effects    视觉效果        读书笔记 第四章 Well, circles and ovals are good, but how about drawing r ...

  8. 鸟哥的Linux私房菜笔记第四章

    前言 对着<鸟哥的Linux私房菜-基础版>做了简化笔记.不想让自己知其然而不知其所然.所以写个博客让自己好好巩固一下,当然不可能把书中的内容全部写下来.在这里就简化一点把命令写下来. 让 ...

  9. 《Linux内核设计与实现》读书笔记——第四章

    标签(空格分隔): 20135321余佳源 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. ...

随机推荐

  1. 银光类似web visio的节点连线控件Essential Diagram免费下载地址

    Essential Diagram for Silverlight是一款功能强大的图解拓扑图控件,在XAML支持的情况下提供用户交互式地创建和编辑图解,支持数据绑定和多种布局,可以导出为多种文件格式等 ...

  2. windows系统常用快捷键及其作用

    使用windows快捷键,使得工作起来事半功倍,你都懂了么? win 7操作系统快捷键,其余的操作系统有部分不一致,但总体都差不多 win+D: 显示桌面/隐藏桌面 (再次按win+D,下同) (wi ...

  3. 委托Delegate,多播委托和委托链

    定义一个委托 public delegate void CalculateDelegate(int 32 x,int 32 y); 定义一个委托类型的变量 public static Calculat ...

  4. leetcode(144,94,145,102)中迭代版的二叉树的前、中、后、层级遍历

    //前序遍历class Solution{ public: vector<int> preorderTraversal(TreeNode *root){ vector<int> ...

  5. USB协议-USB的描述符及其之间的关系

    USB只是一个总线,只提供一个数据通路而已.USB总线驱动程序并不知道一个设备具体如何操作,有哪些行为.具体的一个设备实现什么功能,要由设备自己来决定.那么,USB主机是如何知道一个设备的功能以及行为 ...

  6. nvcc fatal : Cannot find compiler 'cl.exe' in PATH解决方法

    我在测试安装的deep learning工具theano.按照官网Baby Steps - Algebra一步步输入. >>> import theano.tensor as T & ...

  7. ES6 - for...of

    for...of是一种用来遍历数据结构的方法,可遍历的对象包括:数组,对象,字符串,节点数组等 我们先来看一下现在存在的遍历方式: var arr=[1,2,3,4] (1)for循环 缺点:代码不够 ...

  8. pt-ioprofile分析查看mysql的真实IO情况

    针对IO密集型应用做系统调优的时候,我们通常都需要知道系统cpu  内存  io 网络等系统性能 和 使用率,结合应用本身的访问量,以及 mysql的性能指标来综合分析.比如说:我们将系统压力情况分为 ...

  9. osx 文本编辑工具下载地址Sublime Text 3

    下载地址: http://www.sublimetext.com/3 Sublime Text 是一个代码编辑器(Sublime Text 3是收费软件,但可以无限期试用),也是HTML和散文先进的文 ...

  10. C++模板类的使用

    1.定义模板类 通过类似于下面的语法可以定义一个模板类: template<typename T> class Job : public virtual RefBase { public: ...