数据库select语句详解

数据库select语句详解SELECT1.基本语法select*from表名查询这张表所有内容。select列名from表名查询这张表某一列所有内容。select列名1,列名2…from表名查询这张表的列1,列2,等多列。selectdistinct列名from表名查询这一列去掉重复内容后的内容。select表达式from表名查询表达式,下面会详细讲。select列名(表达式)as别名from表名给某一列或表达式取别名。2.例子如下这张表emp:1)检索单个

大家好,又见面了,我是你们的朋友全栈君。

SELECT

1.基本语法

  1. select * from 表名
    查询这张表所有内容。
  2. select 列名 from 表名
    查询这张表某一列所有内容。
  3. select 列名1,列名2…from 表名
    查询这张表的列1,列2,等多列。
  4. select distinct 列名 from 表名
    查询这一列去掉重复内容后的内容。
  5. select 表达式 from 表名
    查询表达式,下面会详细讲。
  6. select 列名(表达式)as 别名 from 表名
    给某一列或表达式取别名。

2.例子

如下这张表emp:
在这里插入图片描述
1)检索单个列
select ename from emp;
2) 检索多个列
select ename,job,sal from emp;
3) 检索所有列
select * from emp;
4) 去除重复
select distinct deptno from emp;
5) 别名
select ename as 姓名 from emp;
6) 伪列,即不存在的列,构建虚拟的列
select empno, 1*2 as count,‘cmj’ as
name,deptno from emp;
7)虚表,及不存在的表,可以计算
select 1+1 from dual;

3.where过滤器

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(‘单个字符’)
e)、in 、 exists(难点) 及子查询

3.1 比较条件

= 、>、 <、 >=、 <=、 !=、 <>

  1. select * from emp where deptno = 20;
    即查询deptno为20的所有员工信息
  2. select * from emp where sal > 1500;
    查询员工工资大于1500的员工信息
  3. !=和<>都表示不等于

3.2 且或非

and、 or、 not

  1. select * from emp where sal>=1500 and sal<=3000;
    查询员工工资大于1500并且小于3000的员工信息
  2. select * from emp where sal<1500 or sal>3000;
    查询员工工资小于1500或大于3000的员工信息

3.3 null

null不能使用条件判断,只能使用is
–存在佣金的员工名称
select * from emp where comm is null;
–不存在佣金的员工名称
select * from emp where comm is not null;

3.4 集合操作

dept表
在这里插入图片描述

Union、Union All、Intersect、Minus
Union,并集(去重) 对两个结果集进行并集操作,不
包括重复行同时进行默认规则的排序;
Union All,全集(不去重) 对两个结果集进行并集操
作,包括重复行,不进行排序 ;
Intersect,交集(找出重复) 对两个结果集进行交集操
作,不包括重复行,同时进行默认规则的排序;
Minus,差集(减去重复) 对两个结果集进行差操作,不
包括重复行,同时进行默认规则的排序
–查询工资大于1500 或 含有佣金的人员姓名

  1. –union 去除重复行
    select ename from emp where sal>1500
    union
    select ename from emp where comm is not null;
  2. – union all 不去除重复行
    select ename from emp where sal>1500
    union all
    select ename from emp where comm is not null;
  3. –查询显示不存在雇员的所有部门号。
    select deptno from dept
    minus
    select distinct deptno from emp
  4. –查询工资大于1500 且 含有佣金的人员姓名
    select ename,sal,comm from emp where sal>1500
    intersect
    select ename,sal,comm from emp where comm is
    not null;

3.5 like:模糊查询

模糊查询,使用通配符:
%:零个及以上(任意个数的)的字符
_:一个字符
遇到内容中包含 % _ 使用escape(‘单个字符’)指定转义

  1. –查询员工姓名中包含字符A的员工信息
    select * from emp where ename like ‘%A%’;
  2. –查询员工姓名中包含第二个A的员工名称信息
    select * from emp where ename like ‘_A%’;
  3. 数据中 员工姓名中 存在 _ % ,如何查找:
    –1)、编写测试数据
    insert into emp(empno,ename,sal)
    values(1000,‘t_%test’,8989); insert into
    emp(empno,ename,sal)
    values(1200,‘t_tes%t’,8000);
    –2)、查找
    –查询员工姓名中包含字符%的员工名称 岗位 工资 部门编号
    select ename,job,sal,deptno from emp where
    ename like ‘%a%%’ escape(‘a’);
    –查询员工姓名中包含第二个_的员工名称 岗位 工资 部门编

3.6. in 与 exists

in相当于使用or的多个等值,定值集合 ,如果存在 子查
询,确保 类型相同、字段数为1,如果记录多,效率不
高,用于 一些 少量定值判断上
–10或30部门的雇员信息
select * from emp where sal in(900,800);
–子查询(查询中再有查询) in 只能存在一个字段
select * from emp where sal in (select sal
from emp e where deptno=10);

select * from emp where deptno in(10,30);
–部门名称为 SALES 或 ACCOUNTING 的雇员信息
select deptno from dept where dname
in(‘SALES’,‘ACCOUNTING’); SELECT *
FROM emp
WHERE deptno IN
(SELECT deptno FROM dept WHERE dname IN
(‘SALES’, ‘ACCOUNTING’));
exists条件为true,存在记录则返回结果,后续不再继续
比较查询,与查询的字段无关,与记录有关

3.7 排序

使用 ORDER BY 排序,排序不是真实改变存储结构的顺
序,而是获取的集合的顺序。
顺序 :asc(默认) desc
多字段: 在前面字段相等时,使用后面的字段排序
空排序: 降序为 desc,注意 null 为最后

  1. –按工资降序
    select * from emp order by sal desc;
  2. –null问题
    select * from emp order by nvl(comm,0),comm
    desc;
  3. –工资+佣金排序
    select ename,sal,comm,sal+nvl(comm,0) c from
    emp where deptno in(20,30) order by c;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134375.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 设置CListCtrl单元格的颜色

    设置CListCtrl单元格的颜色pragmaonce//CListCtrlClclassCListCtrlCl:publicCListCtrl{DECLARE_DYNAMIC(CListCtrlCl)public:CListCtrlCl();virtual~CListCtrlCl();protected:DECLARE_MESSAGE_MAP()virtualvo

  • mysql8.0压缩包安装教程(zarchiver怎么安装游戏)

    首先声明,这里是Mysql8.0.27版本、64位操作系统解压版mysql的下载及安装配置及修改初始密码。如果是其他版本的mysql安装,可以自行查找其他方法,记住搜索的时候最好加上是什么版本的,因为不同版本的mysql安装的时候有些命令是不同的,例如,mysql5.7的就搜索mysql5.7安装。话不多说,接下来就是我的mysql8.0.27版本的教程了。1.下载打开下载地址:https://dev.mysql.com/downloads/mysql/,找到箭头中的文件https:/

  • 通过sql调用procedure_oracle存储过程简单案例

    通过sql调用procedure_oracle存储过程简单案例文章目录1.存储过程和函数在实际项目中的使用2.存储过程与函数的比较2.1.共同点2.2.不同点3.存储过程StoredProcedure3.1.存储过程概述3.1.1.存储过程的优点3.1.2.存储过程的缺点3.2.创建存储过程createprocedure3.3.调用存储过程call3.4.查看存储过程的定义3.5.修改存储过程alterprocedure…

  • python return换行(python中的换行)

    广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!代码太长怎么办,反斜杠引号‘’来帮忙!在写list或者较长的字符串时候,或者多个循环造成ide不够用时,就需要代码换行了。主要的代码换行有通用的反斜杠和针对字符串起作用的三引号结构。1.反斜杠对于一般表达式来说,反斜杠后直接回车即可实现续行,使用的关键在于反斜杠后不能用空格…

  • 动画:用动画给面试官解释 TCP 三次握手过程

    动画:用动画给面试官解释 TCP 三次握手过程作者|小鹿来源|公众号:小鹿动画学编程写在前边TCP三次握手过程对于面试是必考的一个,所以不但要掌握TCP整个握手的过程,其中有些小细节也更受到面试官的青睐。对于这部分掌握以及TCP的四次挥手,小鹿将会以动画的形式呈现给每个人,这样将复杂的知识简单化,理解起来也容易了很多,尤其对于一个初学者来说。学习导图一、TCP是什么?TCP(Transmissio…

  • python读取文件夹下所有图片文件_python删除某一列

    python读取文件夹下所有图片文件_python删除某一列具体实现步骤功能需求读取一个文件夹中的所有图片,并将图像数据存储在一个文件中。说明对于本程序中的实现,图片文件夹与python文件应在图一个目录中。如上图所示,楼主的face.py为读文件夹中所有文件的代码。file中存放的是多张图片。这两个文件都在根目录下,你也可以将他们两个放在其他的目录下,若不放在同一个目录下,则需要修改代码,才能运行成功。第一步:导入库代码为:import…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号