select语句的高级应用及实例
本文介绍的select高级应用主要包括:联合查询、分组查询、嵌套查询和限定查询数目等,与实例对照演示,所使用数据库为sqlite3。
部门表(dept)
CREATE TABLE dept(
id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL);
INSERT INTO dept(id,name) VALUES(11,'tech');
INSERT INTO dept(id,name)VALUES(22,'finace');
INSERT INTO dept(id,name) VALUES(33,'hr');部门表的内容如下:
| id | name | 
| 11 | tech | 
| 22 | finace | 
| 33 | hr | 
雇员表(employee)
CREATE TABLE employee (
id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
dept_id INT NOT NULL);
INSERT INTO employee (id,name,dept_id)VALUES(1,'ame',11);
INSERT INTO employee (id,name,dept_id)VALUES(2,'beck',11);
INSERT INTO employee (id,name,dept_id)VALUES(3,'beck',11);
INSERT INTO employee (id,name,dept_id)VALUES(4,'mike',11);
INSERT INTO employee (id,name,dept_id)VALUES(5,'john',22);
INSERT INTO employee (id,name,dept_id)VALUES(6,'stan',22);
INSERT INTO employee (id,name,dept_id)VALUES(7,'lily',22);
INSERT INTO employee (id,name,dept_id)VALUES(8,'lory',33);
INSERT INTO employee (id,name,dept_id)VALUES(9,'koby',33);雇员表的内容如下:
| id | name | dept_id | 
| 1 | ame | 11 | 
| 2 | beck | 11 | 
| 3 | star | 11 | 
| 4 | mike | 11 | 
| 5 | john | 22 | 
| 6 | stan | 22 | 
| 7 | lily | 22 | 
| 8 | lory | 33 | 
| 9 | koby | 33 | 
1、联合查询:JOIN
查询得到每个雇员id、雇员姓名以及其所在部门名称。
SELECT e.id,e.name,d.name FROM employee e INNER JOIN dept d ON e.dept_id = d.id;2、分组查询:GROUP BY
查询各部门的id以及员工人数。
SELECT dept_id,COUNT(*) emp_count FROM employee GROUP BY dept_id;3、嵌套查询:FROM/IN/EXISTS
查询各部门的id、名称以及员工人数,这里将SELECT子句的查询结果和数据表dept内连接后,用作FROM的数据子集。
SELECT d.id,d.name,e_cnt.how_many num_employee FROM dept d INNER JOIN
(SELECT dept_id,COUNT(*) how_many FROM employee e GROUP BY dept_id) e_cnt
ON d.id = e_cnt.dept_id;另外查询子句还可与IN/EXISTS等配合使用。
IN关键字用于where子句中用来判断查询的表达式是否在多个值的列表中;示例中选出hr部门对应的员工及dept_id。
SELECT name,dept_id FROM employee WHERE dept_id IN (SELECT id FROM dept where name='hr');EXISTS是sql中的逻辑运算符号。如果子查询有结果集返回,那么就为True;示例中SELECT 1就有结果返回。
SELECT name,dept_id FROM employee EXISTS(SELECT 1);4、限定查询数目:LIMIT
只想查询人数最多的部门id及员工人数,可以用limit1,表示只取第1条记录。
SELECT dept_id,COUNT(*) emp_count FROM employee
GROUP BY dept_id order by emp_count desc limit 1;以上所有语句均在sqlite3中实操并确认有效,有兴趣的朋友也可以实践下。
select语句的高级应用及实例的更多相关文章
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
		Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ... 
- oracle高级查询(实例基于scott用户四张表)
		oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ... 
- 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作
		上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ... 
- Mybatis如何执行Select语句,你真的知道吗?
		持续原创输出,点击上方蓝字关注我吧 作者:不才陈某 博客:https://chenjiabing666.github.io 前言 本篇文章是Myabtis源码分析的第三篇,前两篇分别介绍了Mybati ... 
- SQL SELECT 语句
		本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT 语法 SE ... 
- sql子查询 嵌套SELECT语句
		嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在sele ... 
- SQLite使用教程9  Select 语句
		http://www.runoob.com/sqlite/sqlite-select.html SQLite Select 语句 SQLite 的 SELECT 语句用于从 SQLite 数据库表中获 ... 
- SQLite Select 语句(http://www.w3cschool.cc/sqlite/sqlite-select.html)
		SQLite Select 语句 SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据.这些结果表也被称为结果集. 语法 SQLite 的 SELECT ... 
- MySql:SELECT 语句(三) WHERE 指定查询条件
		1.WHERE 子句条件操作符 包括:> .<.>=.<=.!= .=.BETWEEN ... AND ...(在指定的两个值之间) 示例: 1)select * from s ... 
随机推荐
- 5月21    汽车查询及批量删除----php方法
			---恢复内容开始--- 这个与之前不同是在php中实现了页面的查询,引用AJAX实现批量删除及弹窗的显示 作业要求: 页面显示数据代码: <!DOCTYPE html PUBLIC " ... 
- github上fork了别人的项目后,再同步更新别人的提交(转)
			原文地址:github上fork了别人的项目后,再同步更新别人的提交 我从github网站和用git命令两种方式说一下. github网站上操作 打开自己的仓库,进入code下面. 点击new pul ... 
- php入门知识储备
			知识结构 开发环境 能够搭建开发环境(一键安装包也算) 知道开发环境中包含哪些软件 知道每种软件的用处 知道每种软件的配置文件(配置项可以慢慢体会) HTML 知道什么是标签.属性 了解基本的HTML ... 
- MINIUI应用
			MINIUI是一款优秀的JS前端web框架,提供丰富.强大控件库,能快速开发企业级Web应用软件. 属于付费插件. 如果有兴趣推荐去这个网址看看.MiniUI 在线示例 http://www.min ... 
- python 判断变量是否存在  防止报错
			Python判断变量是否存在 方法一:使用try: ... except NameError: .... try: var except NameError: var_exists = False e ... 
- span 超出部分换行
			span{ word-break: normal; width: auto; display: block; white-space: pre-wrap; word-wrap: break-word; ... 
- nyoj 0325 zb的生日(dp)
			nyoj 0325 zb的生日 zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集 ... 
- 逆袭之旅DAY13.东软实训.Oracle.简单的查询语句.限制.排序
			2018-07-09 21:34:00 一.简单查询: .查询数据表的所有列: SELECT * FROM 表名; SELECT 列名,列名.... FROM 表名; .起别名: SELECT 列名 ... 
- Win10系列:JavaScript综合实例3
			实现主页面的功能之后,接下来实现分类页面.分类页面中显示一种菜肴类别的详细信息,包括类别名称.图片.描述信息以及属于该类别的一些菜肴.在pages文件夹中添加一个名为classDetail的文件夹,并 ... 
- Uva LA 3902 - Network 树形DP 难度: 0
			题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ... 
