数据库修仙之路

二:select

Scott用户的四张表

主表:dept部门表

薪资分级表:salgrade工资等级表

从表:emp雇员信息表

命令不区分大小写

一:查询列(字段)

1.检索单个列

Select ename from emp; --查询员工信息

检索多个列

select deptno,dname from dept; --查询部门表的deptno,dname字段

2.检索所有列

select *from dept; --查询部门的所有信息

3.去除重复

使用distinct去重,确保查询结果的唯一性 :

Select distinct deptno from emp;

4.别名

select ename 雇员姓名 from emp;

select ename as "雇员 姓名" from emp;

select ename "雇员 姓名" from emp;  --as可以省去,这种方式最实用

select ename as 雇员姓名 from emp;

select ename as " Ename" from emp;

注:’’ ’’表示原样输出,可以存在空格和区分大小写

  1. 字符串

select ‘a-’ || ‘-b’ from dept; --字符串的拼接

--查询所有员工的姓名添加同一前缀 尚学堂

select ‘尚学堂‘||ename "学生姓名" from emp;

  1. 伪列

select 1+1 from emp; --表中不存在的列,自动拼接在结果集中

7.--虚表: oracle中不是真是存在的表,其中没有任何数据  dual  可以省去去重问题

select sysdate from dual;

select 1 from dual;  --oracle中存在dual

8.null

null 遇到数字参与运算的结果为 null,遇到字符串为空串

--nvl(值1,值2) 如果值1为null,函数运算的结果是值2,如果值1不为null,结果就是值1

select ename,nvl(comm,1) from emp;

二:查询行(记录)

执行顺序:先走from再走where最后走select

a)、= 、 >、 <、 >=、 <=、 !=、 <>、 between and

b)、and 、or、 not、 union、 union all、 intersect 、minus

c)、null :is null、 is not null、 not is null

d)、like :模糊查询 % _ escape(‘单个字符‘)

f)、in 、 exists(难点) 及子查询

1.比较条件

= 、 >、 <、 >=、 <=、 !=、 <>、 between and

select * from emp where ename=‘SMITH‘;

select * from emp where sal  between 1300 and 2500;

2.且 或 非

and、 or、 n

select * from emp where sal >=1300 and sal<=2500;

select ename,deptno from emp where deptno=20 or deptno=10;

3.null

不能使用条件判断,只能使用is

select * from emp where comm is null;

select * from emp where comm is not null;

select * from emp where not comm is null;

  1. 集合操作

Union、Union All、Intersect、Minus

Union,并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;

select * from emp where sal>1500

Union

select * from emp where comm is not null;

Union All,全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 ;

select * from emp where sal>1500

Union All

select * from emp where comm is not null;

Intersect,交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

select * from emp where sal>1500

intersect

select * from emp where deptno=30;

Minus,差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的

select deptno from dept

Minus

select distinct deptno from emp;

5.like:模糊查询

select * from emp where ename like ‘SMITH‘;

求员工姓名以A开头的员工信息

select * from emp where ename like ‘A%‘;

求员工姓名包含A的员工信息

select * from emp where ename like ‘%A%‘;

求员工名字第二个字符为A的员工信息

select * from emp where ename like ‘_A%‘;

6.in和exists

in:

查询信息为1500,2000,2500,3000的员工的信息

select * from emp where sal=1500 or sal=2000 or sal=2500 or sal=3000;

在一些定值之间取任意一个,可以不使用or使用in,in是做定值判断的

select * from emp where sal in(1500,2000,2500,3000);

exists: 存在即保留,存在即合法     exists条件为true,存在记录则返回结果,后续不再继续 比较查询,与查询的字段无关,与记录有关

select*from emp where exists (select deptno from emp where ename=‘SMITH‘);

上述代码中exists后面的括号里是真实存在的数据,虽然数据只有一条,但只要它存在就是true,则在前面的select*from emp查询到每一条数据都会走到后面去判断,只要它真实就会输出查询到的每一条数据

注意:

select *

from emp

where exists (select deptno

from dept

where dname=‘SALES‘

and emp.deptno = dept.deptno);

--部门名称为‘SALES‘,‘ACCOUNTING‘中的所有员工信息

--要查询的诗句:员工信息

--数据来源:emp

--条件dname in (‘SALES‘,‘ACCOUNTING‘)

select *

from emp

where exists (select deptno

from dept

where dname in (‘SALES‘, ‘ACCOUNTING‘)

and emp.deptno =dept.deptno);

--表起别名

select *

from emp e

where exists (select deptno

from dept d

where dname in (‘SALES‘, ‘ACCOUNTING‘)

and e.deptno =d.deptno);

-- 所有员工都能拿到

select *

from emp e

where exists

(select deptno,dname from dept d where dname in (‘SALES‘,

‘ACCOUNTING‘) and e.deptno!=d.deptno);

--拿到除了‘SALES‘, ‘ACCOUNTING‘部门的员工信息

select *

from emp e

where not exists

(select deptno,dname from dept d where dname in (‘SALES‘,

‘ACCOUNTING‘) and e.deptno=d.deptno);

--有奖金的员工信息

select empno, ename, sal,comm

from emp e1

where exists (select empno, ename, sal, comm

from emp e2

where comm is not null

and e1.empno = e2.empno);

--有奖金存在的部门的所有员工信息

select empno, ename, sal,deptno

from emp e1

where exists (select empno, ename, sal, comm,deptno

from emp e2

where comm is not null

and e1.deptno = e2.deptno );

三:排序(asc 升序排列 ascend的缩写    desc 降序排列 descend的缩写)

使用 ORDER BY 排序,排序不是真实改变存储结构的顺序,而是获取的集合的顺序

--select *|字段.. from 数据来源 where 条件 order by 排序字段;    desc降序  默认升序 asc升序

--执行流程: from -- where -- select --order by

select*from emp order by sal;

--查询30部门中的所有员工,按照薪资进行降序排序  默认升序

select * from emp where deptno=30 order by sal asc;

--查询30部门中的所有员工,按照薪资进行序排序,如果薪资相同,根据员工编号降序排序

select * from emp where deptno=30 order by sal desc,empno desc;

--根据奖金进行降序排序   nulls first控制所有的null值在最前还是最好

select * from emp order by comm desc nulls last;

原文地址:https://www.cnblogs.com/greyrhinoceros-1998/p/10867345.html

时间: 2024-11-04 14:38:15

数据库修仙之路的相关文章

oo修仙之路

写在前面: 之前听说过oo这门课的威力,计院全体修仙现场的图也被转了不知多少遍,然而自己不亲身经历就不知这门课的难度所在.每次debug时耳边总会想起三国杀里面周瑜的话"挣扎吧,在血和暗的深渊里:痛苦吧,在仇与恨的深渊中!"oo对我来说大抵就是这样,痛苦却无法避免,下面就来回顾一下这一个月以来的oo生涯. 第一次作业: 第一次作业我美滋滋地以为老师会讲Java,像c语言和数据结构那门课一样,第一次作业并不会太难.然而我太天真了,第一次作业就给了我致命一击,看着如同天书一般的指导书,生平

程序猿修仙之路--数据结构之设计高性能访客记录系统

菜菜呀,最近我有个想法呀! (心想:又尼玛有折磨人的想法了.) X总,您说~ 我想给咱们的用户做个个人空间,目前先有访客记录就可以,最近访问的人显示在最上边,由于用户量有十几亿,可能对性能要求比较高,三天后上线,你做一下吧! (心想:一万头羊驼飘过!!)  但是X总,个人空间访问量比较大,需要设计,测试等环节,三天不够呀!~ 这个关系到公司的生死存亡,你加加班就行了``` (心想:一亿头羊驼!!) 好吧,X总,我尽最大努力! 苦笑中....~ 需求要点 每个用户都有自己的个人空间,当有其他用户来

程序员修仙之路--优雅快速的统计千万级别uv

菜菜,咱们网站现在有多少PV和UV了? Y总,咱们没有统计pv和uv的系统,预估大约有一千万uv吧 写一个统计uv和pv的系统吧 网上有现成的,直接接入一个不行吗? 别人的不太放心,毕竟自己写的,自己拥有主动权.给你两天时间,系统性能不要太差呀 好吧~~~ 定义PV是page view的缩写,即页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.网页浏览数是评价网站流量最常用的指标之一,简称为PV UV是unique visitor的简写,是指通过互联网访问.浏览这个网页的自

Java架构师“修仙”之路:推荐几本适用于所有Java程序员阅读书籍,希望你有一天成为架构狮

1.<深入理解Java虚拟机:JVM高级特性与最佳实践>本书适合所有Java程序员.系统调优师和系统架构师阅读. 共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理. 第一部分从宏观的角度介绍了整个Java技术体系.Java和JVM的发展历程.模块化,以及JDK的编译,这对理解本书后面内容有重要帮助. 第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因:常见的垃圾收集

程序员修仙之路- CXO让我做一个计算器!!

菜菜呀,个税最近改革了,我得重新计算你的工资呀,我需要个计算器,你开发一个吧 CEO,CTO,CFO于一身的CXO X总,咱不会买一个吗? 菜菜 那不得花钱吗,一块钱也是钱呀··这个计算器支持加减乘除运算就行,很简单 CEO,CTO,CFO于一身的CXO (尼玛)那能不能给我涨点工资呀? 菜菜 公司现在很困难,你这个计算器关系到公司的存亡,你要注意呀!! CEO,CTO,CFO于一身的CXO (关于撇开话题佩服的五体投地)好吧X总,我尽快做 菜菜 给你一天时间,我这里着急要用 CEO,CTO,C

漫谈架构师之路的修仙之法

从小有一个武侠梦,长大从事了IT,空闲时间看了很多修仙小说.就萌生了一个想法:把IT之路和修仙之路联系到一起. 于是参照<凡人修仙传>的各个修仙阶段,对比IT之路进行了对照,才有了这篇文章.无图无真相. 大图太大,不易看清楚,下面分阶段展示一下: 1.初入书院 说明: 1.1 入门 人的精力有限,总的选择一门语言入门 1.2 练气 熟悉计算机,网络的流程 1.3 深入学习一门语言 2.开启修仙之旅 2.1 结丹 SSM常用框架要熟练使用 2.2  元婴 spring boot /spring

积家姊妹心中唔由得一紧,呢啲修仙者个个都要过马骝

两女诧异嘅忘向乸蛇蝎,娘点可以讲救命恩人系杀千刀嘅?但两女连随就明白过嚟,心中暗叫娘亲大晒,呢种话系一种探盘,可以好易试探出啲嘢同恩人之间嘅关系.林兄闻言非但唔恼,面上重露出一丝喜色,佢哋沿住子云山以窍穴之中嘅真气催动嗰一条米粒光珠嘅示一路追到呢座山下,可惜,剑首子云山窍穴真气嘅力量,唯有撑光珠飞到呢度,尚未落山.,净系珠就已经迸碎,佢哋剩上山稳人.老实讲,即便系林兄都已经开始有啲绝望喇. http://bbs.elecfans.com/user/3348267/ 抢走晒我哋仅有嘅几粒十草丹,仲

程序员修神之路--做好分库分表其实很难之一(继续送书)

菜哥,领导让我开发新系统了 这么说领导对你还是挺信任的呀~ 必须的,为了设计好这个新系统,数据库设计我花了好多心思呢 做一个系统我觉得不应该从数据库入手,应该从设计业务模型开始,先不说这个,说说你的数据库设计的优势 为了高性能我首先设计了分库 分表策略,为以后打下基础 那你的数据量将来会很大吗?分库分表其实涉及到很多难题,你了解过吗? 我觉得分库分表很容易呀 是吗? 是否需要分 说到数据库分库分表,不能一味的追求,我们要明白为什么要进行分库分表才是最终目的.现在网上一些人鼓吹分库分表如何应对了多

不过呢都唔怪佢哋,呢三个门派系修仙世界之中真正嘅巨

玄天北上最强大几个门派,同世俗之中理解嘅喺玄天大陆之中占领地头最大嘅门派唔系重合.比如百象帝国嘅唐门应该唔算系相当强大,身家丰厚门人弟子遍布成百象帝国,甚至触角标到其他国家之中.比如妙法门号称控制男人嚟统治世界. http://www.dianyuan.com/people/781947佢哋系呢片北上,成个人族中最有话语权嘅修仙者.佢哋嘅存在就系权威,凌驾与一切门派之上.佢哋喺呢片北上冇自己嘅城池,佢哋甚至唔居住喺玄天北上,佢哋居住喺行火毒仙宫中嘅秘境宝典般嘅世界中,喺度佢哋拥有自己嘅世界,繁衍