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 ...
随机推荐
- 20165309 技能学习经验与C语言
技能学习经验与C语言 技能学习经验 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 从小到大,或是出于兴趣.或是出于父母的要求 ...
- GPLT L2-004 这是二叉搜索树吗?
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192 类似题目有FBI树 这两个题有个小 ...
- python-爬虫-selenium模块
一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...
- MSMQ 概述
MSMQ 概述 1) MSMQ概述 MSMQ 表示微软消息队列服务.MSMQ 可以工作在在线或者离线场景,并提供异步编程功能.如果客户端离线,MSMQ将会是最合适的方法,这是因为服务端不需要等待客户端 ...
- ORACLE SQL 函数 INITCAP()
INITCAP() 假设c1为一字符串.函数INITCAP()是将每个单词的第一个字母大写,其它字母变为小写返回. 单词由空格,控制字符,标点符号等非字母符号限制. select initcap('h ...
- C语言实现哈夫曼编码(最小堆,二叉树)
// 文件中有通过QT实现的界面#include <stdio.h> #include <stdlib.h> #include <string.h> typedef ...
- InnoDB存储引擎介绍-(4)Checkpoint机制一
检查点的工作机制: innodb会自动维护一个检查点的机制,叫做 fuzzy checkpointing(当然sharp checkpoint也是检查点之一),fuzzy checkpointing就 ...
- [CodeForces - 447B] B - DZY Loves Strings
B - DZY Loves Strings DZY loves collecting special strings which only contain lowercase letters. For ...
- notepad++自动对齐使用空格代替Tab并将空格显示为小点
一.说明 对大多数语言而言自动对齐使用空格还是tab对编译运行并没有什么影响,但对python问题就很大:因为就算是缩进看起来是一样的但某些行用空格某些行用tab运行会报错. 另外除了空格替换tab外 ...
- VLC添加水印
Name: LibVLC control APIDescription: VLC media player external control libraryVersion: 2.1.3 参照:http ...