alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)

1. SQL语句

1.1 sql语言类型

sql是一门独立的语言, 有自己的语法结构, 所有的关系型数据库都是支持sql这种语言的

  • sql的执行是在客户端, 相当于个服务器发送请求, 服务器通过不同的sql回复不同的数据

不管是什么类型的语言对应的都是不同语法格式的字符串

  • DML – 数据操纵语言 (Data Manipulation Language
    • insert (添加数据)
    • delete (删除数据)
    • update(修改数据)
    • select (查询数据)
  • DDL – 数据定义语言(Data Definition Language
    • create table (创建表)
    • alter table (修改表)
    • truncate table(清空表)
    • drop table (删除表)
    • create view (视图)
    • create index (索引)
    • create sequence(序列)
    • create synonym(同义词)
  • DCL – 数据控制语言(Data Control Language
    • commit (提交)
    • rollback (回滚)

2. select 语句基础查询

select 列名 from 表 where 条件;

2.1 查看表中的所有字段

使用语句 desc 表名;

SQL> desc emp;
Name     Type         Nullable Default Comments 
-------- ------------ -------- ------- -------- 
EMPNO    NUMBER(4)                     员工编号 
ENAME    VARCHAR2(50) Y                员工姓名 
JOB      VARCHAR2(20) Y                职位     
MGR      NUMBER(4)    Y                直属领导(编号) 
HIREDATE DATE         Y                入职时间 
SAL      NUMBER(7,2)  Y                工资     
COMM     NUMBER(7,2)  Y                佣金     
DEPTNO   NUMBER(2)    Y                所属部门的编号 

其中:Name这一列下都是 字段

字段代表表中的列,记录代表表中的行。

2.2 查询所有列

使用语句select * from 表名;

EMPNO ENAME            JOB                    MGR HIREDATE          SAL      COMM DEPTNO
----- -------------------------------------------------- -------------------- ----- -----------7369 文斯莫克·山治      厨师                  7566 1980/12/17    3200.00    800.00     20。。。。。。。。。。。。

从得到的查询中抽离出以上的信息,那么第一行代表所有的字段,第二行以及下面的每一行,代表记录

2.3 查询指定列

语法:

SELECT 列名1|表达式, 列名2|表达式(1+2), ... FROM 表名; 
-- 查询"emp" 表中员工号, 姓名, 月薪, 佣金
SQL> select empno,ename,sal,comm from emp;EMPNO ENAME                                                    SAL      COMM
----- -------------------------------------------------- --------- ---------7369 文斯莫克·山治                                        3200.00    800.007499 罗罗诺亚·索隆                                        3450.00    300.007521 娜美                                                 4560.00    500.007566 蒙奇·D·路飞                                         5450.00   1000.007654 妮可·罗宾                                           5500.00   2400.007698 特拉法尔加·D·瓦铁尔·罗                             5655.00   1000.007782 贝波                                                 2450.00     20.007788 乌索普                                               3000.00 7839 尾田_荣一郎                                          5000.00 7844 弗兰奇                                               1500.00      0.007876 布鲁克                                               1100.00 7900 甚平                                                 2000.00 7902 香克斯                                               6000.00   1500.007934 托尼托尼·乔巴                                         800.68     10.007840 岸本_齐史                                            5000.00 7709 Jinbe                                                3550.00    600.007699 夏奇                                                 2050.00    200.007700 佩金                                                 3000.00    200.007937 拉基·路                                             3600.00    500.007938 洛克斯达                                             2600.00    200.007783 强巴鲁                                               3600.00    200.007784 伊卡库                                               3000.00    200.007785 库里奥尼                                             3500.00    200.007935 本·贝克曼                                           5500.00 7936 耶稣布                                               5500.00    500.006100 马歇尔·D·帝奇                                       5675.00 6101 芝沙斯·巴沙斯                                        4321.00      5.006102 阿巴罗·皮萨罗                                        2540.00 6103 范·奥卡                                             3450.00 1000 Monkey·D·Luffy                                     5500.00 1001 Trafalgar·D·Water·Law                             5800.00 1002 Marshall·D·Teach                                   7800.00 1003 Portgas·D·Ace                                      5500.00 1004 Hagwar·D·Sauro                                     3450.00 1005 Gol·D·Roger                                        7500.00 1006 Monkey·D·Dragon                                    6550.00 1007 Monkey·D·Garp                                      7890.00 7701 Roronoa Zoro                                         2000.00    800.007702 Nami                                                 3000.00   1000.007703 Usopp                                                2500.00    500.007704 Sanji                                                2800.00   1200.007705 Tony Tony Chopper                                     100.00    300.007706 Nico Robin                                           5000.00    800.007707 Franky                                               2000.00    500.007708 Brook                                                3000.00    900.0045 rows selected-- 表达式: 基于列做加减乘除等相关操作
-- 查询"emp" 表中员工号, 姓名, 月薪, 佣金, 年薪(sal*12)。
-- 年薪的列名依也就是sal*12
SQL> select empno,ename,sal,comm,sal*12 from emp;EMPNO ENAME                                                    SAL      COMM     SAL*12
----- -------------------------------------------------- --------- --------- ----------7369 文斯莫克·山治                                        3200.00    800.00      384007499 罗罗诺亚·索隆                                        3450.00    300.00      414007521 娜美                                                 4560.00    500.00      547207566 蒙奇·D·路飞                                         5450.00   1000.00      654007654 妮可·罗宾                                           5500.00   2400.00      660007698 特拉法尔加·D·瓦铁尔·罗                             5655.00   1000.00      678607782 贝波                                                 2450.00     20.00      294007788 乌索普                                               3000.00                360007839 尾田_荣一郎                                          5000.00                600007844 弗兰奇                                               1500.00      0.00      180007876 布鲁克                                               1100.00                132007900 甚平                                                 2000.00                240007902 香克斯                                               6000.00   1500.00      720007934 托尼托尼·乔巴                                         800.68     10.00    9608.167840 岸本_齐史                                            5000.00                600007709 Jinbe                                                3550.00    600.00      426007699 夏奇                                                 2050.00    200.00      246007700 佩金                                                 3000.00    200.00      360007937 拉基·路                                             3600.00    500.00      432007938 洛克斯达                                             2600.00    200.00      312007783 强巴鲁                                               3600.00    200.00      432007784 伊卡库                                               3000.00    200.00      360007785 库里奥尼                                             3500.00    200.00      420007935 本·贝克曼                                           5500.00                660007936 耶稣布                                               5500.00    500.00      660006100 马歇尔·D·帝奇                                       5675.00                681006101 芝沙斯·巴沙斯                                        4321.00      5.00      518526102 阿巴罗·皮萨罗                                        2540.00                304806103 范·奥卡                                             3450.00                414001000 Monkey·D·Luffy                                     5500.00                660001001 Trafalgar·D·Water·Law                             5800.00                696001002 Marshall·D·Teach                                   7800.00                936001003 Portgas·D·Ace                                      5500.00                660001004 Hagwar·D·Sauro                                     3450.00                414001005 Gol·D·Roger                                        7500.00                900001006 Monkey·D·Dragon                                    6550.00                786001007 Monkey·D·Garp                                      7890.00                946807701 Roronoa Zoro                                         2000.00    800.00      240007702 Nami                                                 3000.00   1000.00      360007703 Usopp                                                2500.00    500.00      300007704 Sanji                                                2800.00   1200.00      336007705 Tony Tony Chopper                                     100.00    300.00       12007706 Nico Robin                                           5000.00    800.00      600007707 Franky                                               2000.00    500.00      240007708 Brook                                                3000.00    900.00      3600045 rows selected

2.4 查询指定别名

在查询的时候, 表头默认是列的名字, 如果列名不直观, 可以指定别名, 别名主要用于显示, 显示到表头
上, 替换原来的列名

语法: select 列|表达式 (as,可不写) "别名"…… from 表;

SQL> select empno "员工编号",ename "姓名",sal "月薪",comm "佣金",sal*12 "年薪" from emp;员工编号 姓名                                               月薪        佣金         年薪
----- -------------------------------------------------- --------- --------- ----------
7369 文斯莫克·山治                                        3200.00    800.00      38400
7499 罗罗诺亚·索隆                                        3450.00    300.00      41400
7521 娜美                                                 4560.00    500.00      54720
7566 蒙奇·D·路飞                                         5450.00   1000.00      65400
7654 妮可·罗宾                                           5500.00   2400.00      66000
7698 特拉法尔加·D·瓦铁尔·罗                             5655.00   1000.00      67860
7782 贝波                                                 2450.00     20.00      29400
7788 乌索普                                               3000.00                36000
7839 尾田_荣一郎                                          5000.00                60000
7844 弗兰奇                                               1500.00      0.00      18000
7876 布鲁克                                               1100.00                13200
7900 甚平                                                 2000.00                24000
7902 香克斯                                               6000.00   1500.00      72000
7934 托尼托尼·乔巴                                         800.68     10.00    9608.16
7840 岸本_齐史                                            5000.00                60000
7709 Jinbe                                                3550.00    600.00      42600
7699 夏奇                                                 2050.00    200.00      24600
7700 佩金                                                 3000.00    200.00      36000
7937 拉基·路                                             3600.00    500.00      43200
7938 洛克斯达                                             2600.00    200.00      31200
7783 强巴鲁                                               3600.00    200.00      43200
7784 伊卡库                                               3000.00    200.00      36000
7785 库里奥尼                                             3500.00    200.00      42000
7935 本·贝克曼                                           5500.00                66000
7936 耶稣布                                               5500.00    500.00      66000
6100 马歇尔·D·帝奇                                       5675.00                68100
6101 芝沙斯·巴沙斯                                        4321.00      5.00      51852
6102 阿巴罗·皮萨罗                                        2540.00                30480
6103 范·奥卡                                             3450.00                41400
1000 Monkey·D·Luffy                                     5500.00                66000
1001 Trafalgar·D·Water·Law                             5800.00                69600
1002 Marshall·D·Teach                                   7800.00                93600
1003 Portgas·D·Ace                                      5500.00                66000
1004 Hagwar·D·Sauro                                     3450.00                41400
1005 Gol·D·Roger                                        7500.00                90000
1006 Monkey·D·Dragon                                    6550.00                78600
1007 Monkey·D·Garp                                      7890.00                94680
7701 Roronoa Zoro                                         2000.00    800.00      24000
7702 Nami                                                 3000.00   1000.00      36000
7703 Usopp                                                2500.00    500.00      30000
7704 Sanji                                                2800.00   1200.00      33600
7705 Tony Tony Chopper                                     100.00    300.00       1200
7706 Nico Robin                                           5000.00    800.00      60000
7707 Franky                                               2000.00    500.00      24000
7708 Brook                                                3000.00    900.00      3600045 rows selected

2.5 表达式中的空字段

查询员工号, 姓名, 月薪, 佣金, 年薪, 总收入 。 [ 总收入 = 年薪 + 佣金 ]

查询总收入时遇到一个问题:因为佣金有的为NULL,当用NULL 与一个数据进行计算时,得出的结果也是NULL

  SQL> select empno "员工编号",ename "姓名",sal "月薪",comm "佣金",sal*12 "年薪",sal*12+comm "总收入" from emp;员工编号 姓名                                              月薪        佣金         年薪        总收入----- -------------------------------------------------- --------- --------- ---------- ----------7369 文斯莫克·山治                                        3200.00    800.00      38400      392007499 罗罗诺亚·索隆                                        3450.00    300.00      41400      417007521 娜美                                                 4560.00    500.00      54720      552207566 蒙奇·D·路飞                                         5450.00   1000.00      65400      664007654 妮可·罗宾                                           5500.00   2400.00      66000      684007698 特拉法尔加·D·瓦铁尔·罗                             5655.00   1000.00      67860      688607782 贝波                                                 2450.00     20.00      29400      294207788 乌索普                                               3000.00                36000 7839 尾田_荣一郎                                          5000.00                60000 7844 弗兰奇                                               1500.00      0.00      18000      180007876 布鲁克                                               1100.00                13200 7900 甚平                                                 2000.00                24000 7902 香克斯                                               6000.00   1500.00      72000      735007934 托尼托尼·乔巴                                         800.68     10.00    9608.16    9618.167840 岸本_齐史                                            5000.00                60000 7709 Jinbe                                                3550.00    600.00      42600      432007699 夏奇                                                 2050.00    200.00      24600      248007700 佩金                                                 3000.00    200.00      36000      362007937 拉基·路                                             3600.00    500.00      43200      437007938 洛克斯达                                             2600.00    200.00      31200      314007783 强巴鲁                                               3600.00    200.00      43200      434007784 伊卡库                                               3000.00    200.00      36000      362007785 库里奥尼                                             3500.00    200.00      42000      422007935 本·贝克曼                                           5500.00                66000 7936 耶稣布                                               5500.00    500.00      66000      665006100 马歇尔·D·帝奇                                       5675.00                68100 6101 芝沙斯·巴沙斯                                        4321.00      5.00      51852      518576102 阿巴罗·皮萨罗                                        2540.00                30480 6103 范·奥卡                                             3450.00                41400 1000 Monkey·D·Luffy                                     5500.00                66000 1001 Trafalgar·D·Water·Law                             5800.00                69600 1002 Marshall·D·Teach                                   7800.00                93600 1003 Portgas·D·Ace                                      5500.00                66000 1004 Hagwar·D·Sauro                                     3450.00                41400 1005 Gol·D·Roger                                        7500.00                90000 1006 Monkey·D·Dragon                                    6550.00                78600 1007 Monkey·D·Garp                                      7890.00                94680 7701 Roronoa Zoro                                         2000.00    800.00      24000      248007702 Nami                                                 3000.00   1000.00      36000      370007703 Usopp                                                2500.00    500.00      30000      305007704 Sanji                                                2800.00   1200.00      33600      348007705 Tony Tony Chopper                                     100.00    300.00       1200       15007706 Nico Robin                                           5000.00    800.00      60000      608007707 Franky                                               2000.00    500.00      24000      245007708 Brook                                                3000.00    900.00      36000      3690045 rows selected

那么解决这个问题就需要用到一个函数 nvl(参数1,参数2)

该函数用于当参数1为空时,为参数1指定一个代替的值,为参数2

nvl(参数1,参数2)

那么可以把语句修改为:

SQL> select empno "员工编号",ename "姓名",sal "月薪",comm "佣金",sal*12 "年薪",sal*12+nvl(comm,0) "总收入" from emp;员工编号 姓名                                               月薪        佣金         年薪        总收入
----- -------------------------------------------------- --------- --------- ---------- ----------7369 文斯莫克·山治                                        3200.00    800.00      38400      392007499 罗罗诺亚·索隆                                        3450.00    300.00      41400      417007521 娜美                                                 4560.00    500.00      54720      552207566 蒙奇·D·路飞                                         5450.00   1000.00      65400      664007654 妮可·罗宾                                           5500.00   2400.00      66000      684007698 特拉法尔加·D·瓦铁尔·罗                             5655.00   1000.00      67860      688607782 贝波                                                 2450.00     20.00      29400      294207788 乌索普                                               3000.00                36000      360007839 尾田_荣一郎                                          5000.00                60000      600007844 弗兰奇                                               1500.00      0.00      18000      180007876 布鲁克                                               1100.00                13200      132007900 甚平                                                 2000.00                24000      240007902 香克斯                                               6000.00   1500.00      72000      735007934 托尼托尼·乔巴                                         800.68     10.00    9608.16    9618.167840 岸本_齐史                                            5000.00                60000      600007709 Jinbe                                                3550.00    600.00      42600      432007699 夏奇                                                 2050.00    200.00      24600      248007700 佩金                                                 3000.00    200.00      36000      362007937 拉基·路                                             3600.00    500.00      43200      437007938 洛克斯达                                             2600.00    200.00      31200      314007783 强巴鲁                                               3600.00    200.00      43200      434007784 伊卡库                                               3000.00    200.00      36000      362007785 库里奥尼                                             3500.00    200.00      42000      422007935 本·贝克曼                                           5500.00                66000      660007936 耶稣布                                               5500.00    500.00      66000      665006100 马歇尔·D·帝奇                                       5675.00                68100      681006101 芝沙斯·巴沙斯                                        4321.00      5.00      51852      518576102 阿巴罗·皮萨罗                                        2540.00                30480      304806103 范·奥卡                                             3450.00                41400      414001000 Monkey·D·Luffy                                     5500.00                66000      660001001 Trafalgar·D·Water·Law                             5800.00                69600      696001002 Marshall·D·Teach                                   7800.00                93600      936001003 Portgas·D·Ace                                      5500.00                66000      660001004 Hagwar·D·Sauro                                     3450.00                41400      414001005 Gol·D·Roger                                        7500.00                90000      900001006 Monkey·D·Dragon                                    6550.00                78600      786001007 Monkey·D·Garp                                      7890.00                94680      946807701 Roronoa Zoro                                         2000.00    800.00      24000      248007702 Nami                                                 3000.00   1000.00      36000      370007703 Usopp                                                2500.00    500.00      30000      305007704 Sanji                                                2800.00   1200.00      33600      348007705 Tony Tony Chopper                                     100.00    300.00       1200       15007706 Nico Robin                                           5000.00    800.00      60000      608007707 Franky                                               2000.00    500.00      24000      245007708 Brook                                                3000.00    900.00      36000      3690045 rows selected

2.6 去重查询

使用 distinct 关键字:select distinct 列 from 表;

  1. 查询员工表不同部门的编号
SQL> select distinct deptno from emp;DEPTNO
------3020405010606 rows selected
  1. 查看不同部门的不同工种
SQL> select distinct deptno,job from emp;DEPTNO JOB
------ --------------------20 考古学家30 航海士20 厨师20 航海士60 海贼王40 干部40 副船长40 狙击手60 海军中将20 船长60 革命军首领20 狙击手20 船工40 船长50 提督50 狙击手20 医生30 船员60 队长30 船长20 音乐家20 舵手40 船员50 船长60 船长20 剑士10 漫画家60 提督28 rows selected

由以上两条查询可以看出,distinct 关键字写在select后面,作用于后面全部的列

3. where 条件查询

SELECT *|{[DISTINCT] column |expression [alias],...}FROM 表名 [WHERE expression]

3.1 使用比较运算符

可以使用的比较运算符: > , < , = , >= , <= , != , <> , between and

  1. 查询部门ID为20的员工
SQL> select ename,deptno from emp where deptno=20;ENAME                                              DEPTNO
-------------------------------------------------- ------
文斯莫克·山治                                          20
罗罗诺亚·索隆                                          20
娜美                                                   20
蒙奇·D·路飞                                           20
妮可·罗宾                                             20
乌索普                                                 20
弗兰奇                                                 20
布鲁克                                                 20
甚平                                                   20
托尼托尼·乔巴                                          20
Jinbe                                                  20
Roronoa Zoro                                           20
Nami                                                   20
Usopp                                                  20
Sanji                                                  20
Tony Tony Chopper                                      20
Nico Robin                                             20
Franky                                                 20
Brook                                                  2019 rows selected
  1. 查询员工名字为 Nico Robin 的员工信息

注意:如果字段的值是字符串的话,描述的时候要加上 ’ ’ 两个单引号

SQL> select ename,deptno from emp where ename='Nico Robin';ENAME                                              DEPTNO
-------------------------------------------------- ------
Nico Robin                                             20
  1. 查询薪水不等于5500员工的信息
SQL> select ename,sal from emp where sal!=5500;
SQL> select ename,sal from emp where sal<>5500;ENAME                                                    SAL
-------------------------------------------------- ---------
文斯莫克·山治                                        3200.00
罗罗诺亚·索隆                                        3450.00
娜美                                                 4560.00
蒙奇·D·路飞                                         5450.00
特拉法尔加·D·瓦铁尔·罗                             5655.00
贝波                                                 2450.00
乌索普                                               3000.00
尾田_荣一郎                                          5000.00
弗兰奇                                               1500.00
布鲁克                                               1100.00
甚平                                                 2000.00
香克斯                                               6000.00
托尼托尼·乔巴                                         800.68
岸本_齐史                                            5000.00
Jinbe                                                3550.00
夏奇                                                 2050.00
佩金                                                 3000.00
拉基·路                                             3600.00
洛克斯达                                             2600.00
强巴鲁                                               3600.00
伊卡库                                               3000.00
库里奥尼                                             3500.00
马歇尔·D·帝奇                                       5675.00
芝沙斯·巴沙斯                                        4321.00
阿巴罗·皮萨罗                                        2540.00
范·奥卡                                             3450.00
Trafalgar·D·Water·Law                             5800.00
Marshall·D·Teach                                   7800.00
Hagwar·D·Sauro                                     3450.00
Gol·D·Roger                                        7500.00
Monkey·D·Dragon                                    6550.00
Monkey·D·Garp                                      7890.00
Roronoa Zoro                                         2000.00
Nami                                                 3000.00
Usopp                                                2500.00
Sanji                                                2800.00
Tony Tony Chopper                                     100.00
Nico Robin                                           5000.00
Franky                                               2000.00
Brook                                                3000.0040 rows selected
  1. 查询工资介于 1000 - 2000 之间的员工的信息
SQL> select ename,sal from emp where sal between 1000 and 2000;ENAME                                                    SAL
-------------------------------------------------- ---------
弗兰奇                                               1500.00
布鲁克                                               1100.00
甚平                                                 2000.00
Roronoa Zoro                                         2000.00
Franky                                               2000.00

3.2 使用逻辑运算符

逻辑运算符包括:
或: or
与: and
非: not

  1. 查询部门ID为10, 或者部门ID为20 的员工信息
SQL> select ename,deptno from emp where deptno=10 or deptno=20;
ENAME                                              DEPTNO
-------------------------------------------------- ------
文斯莫克·山治                                          20
罗罗诺亚·索隆                                          20
娜美                                                   20
蒙奇·D·路飞                                           20
妮可·罗宾                                             20
乌索普                                                 20
尾田_荣一郎                                            10
弗兰奇                                                 20
布鲁克                                                 20
甚平                                                   20
托尼托尼·乔巴                                          20
岸本_齐史                                              10
Jinbe                                                  20
Roronoa Zoro                                           20
Nami                                                   20
Usopp                                                  20
Sanji                                                  20
Tony Tony Chopper                                      20
Nico Robin                                             20
Franky                                                 20
Brook                                                  2021 rows selected
  1. 查询部门ID为 20, 并且工资为 5500 的员工信息
SQL> select ename,sal,deptno from emp where deptno=20 and sal=5500;ENAME                                                    SAL DEPTNO
-------------------------------------------------- --------- ------
妮可·罗宾                                           5500.00     20
  1. 查询1981年2月(含2月)到82年2月(不含2月)入职的员工信息
-- 需要使用日期转换函数 to_date() ,可以将字符串类型转换为日期,然后通过日期的比较来进行判断
to_char('1981/2/1', 'yyyy-mm-dd'),to_char('1982/1/31','yyyy-mm-dd')SQL> select ename, hiredate from emp where hiredate>=to_date('1981/2/1', 'yyyy-mm-dd') and hiredate<=to_date('1982/1/31','yyyy-mm-dd');ENAME                                              HIREDATE
-------------------------------------------------- -----------
罗罗诺亚·索隆                                      1981/2/20
娜美                                               1981/2/22
蒙奇·D·路飞                                       1981/4/2
妮可·罗宾                                         1981/9/28
特拉法尔加·D·瓦铁尔·罗                           1981/5/1
贝波                                               1981/6/9
尾田_荣一郎                                        1981/11/17
弗兰奇                                             1981/9/8
甚平                                               1981/12/3
香克斯                                             1981/12/3
托尼托尼·乔巴                                      1982/1/23
岸本_齐史                                          1981/11/17
夏奇                                               1981/5/1
佩金                                               1981/5/1
强巴鲁                                             1981/5/1
伊卡库                                             1981/5/1
库里奥尼                                           1981/5/117 rows selected-- 数据库中日期和字符直接是可以自动转换的
-- 要求日期格式和字符串格式能匹配上就可以进行比较, 如果格式对不上就不能比较
-- 数据库中日期的默认存储形式: NLS_DATE_FORMAT   DD-MON-RR
-- 不推荐使用这种方式, 适用性不强
select * from emp where hiredate>'01-2月-81' and hiredate<='31-1月-82';
  1. 查询佣金 为空 的员工的信息 - null
    查询佣金 不为空 的员工的信息 - null
-- 如何判断空字段
-- 使用 is null 关键字,判断不为空要使用 is not null 关键字
--如果使用 =null 或者 !=null ,这两个判断得到的结果都是false,则不能进行正确的判断SQL> select ename, comm from emp where comm is null;ENAME                                                   COMM
-------------------------------------------------- ---------
乌索普                                             
尾田_荣一郎                                        
布鲁克                                             
甚平                                               
岸本_齐史                                          
本·贝克曼                                         
马歇尔·D·帝奇                                     
阿巴罗·皮萨罗                                      
范·奥卡                                           
Monkey·D·Luffy                                   
Trafalgar·D·Water·Law                           
Marshall·D·Teach                                 
Portgas·D·Ace                                    
Hagwar·D·Sauro                                   
Gol·D·Roger                                      
Monkey·D·Dragon                                  
Monkey·D·Garp                                    17 rows selectedSQL> select ename, comm from emp where comm is not null;ENAME                                                   COMM
-------------------------------------------------- ---------
文斯莫克·山治                                         800.00
罗罗诺亚·索隆                                         300.00
娜美                                                  500.00
蒙奇·D·路飞                                         1000.00
妮可·罗宾                                           2400.00
特拉法尔加·D·瓦铁尔·罗                             1000.00
贝波                                                   20.00
弗兰奇                                                  0.00
香克斯                                               1500.00
托尼托尼·乔巴                                          10.00
Jinbe                                                 600.00
夏奇                                                  200.00
佩金                                                  200.00
拉基·路                                              500.00
洛克斯达                                              200.00
强巴鲁                                                200.00
伊卡库                                                200.00
库里奥尼                                              200.00
耶稣布                                                500.00
芝沙斯·巴沙斯                                           5.00
Roronoa Zoro                                          800.00
Nami                                                 1000.00
Usopp                                                 500.00
Sanji                                                1200.00
Tony Tony Chopper                                     300.00
Nico Robin                                            800.00
Franky                                                500.00
Brook                                                 900.0028 rows selected
  1. 查询部门编号为 20 或者部门编号为 30 并且工资为 3000 的员工信息.
-- 逻辑比较符使用的时候要注意优先级:
-- not > and > or
-- 如果要修改优先级,需要加上()括号
SQL> select deptno, sal from emp where (deptno=20 or deptno=30) and sal=3000;DEPTNO       SAL
------ ---------20   3000.0030   3000.0030   3000.0020   3000.0020   3000.00

3.3 使用in集合

集合的表示:in (元素, 元素, 元素)
语法格式: in() -> 表示要判断的数据在集合里边, 只有集合中有一个元素满足判断条件即可,in集合相当于or

  1. 查询部门ID为10, 或者部门ID为20的员工的信息
-- 如果使用逻辑运算符
SQL> select ename, deptno from emp where deptno=10 or deptno=20;-- 使用in集合
SQL> select ename, deptno from emp where deptno in(10,20);ENAME                                              DEPTNO
-------------------------------------------------- ------
文斯莫克·山治                                          20
罗罗诺亚·索隆                                          20
娜美                                                   20
蒙奇·D·路飞                                           20
妮可·罗宾                                             20
乌索普                                                 20
尾田_荣一郎                                            10
弗兰奇                                                 20
布鲁克                                                 20
甚平                                                   20
托尼托尼·乔巴                                          20
岸本_齐史                                              10
Jinbe                                                  20
Roronoa Zoro                                           20
Nami                                                   20
Usopp                                                  20
Sanji                                                  20
Tony Tony Chopper                                      20
Nico Robin                                             20
Franky                                                 20
Brook                                                  2021 rows selected-- in集合可不可以出现null,比如:in(10,20,null)
-- in集合相当于是or操作,而与null的判断恒为false,所以不会影响结果的产生,如果误写上去不会造成查询的影响
SQL> select ename, deptno from emp where deptno in(10,20,null);
  1. 查询部门ID不为(10 和 部门ID20)的员工的信息
-- not in 表示不在集合中,查询以上信息可以使用not in
-- not in 是相当于 and 比较,不等于元素1 and 不等于元素2 。。。-- 使用逻辑运算符进行查询
SQL> select ename, deptno from emp where deptno!=10 and deptno!=20;-- 使用not in集合
SQL> select ename, deptno from emp where deptno not in(10,20);ENAME                                              DEPTNO
-------------------------------------------------- ------
特拉法尔加·D·瓦铁尔·罗                               30
贝波                                                   30
香克斯                                                 40
夏奇                                                   30
佩金                                                   30
拉基·路                                               40
洛克斯达                                               40
强巴鲁                                                 30
伊卡库                                                 30
库里奥尼                                               30
本·贝克曼                                             40
耶稣布                                                 40
马歇尔·D·帝奇                                         50
芝沙斯·巴沙斯                                          50
阿巴罗·皮萨罗                                          50
范·奥卡                                               50
Monkey·D·Luffy                                       60
Trafalgar·D·Water·Law                               60
Marshall·D·Teach                                     60
Portgas·D·Ace                                        60
Hagwar·D·Sauro                                       60
Gol·D·Roger                                          60
Monkey·D·Dragon                                      60
Monkey·D·Garp                                        6024 rows selected-- not in中是否可以加null?   不可以!
-- null与值的判断得到的结果是false,而not in做的是and的逻辑判断,出现一个false,则无法查询到任何的记录
-- 结论:如果在not in 集合中出现了null,查询结果为空
SQL> select ename, deptno from emp where deptno not in(10,20,null);ENAME                                              DEPTNO
-------------------------------------------------- ------

3.4 like 模糊查询

在sql查询中, like 关键字出现在where 语句中字段名的后边, 字段值是前边
模糊查找中需要使用通配符, 常用的有两个:

  • % - 匹配任意多个字符
    • 0个或者1个或者多个
  • _ - 匹配一个字符
  1. 查询员工名字中有D的员工信息
SQL> select ename from emp where ename like '%D%';ENAME
--------------------------------------------------
蒙奇·D·路飞
特拉法尔加·D·瓦铁尔·罗
马歇尔·D·帝奇
Monkey·D·Luffy
Trafalgar·D·Water·Law
Marshall·D·Teach
Portgas·D·Ace
Hagwar·D·Sauro
Gol·D·Roger
Monkey·D·Dragon
Monkey·D·Garp11 rows selected
  1. 查询员工编号为79开头的员工信息
SQL> select empno from emp where empno like '79%';EMPNO
-----79007902793479357936793779387 rows selected
  1. 查询名字是四个字母的员工信息
SQL> select ename from emp where ename like '____';ENAME
--------------------------------------------------
拉基·路
洛克斯达
库里奥尼
范·奥卡
Nami
  1. 查询姓名中带 _ 的员工信息
-- 模糊查询中需要查询的普通字符串中有一个 _ ,那么需要做的就是对 _ 进行转义
-- 使用 escape 关键字进行转义,sql中没有一个固定的转义字符,所以需要自定义一个转义字符,使用escape
SQL> select ename from emp where ename like '%*_%' escape '*';ENAME
--------------------------------------------------
尾田_荣一郎
岸本_齐史--其中 escape 指定了 * 为转义字符,那么跟在它后面的 _ 被转义成了普通的字符

4. 排序

-- 排序的关键字:order by
-- order by 有两种排序的方式:asc升序和desc降序,默认是asc升序,默认可不写
select 列名|表达式 from 表名 where 条件 order by 列名|别名|表达式|number(序号) asc|desc;

4.1 使用列名排序

  1. 员工信息按照入职先后排序
-- 升序
SQL> select ename,hiredate from emp order by hiredate;ENAME                                              HIREDATE
-------------------------------------------------- -----------
文斯莫克·山治                                      1980/12/17
Brook                                              1980/12/17
Franky                                             1980/12/17
Nico Robin                                         1980/12/17
Roronoa Zoro                                       1980/12/17
Sanji                                              1980/12/17
  1. 员工薪水从高到低排序
SQL> select ename, sal from emp order by sal desc;ENAME                                                    SAL
-------------------------------------------------- ---------
Monkey·D·Garp                                      7890.00
Marshall·D·Teach                                   7800.00
Gol·D·Roger                                        7500.00
Monkey·D·Dragon                                    6550.00
香克斯                                               6000.00
Trafalgar·D·Water·Law                             5800.00
马歇尔·D·帝奇                                       5675.00
  1. 查询员工信息按照 佣金 逆序
SQL> select ename, comm from emp order by comm desc;
-- 当使用该语句时会发现一个问题,所有的comm为null的记录全部显示在最上面
-- 那么也就是null在排序的时候当作最大值来排序
-- 将值为 null 的记录显示在最下面,需要添加关键字:nulls last
SQL> select ename, comm from emp order by comm desc nulls last;ENAME                                                   COMM
-------------------------------------------------- ---------
妮可·罗宾                                           2400.00
香克斯                                               1500.00
Sanji                                                1200.00
蒙奇·D·路飞                                         1000.00
特拉法尔加·D·瓦铁尔·罗                             1000.00
Nami                                                 1000.00
Brook                                                 900.00
文斯莫克·山治                                         800.00
  1. 员工信息按照部门升序, 按照薪水降序排列
-- 当有多个嵌套排序时,在前一个排序规则后面接着写下一个排序规则即可
-- 先升序排序deptno ,当deptno相等的时候,再降序排序sal
SQL> select ename, deptno, sal from emp order by deptno, sal desc;ENAME                                              DEPTNO       SAL
-------------------------------------------------- ------ ---------
岸本_齐史                                              10   5000.00
尾田_荣一郎                                            10   5000.00
妮可·罗宾                                             20   5500.00
蒙奇·D·路飞                                           20   5450.00
Nico Robin                                             20   5000.00
娜美                                                   20   4560.00
Jinbe                                                  20   3550.00
罗罗诺亚·索隆                                          20   3450.00
文斯莫克·山治                                          20   3200.00
Brook                                                  20   3000.00
乌索普                                                 20   3000.00
Nami                                                   20   3000.00
Sanji                                                  20   2800.00
Usopp                                                  20   2500.00
甚平                                                   20   2000.00
Franky                                                 20   2000.00
Roronoa Zoro                                           20   2000.00
弗兰奇                                                 20   1500.00
布鲁克                                                 20   1100.00
托尼托尼·乔巴                                          20    800.68
Tony Tony Chopper                                      20    100.00
特拉法尔加·D·瓦铁尔·罗                               30   5655.00
强巴鲁                                                 30   3600.00
库里奥尼                                               30   3500.00
佩金                                                   30   3000.00
伊卡库                                                 30   3000.00
贝波                                                   30   2450.00
夏奇                                                   30   2050.00
香克斯                                                 40   6000.00
耶稣布                                                 40   5500.00
本·贝克曼                                             40   5500.00
拉基·路                                               40   3600.00
洛克斯达                                               40   2600.00
马歇尔·D·帝奇                                         50   5675.00
芝沙斯·巴沙斯                                          50   4321.00
范·奥卡                                               50   3450.00
阿巴罗·皮萨罗                                          50   2540.00
Monkey·D·Garp                                        60   7890.00
Marshall·D·Teach                                     60   7800.00
Gol·D·Roger                                          60   7500.00
Monkey·D·Dragon                                      60   6550.00
Trafalgar·D·Water·Law                               60   5800.00
Portgas·D·Ace                                        60   5500.00
Monkey·D·Luffy                                       60   5500.00
Hagwar·D·Sauro                                       60   3450.0045 rows selected

4.2 使用序号排序

-- 序号指的是在查询字段在结果集中的位置,位置编号从1号开始
-- 假如有:select a,b,c,d ,那么a就是1号,b就是2号,c就是3号,d就是4号
-- order by 指定编号    即可实现排序

查询员工编号, 员工姓名和工资, 按照 工资的序号 进行排序

SQL> select empno, ename, sal from emp order by 3 desc;EMPNO ENAME                                                    SAL
----- -------------------------------------------------- ---------1007 Monkey·D·Garp                                      7890.001002 Marshall·D·Teach                                   7800.001005 Gol·D·Roger                                        7500.001006 Monkey·D·Dragon                                    6550.007902 香克斯                                               6000.001001 Trafalgar·D·Water·Law                             5800.006100 马歇尔·D·帝奇                                       5675.007698 特拉法尔加·D·瓦铁尔·罗                             5655.00-- sql语句中的 3 号代表sal

4.3 使用别名排序

-- 别名: 就是数据库表中给某个字段设置的别名. 

按照员工的年收入进行排序

SQL> select ename "姓名", sal*12+nvl(comm,0) "年收入" from emp order by "年收入" desc; 姓名                                                      年收入
-------------------------------------------------- ----------
Monkey·D·Garp                                         94680
Marshall·D·Teach                                      93600
Gol·D·Roger                                           90000
Monkey·D·Dragon                                       78600
香克斯                                                  73500
Trafalgar·D·Water·Law                                69600
特拉法尔加·D·瓦铁尔·罗                                68860
妮可·罗宾                                              68400
马歇尔·D·帝奇                                          68100
耶稣布                                                  66500-- 直接在order by 后面指定前面设定好的别名即可

4.4 使用表达式排序

按照员工的年收入进行排序

SQL> select ename "姓名", sal*12+nvl(comm,0) "年收入" from emp order by sal*12+nvl(comm,0) desc;姓名                                                      年收入
-------------------------------------------------- ----------
Monkey·D·Garp                                         94680
Marshall·D·Teach                                      93600
Gol·D·Roger                                           90000
Monkey·D·Dragon                                       78600
香克斯                                                  73500
Trafalgar·D·Water·Law                                69600
特拉法尔加·D·瓦铁尔·罗                                68860
妮可·罗宾                                              68400
马歇尔·D·帝奇                                          68100
耶稣布                                                  66500--直接在 order by 后面指定表达式接即可

5. 单行函数

任何东西,只要它能接收输入,对输入进行加工并产生输出,它就可以被称为函数

单行函数只对表中的一行数据进行操作,并且对每一行数据只产生一个输出结果。单行函数可以接受一个或多个参数,其产生的输出结果的数据类型可能与参数的数据类型不同。

单行函数分为五种类型:字符函数、数值函数、日期函数、转换函数、通用函数

5.1 字符串相关函数

  • LOWER、UPPER、INITCAP

    -- LOWER(列名|表达式):	该函数是把字符转换成小写。 
    -- UPPER(列名|表达式):	该函数是把字符转换成大写。
    -- INITCAP(列名|表达式):	该函数是把每个字的头一个字符转换成大写,其余的转换成小写。-- dual是一个虚表, 没有数据, 主要作用是和select配合使用, 组成一个完整的sql语句
    -- 虚表是一个没有任何数据的表, 在select的时候使用dual目的是将这个sql语句补充完整, 但是这个dual在这个查询语句中起不到任何作用-- lower() 字母转换为小写
    SQL> select lower(ename) from emp;
    SQL> select lower('Hello WORLD') from dual;LOWER('HELLOWORLD')
    -------------------
    hello world-- upper() 字母转换为大写
    SQL> select upper(ename) from emp;
    SQL> select upper('Hello World') from dual;UPPER('HELLOWORLD')
    -------------------
    HELLO WORLD-- initcap(), 单词首字母转换为大写
    SQL> select initcap(ename) from emp;
    SQL> select initcap('hello world') from dual; INITCAP('HELLOWORLD')
    ---------------------
    Hello World
    
  • CONCAT

    -- 有两个参数,连接两个字符串
    -- CONCAT(列名|表达式,列名|表达式):该函数是把头一个字符串和第二个字符串连接成一个字符串。 
    -- 注意事项:-- 该函数只能连接两个字符串, 如果需要连接多个, 需要使用 ||-- 使用 函数 concat() 连接两个字符串
    SQL> select concat (empno, ename) from emp;
    SQL> select concat('hello,', ' world') from dual;CONCAT('HELLO,','WORLD')
    ------------------------
    hello, world-- 使用 || 实现多个字符串的连接
    SQL> select empno || '-' || ename || sal from emp;
    SQL> select 'hello world' || 'abcdefg' || 'xxx' from dual;'HELLOWORLD'||'ABCDEFG'||'XXX'
    ------------------------------
    hello worldabcdefgxxx
    
  • SUBSTR

    -- SUBSTR(列名|表达式,pos,[len]):字符串截取, 返回的字符串是从第pos个字符开始,其长度为len。SQL> select substr(ename, 1, 5) from emp;
    -- 从第8个字符开始, 截取长度为5的子字符串
    SQL> select substr('hello, world', 8, 5) from dual;SUBSTR('HELLO,WORLD',8,5)
    -------------------------
    world
    
  • LENGTH、LENGTHB

    -- LENGTH(列名|表达式): 该函数是返回列中或表达式中         字符串 的长度。
    -- LENGTHB(列名|表达式):该函数是返回列中或表达式中字符串的   字节  的长度。-- 查询字符串长度
    SQL> select dname, length(dname) from dept;DNAME                                              LENGTH(DNAME)
    -------------------------------------------------- -------------
    黑胡子海贼团                                                    6
    黑桃海贼团                                                     5
    D之一族                                                        4
    周刊少年Jump                                                   8
    草帽海贼团                                                     5
    红心海贼团                                                     5
    红发海贼团                                                     57 rows selected-- 查询字节数
    SQL> select dname, lengthb(dname) from dept;DNAME                                              LENGTHB(DNAME)
    -------------------------------------------------- --------------
    黑胡子海贼团                                                    18
    黑桃海贼团                                                     15
    D之一族                                                        10
    周刊少年Jump                                                   16
    草帽海贼团                                                     15
    红心海贼团                                                     15
    红发海贼团                                                     157 rows selected-- 判断字符串中有没有中文
    SQL> select ename from emp where length(ename)=lengthb(ename);ENAME
    --------------------------------------------------
    Jinbe
    Roronoa Zoro
    Nami
    Usopp
    Sanji
    Tony Tony Chopper
    Nico Robin
    Franky
    Brook9 rows selected
  • INSTR

    -- INSTR(列名|表达式,'子字符串',[m],[n]):该函数是返回所给子字符串出现的位置,没有返回0-- 参数: m表示从第m个字符开始搜索,n表示所给字符串出现的次数,它们的默认值都为1。
    SQL> select ename, instr(ename, 'D', 2, 2) from emp;
    ENAME                           INSTR(ENAME,'D',2,2)
    Portgas·D·Ace                            0
    Hagwar·D·Sauro                           0
    Gol·D·Roger                              0
    Monkey·D·Dragon                          10
    Monkey·D·Garp                            0
    Roronoa Zoro                             0
    
  • TRIM

    -- TRIM([leading|trailing|both] '要去掉的字符' FROM '源字符串'):去掉字符串两端的指定字符-- TRIM('要去掉的字符' FROM '源字符串'): 默认是both 去掉两端的指定字符-- 去空格(前后都去掉)
    SQL> select trim('     hello, world       ')  || 'end' from dual;TRIM('HELLO,WORLD')||'END'
    --------------------------
    hello, worldend-- 其他字符
    -- 去掉头部的 *
    SQL> select trim(leading '*' from '*******hello, world*******')  || 'end' from dual;TRIM(LEADING'*'FROM'*******HELLO,WORLD*******')||'END'
    ------------------------------------------------------
    hello, world*******end-- 去掉尾部的 *
    SQL> select trim(trailing '*' from '*******hello, world*******')  || 'end' from dual;TRIM(TRAILING'*'FROM'*******HELLO,WORLD*******')||'END'
    -------------------------------------------------------
    *******hello, worldend-- 头部和尾部的 * 都去掉
    SQL> select trim(both '*' from '*******hello, world*******')  || 'end' from dual;TRIM(BOTH'*'FROM'*******HELLO,WORLD*******')||'END'
    ---------------------------------------------------
    hello, worldend
    
  • REPLACE

    -- REPLACE(正文表达式,old,new)
    --	该函数是在"正文表达式"中查找"old",如果找到了就用"new"替代。 
    -- 注意:该函数会替换所有正文表达式中包含的old为new
    SQL> select replace('aaaaccbb', 'cc', 'xx') from dual;REPLACE('AAAACCBB','CC','XX')
    -----------------------------
    aaaaxxbb
    
  • LPAD、RPAD

    -- LPAD(列名|表达式, len, ch): 返回len长度的字符串, 如果不够len, 在字符串左侧填充ch
    -- RPAD(列名|表达式, len, ch): 返回len长度的字符串, 如果不够len, 在字符串右侧填充ch
    -- 使用这两个函数也可以用来做截断,即指定比当前字符串len小的一个值SQL> select lpad('aaaaccbb', 12, '*') from dual;-- 在左侧填充*, 最终得到12个字节
    LPAD('AAAACCBB',12,'*')
    -----------------------
    ****aaaaccbb-- 在左侧填充*, 最终得到6个字节, 如果字符串长度>=6字节, 不需要填充并且删除多余的部分
    SQL> select lpad('aaaaccbb', 6, '*') from dual;LPAD('AAAACCBB',6,'*')
    ----------------------
    aaaacc-- 在右侧填充*, 最终得到16个字节
    SQL> select rpad('aaaaccbb', 16, '*') from dual;RPAD('AAAACCBB',16,'*')
    -----------------------
    aaaaccbb********
    

5.2 数值函数

  • ROUND

    -- ROUND(列名|表达式,[n]):该函数将列名或表达式所表示的数值四舍五入到小数点后的n位。
    SQL> select round(12.346, 2) from dual;ROUND(12.346,2)
    ---------------12.35SQL> select round(12.346) from dual;ROUND(12.346)
    -------------12SQL> select round(12.546) from dual;ROUND(12.546)
    -------------13
    
  • TRUNC

    -- TRUNC(列名|表达式,[n]):该函数将列名或表达式所表示的数值截取到小数点后的n位。
    SQL> select trunc(12.546) from dual;TRUNC(12.546)
    -------------	12SQL> select trunc(12.546, 2) from dual;TRUNC(12.546,2)
    ---------------12.54
    
  • MOD

    -- MOD(m,n):该函数将m除以n并取余数。
    SQL> select mod(5, 3) from dual;MOD(5,3)
    ----------2
    
  • CEIL、FLOOR

    -- CEIL(m): 向上取整
    -- FLOOR(m):向下取整
    SQL> select ceil(12.6) from dual;CEIL(12.6)
    ----------13SQL> select ceil(12.1) from dual;CEIL(12.1)
    ----------13SQL> select floor(12.1) from dual;FLOOR(12.1)
    -----------12SQL> select floor(12.9) from dual;FLOOR(12.9)
    -----------12
    

5.3 转换函数

  • TO_CHAR

    • 日期转换

      -- TO_CHAR(日期,‘fmt'):将日期型数据转换成指定模式(fmt)的字符串SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS')
      ---------------------------------------
      2019-11-28 17:20:09SQL> select to_char(sysdate, 'yyyy/mm/dd -- hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YYYY/MM/DD--HH24:MI:SS')
      -----------------------------------------
      2019/11/28 -- 17:20:22
      

      常用的日期模式 (不区分大小写):

      日期模式 解释
      YYYY 完整的年份数字表示(如2001)
      YEAR 年份的英文表示(如NINETEEN EIGHTY-SEVEN)
      MM 用两位数字来表示月份
      MONTH/MON 月份中文名
      DAY/DY 表示星期几
      DD 使用两位数字表示日期
      YY/RR 使用两位数字表示年份
      HH/HH24 HH24表示24小时计时法的时间, hh需要在时间尾部加 am
      MI 使用两位数表示分钟
      SS 使用两位数表示秒数
      # MONTH/MON: 如果月份是用英文表示的, month表示完整的英文月份, mon表示英文月份的缩写
      # DAY/DY: 如果月份是用英文表示的, DAY表示星期几的完整的英文, DY用3个英文字符的缩写来表示星期几
      
    • 数字转换

      -- TO_CHAR(数字,‘fmt'):该函数的这种格式把数字型数据转换成变长字符串。
      SQL> select ename, to_char(sal, 'L9,999.99') from emp;ENAME                                              TO_CHAR(SAL,'L9,999.99')
      文斯莫克·山治                                              ¥3,200.00
      罗罗诺亚·索隆                                              ¥3,450.00
      娜美                                                       ¥4,560.00
      蒙奇·D·路飞                                               ¥5,450.00
      妮可·罗宾                                                  ¥5,500.00
      特拉法尔加·D·瓦铁尔·罗                                   ¥5,655.00
      
      • 常用的数字模式

        数字模式 解释
        9 表示数字
        0 表示数字
        $ 显示美元符号
        L 显示本地货币符号
        . 显示小数点
        , 显示千位符号, 如: 9,999
        MI 在数的右边显示减号
        PR 把负数用尖括号扩起来
  • TO_NUMBER

    -- TO_NUMBER(字符串 ,'fmt‘):该函数把字符串转换成数字。SQL> select to_number('¥3,090.73', 'L9,999.99') from dual;TO_NUMBER('¥3,090.73','L9,999.99')
    ----------------------------------3090.73
    
  • TO_DATE

    -- TO_DATE(字符串 ,'fmt’):该函数把字符串转换成日期型数据。
    SQL> select to_date('1970/01/01 13:24:34', 'yyyy/mm/dd hh24:mi:ss') from dual;TO_DATE('1970/01/0113:24:34','YYYY/MM/DDHH24:MI:SS')
    ----------------------------------------------------
    1970/1/1 13:24:34
    
  • 隐式转换

    1. 将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成数字型(NUMBER);

    2. 将变长字符型(VARCHAR2)或定长字符型(CHAR)转换成日期型(DATE);

    3. 将数字型(NUMBER)转换成变长字符型(VARCHAR2);

    4. 将日期型(DATE)转换成变长字符型(VARCHAR2)。

5.4 日期函数

  • SYSDATE

    SYSDATE是我们在Oracle开发中经常要用到的一种单行函数(single row function), 该函数用以返回当前的日期与时间,常和DUAL伪表一起合作。

    SYSDATE实际上指的是SYSDATE()函数,但是因为这个函数没有参量,所以这里可以省略()圆括号。通常用于获取数据库所在的操作系统的当前时间值的, 我们可以使用 TO_CHAR 函数来获得我们想要的SYSDATE日期格式 。

    注意:sysdate函数不要写括号,否则会出错

  • MONTHS_BETWEEN:

    -- MONTHS_BETWEEN(日期1,日期2):该函数是返回日期1和日期2之间的月数, 返回值=日期1-日期2SQL> select months_between('11-1月-19', '9-10月-18') from dual;MONTHS_BETWEEN('11-1月-19','9-10月-18')
    -------------------------------------3.06451612903226SQL> select months_between('11-1月-19', '9-10月-19') from dual;MONTHS_BETWEEN('11-1月-19','9-10月-19')
    --------------------------------------8.93548387096774
    
  • ADD_MONTHS:

    -- ADD_MONTHS(日期,n):该函数是把n个月加到日期上。
    SQL> select add_months(sysdate, 10) from dual;ADD_MONTHS(SYSDATE,10)
    ----------------------
    2020/9/29 9:07:44
    
  • NEXT_DAY

    -- NEXT_DAY(日期,'星期几'|1-7):该函数返回指定日期的下一个星期几是多少号。
    SQL> select next_day(sysdate, '星期五') from dual;-- 星期一, 星期二, .....
    NEXT_DAY(SYSDATE,'星期五')
    -----------------------
    2019/12/6 9:09:39-- 1: 星期天, 2: 星期一, 3:星期二....
    SQL> select next_day(sysdate, 5) from dual;NEXT_DAY(SYSDATE,5)
    -------------------
    2019/12/5 9:10:24
    
  • LAST_DAY

    -- LAST_DAY(日期):该函数是返回该日期所在月的最后一天。
    SQL> select last_day('1-2月-19') from dual;LAST_DAY('1-2月-19')
    -------------------
    2019/2/28SQL> select last_day('1-2月-00') from dual;LAST_DAY('1-2月-00')
    -------------------
    2000/2/29
    
  • ROUND和TRUNC函数用于日期型数据

-- ROUND(日期,日期模式): 对指定日期四舍五入
-- TRUNC(日期,日期模式): 对指定日期截断SQL> select hiredate, round(hiredate, 'mm') from emp;HIREDATE    ROUND(HIREDATE,'MM')
----------- --------------------
1980/12/17  1981/1/1
1981/2/20   1981/3/1SQL> select hiredate, round(hiredate, 'yyyy') from emp;HIREDATE    ROUND(HIREDATE,'YYYY')
----------- ----------------------
1980/12/17  1981/1/1
1981/2/20   1981/1/1-- TRUNC(日期,日期模式): 对指定日期截断SQL> select hiredate, trunc(hiredate, 'mm') from emp;HIREDATE    TRUNC(HIREDATE,'MM')
----------- --------------------
1980/12/17  1980/12/1
1981/2/20   1981/2/1SQL> select hiredate, trunc(hiredate, 'yyyy') from emp;HIREDATE    TRUNC(HIREDATE,'YYYY')
----------- ----------------------
1980/12/17  1980/1/1
1981/2/20   1981/1/1
1981/2/22   1981/1/1

5.5 通用函数

  • NVL

    -- NVL(expr1, expr2): -- 如果oracle第一个参数为空那么显示第二个参数的值,-- 如果第一个参数的值不为空,则显示第一个参数本来的值
    SQL> select ename,NVL(comm, -1) from emp;
    
  • NVL2

    -- NVL2(expr1, expr2, expr3)-- 如果该函数的第一个参数为空那么显示第三个参数的值-- 如果第一个参数的值不为空,则显示第二个参数的值
    SQL> select ename, comm, nvl(comm,0), nvl2(comm, 0, 1) from emp;

ENAME COMM NVL(COMM,0) NVL2(COMM,0,1)


文斯莫克·山治 800.00 800 0
罗罗诺亚·索隆 300.00 300 0
娜美 500.00 500 0
蒙奇·D·路飞 1000.00 1000 0
妮可·罗宾 2400.00 2400 0
特拉法尔加·D·瓦铁尔·罗 1000.00 1000 0
贝波 20.00 20 0
乌索普 0 1
尾田_荣一郎 0 1
弗兰奇 0.00 0 0
布鲁克 0 1
甚平 0 1
香克斯 1500.00 1500 0
托尼托尼·乔巴 10.00 10 0
岸本_齐史 0 1

## 5.6 条件表达式```sql
sql> select ...,
CASE expr WHEN comparison_expr1 THEN return_expr1
     [WHEN comparison_expr2 THEN return_expr2
     WHEN comparison_exprn THEN return_exprn
     ELSE else_expr]
END
from table;-- 查询的sql语句语法:
select 列名|表达式  from 表名 [where 条件 order by 类名 asc|desc];
select 列名|带条件的表达式 from 表名;-- c语言条件判断: if ... else
-- sql条件判断:  when ... then ... when ... then ... else (当某个条件满足, 我就去干
什么)

老板打算给员工涨工资, 要求:
船长涨1000,厨师涨800,其他人涨400, 请将涨前,涨后的薪水列出。

ENAME                                              JOB                   涨薪前        涨薪后
-------------------------------------------------- -------------------- --------- ----------
文斯莫克·山治                                      厨师                   3200.00       4000
罗罗诺亚·索隆                                      剑士                   3450.00       3850
娜美                                               航海士                 4560.00       4960
蒙奇·D·路飞                                       船长                   5450.00       6450
妮可·罗宾                                         考古学家               5500.00       5900
特拉法尔加·D·瓦铁尔·罗                           船长                   5655.00       6655
贝波                                               航海士                 2450.00       2850
乌索普                                             狙击手                 3000.00       3400
尾田_荣一郎                                        漫画家                 5000.00       5400
弗兰奇                                             船工                   1500.00       1900
布鲁克                                             音乐家                 1100.00       1500
甚平                                               舵手                   2000.00       2400
香克斯                                             船长                   6000.00       7000
托尼托尼·乔巴                                      医生                    800.68    1200.68
岸本_齐史                                          漫画家                 5000.00       5400
Jinbe                                              舵手                   3550.00       3950
夏奇                                               船员                   2050.00       2450
佩金                                               船员                   3000.00       3400
拉基·路                                           干部                   3600.00       4000
洛克斯达                                           船员                   2600.00       3000
强巴鲁                                             船员                   3600.00       4000
伊卡库                                             船员                   3000.00       3400
库里奥尼                                           船员                   3500.00       3900
本·贝克曼                                         副船长                 5500.00       5900
耶稣布                                             狙击手                 5500.00       5900
马歇尔·D·帝奇                                     提督                   5675.00       6075
芝沙斯·巴沙斯                                      船长                   4321.00       5321
阿巴罗·皮萨罗                                      船长                   2540.00       3540
范·奥卡                                           狙击手                 3450.00       3850
Monkey·D·Luffy                                   船长                   5500.00       6500
Trafalgar·D·Water·Law                           船长                   5800.00       6800
Marshall·D·Teach                                 提督                   7800.00       8200
Portgas·D·Ace                                    队长                   5500.00       5900
Hagwar·D·Sauro                                   海军中将               3450.00       3850
Gol·D·Roger                                      海贼王                 7500.00       7900
Monkey·D·Dragon                                  革命军首领             6550.00       6950
Monkey·D·Garp                                    海军中将               7890.00       8290
Roronoa Zoro                                       剑士                   2000.00       2400
Nami                                               航海士                 3000.00       3400
Usopp                                              狙击手                 2500.00       2900
Sanji                                              厨师                   2800.00       3600
Tony Tony Chopper                                  医生                    100.00        500
Nico Robin                                         考古学家               5000.00       5400
Franky                                             船工                   2000.00       2400
Brook                                              音乐家                 3000.00       340045 rows selected

6. 多行函数

和单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数能在select或select的having
子句中使用,当用于select子串时常常都和GROUP BY一起使用。多行函数分为接收多个输入,返回一
个输出。

多行函数又称为分组函数,因为尝与group by 搭配分组使用。

6.1 分组函数

多行函数也可以称之为分组函数, 分组函数具有过滤空字段的功能.

  • COUNT(列名)

    -- 统计员工总数
    -- 只要ename的值不为空,则计算在内,计数+1
    SQL> select count(ename) from emp;COUNT(ENAME)
    ------------45-- count(*) 表示只要表中的记录不为全空,则计算在内
    SQL> select count(*) from emp;COUNT(*)
    ----------45-- 统计工种总数
    SQL> select count(job) from emp;COUNT(JOB)
    ----------45
    -- 以上的sql语句查询结果中有非常多的重复项,没有做去重的处理
    -- 去重使用distinct关键字,放在count()函数的括号里面
    SQL> select count(distinct job) from emp;COUNT(DISTINCTJOB)
    ------------------19
  • AVG(列名)

    -- 求员工的平均薪资
    SQL> select avg(sal) from emp;AVG(SAL)
    ----------
    3932.03733-- 求员工的平均佣金   单独使用avg不计算为null的记录
    SQL> select avg(comm) from emp;AVG(COMM)
    ----------
    583.392857
    
  • SUN(列名)

    -- 求员工的平均薪资
    SQL> select sum(sal)/count(*) from emp;SUM(SAL)/COUNT(sal	)
    -----------------3932.03733333333-- 求员工的平均佣金
    SQL> select sum(comm)/count(comm) from emp;SUM(COMM)/COUNT(COMM)
    ---------------------583.392857142857-- 如果使用count(*)作为除数,那么计算结果将与以上不同。
    -- 原因:count(comm)不统计comm为null的记录。count(*)统计了comm为null的记录,所以除数变大。
    SQL> select sum(comm)/count(*) from emp;SUM(COMM)/COUNT(*)
    ------------------363
  • MAX(列名)

    -- 求员工的最高工资
    SQL> select max(sal) from emp;MAX(SAL)
    ----------7890
    
  • MIN(列名)

    -- 求员工的最低工资
    SQL> select min(sal) from emp;MIN(SAL)
    ----------100
  • 在使用多行函数进行统计的时候, 如何将空字段也统计在内?

    • 使用nvl(comm,0)

    • SQL> select sum(comm)/count(nvl(comm,0)) from emp;SUM(COMM)/COUNT(NVL(COMM,0))
      ----------------------------363
      

6.2 分组统计

-- 基本格式
-- 按照group by后给定的表达式, 将from后的table进行分组, 针对每一组使用分组函数
-- 如果select后边的列名没有出现在分组函数中, 那么一定出现在group by的后边
select 列名1, 列名2, ..., 分组函数(列名) from 表名 where ... group by 列名1, 列名2 having ...;

结论:select后面写什么 group by后面就写什么,select后面的内容必须时group by后面内容的真子集。该内容不包括分组函数。

  1. 统计各个部门的平均工资
-- 根据部门进行分组, 然后再计算每个部门的平均薪资
-- 在进行分组统计的时候, 出现在select后边的字段名, 也必须出现在group by的后边,
-- 也就是说要对那些信息进行分组统计, 那么就在结果集中显示哪些信息
SQL> select deptno,avg(sal) from emp group by deptno order by deptno;DEPTNO   AVG(SAL)
------ ----------10       500020 2868.9831530 3322.1428540       464050     3996.560    6248.756 rows selected
  1. 统计各个部门不同工种的平均工资
-- 根据部门和工种进行分组,然后在组内进行平均工资的计算
SQL> select deptno, job, avg(sal) from emp group by deptno,job;DEPTNO JOB                    AVG(SAL)
------ -------------------- ----------20 考古学家                   525030 航海士                     245020 厨师                       300020 航海士                     378060 海贼王                     750040 干部                       360040 副船长                     550040 狙击手                     550060 海军中将                   567020 船长                       545060 革命军首领                 655020 狙击手                     275020 船工                       175040 船长                       600050 提督                       567550 狙击手                     345020 医生                     450.3430 船员                       303060 队长                       550030 船长                       565520 音乐家                     205020 舵手                       277540 船员                       260050 船长                     3430.560 船长                       565020 剑士                       272510 漫画家                     500060 提督                       780028 rows selected
  1. 统计哪些部门的平均工资高于4000
-- 先分组计算每个部门的平均工资,然后筛选出大于4000的
SQL> select deptno, avg(sal) from emp group by deptno having avg(sal)>4000;DEPTNO   AVG(SAL)
------ ----------40       464010       500060    6248.75
  1. 求20号部门的平均薪水
-- 有两种方法
-- 1. 先分组求出每个部门的平均薪水,然后筛选出部门号为20号的。
SQL> select deptno,avg(sal) from emp group by deptno having deptno=20;DEPTNO   AVG(SAL)
------ ----------20 2868.98315-- 2. 先筛选出部门号为20号的,然后使用分组求平均薪资
SQL> select deptno,avg(sal) from emp where deptno=20 group by deptno;DEPTNO   AVG(SAL)
------ ----------20 2868.98315-- 有关效率:方法2比方法1高
-- 原因:方法1计算了每个部门平均薪资后筛选出20号部门,方法2先筛选出20号部门后只计算20号部门内的数据,计算量来看方法2较少。
-- 结论:方法2更优

7. 总结oracle基础命令

  1. 使用sqlplus登陆到服务器:sqlplus / as sysdba
  2. 启动数据库实例:SQL> start up
  3. 关闭数据库实例:SQL> shutdown immediate
  4. 退出sqlplus客户端:quit
  5. 启动数据库监听器:lsnrctl start
  6. 关闭数据库监听器:lsnrctl stop
  7. 锁定用户:alter user 用户名 account lock;
  8. 解锁用户:alter user 用户名 account unlock;
  9. 修改用户密码:alter user 用户名 identified by 新密码;
  10. 查看当前语言环境:select userenv('language') from dual;
  11. 切换用户:conn 用户/密码 as 角色

在sql语句中什么时候使用单引号''什么时候使用双引号""? 字符串类型用单引号,别名用双引号。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 服务器和Servlet入门

    服务器和Servlet入门 一、软件架构 (一)C/S/架构:C/S架构即Client/Server(客户机/服务器)结构。图示:(二)B/S架构:B/S即Browser/Server(浏览器/服务器)结构。图示:(三)C/S与B/S对比优缺点总结C/S缺点:1、收硬件影响较大,需要配置较高 2、收设置环境影响较大,安…...

    2024/4/29 21:12:54
  2. 完美解决 git clone 下载速度慢的问题

    参考此博解决 git clone 下载慢,方法一亲测有用~...

    2024/4/29 21:12:50
  3. 非常实用的AndroidStudio首次安装配置

    给方法加注释模板 File->Settings->keymap->搜索fix doc comment->修改喜好的快捷键 ctrl+Alt+/ 抽取变量时自动添加m或s在开头 快速生成成员变量的快捷键是Ctrl+Alt+f主题修改:代码字体修改:修改控制台的字体关闭更新:添加api文档悬浮提示: AS默认是没有api文…...

    2024/4/29 21:12:47
  4. 刷题小记 (12) LeetCode 938 二叉搜索树的范围和

    LeetCode 938 2020.8.14 我的通过代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {public int rangeSumBST(TreeNode root, int L, …...

    2024/5/3 2:52:23
  5. 数组里的indexOf()用法和字符串indexOf()的区别

    字符串: html在线编辑器 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><p></p> <button onclick="myFunction()">点我&…...

    2024/4/29 21:12:38
  6. 深入理解Python中的GIL(全局解释器锁)

    前言:本博文主要讲解Python中的GIL(全局解释器锁),本人经过查阅多个资料,摒弃一些较官方的描述,用自己的语言整理并加以补充,如果有描述有误的地方,还望读者在评论区指出,谢谢! 文章目录一、GIL是什么二、为什么会有GIL三、GIL的副作用四、GIL的总结五、GIL面试题 一…...

    2024/4/29 21:12:34
  7. python-模块的制作

    模块的制作 建立一个普通的python文件,写一些moudelTest方法 # 模块的制作说明# __all__魔术变量的作用是 如果在一个文件中存在 __all__变量,那么也就意味着这个变量中的元素 # 会被from XXX import *时会被导入,对于import 方式来讲 无所谓 有没有 都可以全部的引用__all_…...

    2024/5/2 23:24:35
  8. 对于CSDN上字体及其颜色等排版技巧代码

    此博客主要用于自己写博客时候对格式的一些排版和改动1.&emsp;&emsp; 使用此代码可以实现首行全角缩进两字符(即中文两个字符),每一个&emsp;表示一个字符 2.&ensp;&ensp; 使用此代码可以实现首行半角缩进两字符(即英文两个字符),每一个&ensp;表示…...

    2024/5/1 17:27:24
  9. Spring Cloud Stream消息分区

    通过上一篇 Spring Cloud消息中间件抽象Stream,我们知道了Stream的概念模型以及使用方法。 对于一些特殊场景,我们希望那些具备相同特征的消息能够被同一个实例消费,这时候我们就需要对消息进行分区处理。 消费方配置 在Spring Cloud Stream中实现消息分区非常简单,我们可以…...

    2024/4/29 21:12:22
  10. java学习day15

    线程进程:系统进行资源分配和调用独立单元。每个进程都有自己系统资源的内存空间线程:又称轻量级进程,同时也是cup的基本调度单位。进程中一条执行线路,一个线程执行一个任务称为单线程,由多个线程组成,彼此间完成不同的工作,交替执行称为多线程进程与线程的关系:进程是…...

    2024/5/1 0:43:10
  11. risc-v版本xv6运行环境设置

    risc-v版本xv6运行环境设置 我打算写一系列文章,试着用来介绍risc-v版本xv6的源代码,xv6是MIT为其操作系统课程开发的教学操作系统。它的代码量不大,总共1万多行代码。代码量不算大,可以硬着头皮把它读完,并分享给大家,希望大家能够批评指正。首先从最基本的准备工作开始…...

    2024/5/3 4:21:45
  12. UOJ#554【UNR #4】挑战哈密顿【找哈密顿路径(调整法)】

    题目描述 Link 提交答案题 给一个有向图,求最长的不经过重复点和边的路径,保证无重边自环。 题目分析 直接看官方题解咯 在做了点三染色使得没有同色边的问题后,我们学到了提交答案题的姿势:调整法,找一个不会使答案变劣,并且可以一直进行下去的调整方法。(如果进入死胡…...

    2024/4/28 20:22:10
  13. 用python画类王者荣耀英雄能力多边形雷达图

    现有以下表格,我需要画成第二张图中的雷达图(类似fifa足球、王者荣耀里面的那种球员能力图)代码如下,mark,方便以后使用: #雷达图函数构建 import numpy as np import matplotlib.pyplot as plt import math import matplotlib.colors as mcolors# 导入中文 import matpl…...

    2024/4/29 21:12:10
  14. 关于ubuntu上,usb设备编号

    usb编号与插入的顺序有关,第一个插入的ttyUSB0, 第二个插入的ttyUSB1,以此类推,改变插入时间顺序,编号也不同;若拔掉其中一个设备,则剩下的设备编号仍保持不变。比如:ttyUSB0和ttyUSB1,将ttyUSB0拔掉,则ttyUSB1继续保持其编号,不会变成ttyUSB0;此时将刚刚拔掉的设备再…...

    2024/4/29 21:12:07
  15. IDEA配置服务器

    IDEA配置服务器 IDEA软件配置服务器先是给IDEA添加上服务器这样IDEA的服务器就配置好了web工程的服务器配置先创建web项目,创建完成之后,便于我们对页面的测试与发布,我们使用IDEA发布会比较方便步骤注意,我们在web项目中,可以创建文件夹,但是WEB-INF这个目录下浏览器是不…...

    2024/5/2 21:28:06
  16. Android 点击事件的三种实现方式(附有完整代码哟)

    当初入门学习的的点击事件有两种实现方式: 一种是直接使用setOnClickListener(new View.OnClickLstener())方法 public class MainActivity extends AppCompatActivity {private Button mbtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(sa…...

    2024/4/29 21:11:59
  17. MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.

    使用aop运行redis时出错,解决办法进入redis控制台 redis-cli 查看info信息解决方法 输入命令 config set stop-writes-on-bgsave-error no启动redis后台结果...

    2024/4/29 21:11:53
  18. call()和apply()以及bind()的运用

    js call()和apply()以及bind()的this指向问题 1、call()call(改变的this的对象,参数1,参数2,......)function fn(a,b,c){console.log(this,a+b+c);}fn();//this windowvar obj={a:1};fn.call(obj);//将obj带入到函数替代函数中this的指向,原有的this会被指向objfn.…...

    2024/5/1 4:28:39
  19. 使用方法

    方法 那么什么是方法呢? Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用方法的命名规则 1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使…...

    2024/4/29 21:11:46
  20. leet200题之扫尾部分(二)

    1. 各位相加class Solution { public:int addDigits(int num) {/*常规思路int sum=0;while(num>=10){while(num){int t=num%10;sum += t;num /=10;}num=sum;}return num;*///1,2,3,4,5,6,7,8,9,10,11,12……//1,2,3,4,5,6,7,8,9,1, 2, 3……return (num-1)%9+1;} };2. 字符串…...

    2024/4/28 23:40:33

最新文章

  1. 【ARM Cache 系列文章 11.2 -- ARM Cache 组相联映射】

    请阅读【ARM Cache 系列文章专栏导读】 文章目录 Cache 组相联映射组相联映射原理多路组相连缓存的优势多路组相连缓存的代价关联度&#xff08;Associativity&#xff09; 上篇文章&#xff1a;【ARM Cache 系列文章 11.1 – ARM Cache 全相连 详细介绍】 Cache 组相联映射 A…...

    2024/5/3 6:42:10
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. WKWebView的使用

    一、简介 在iOS中&#xff0c;WKWebView是WebKit框架提供的一个用于展示网页内容的控件&#xff0c;相比UIWebView有更好的性能和功能。 以下是在iOS中使用WKWebView的基本步骤&#xff1a; 1.1 导入WebKit框架 import WebKit1.2 创建WKWebView实例 let webView WKWebVie…...

    2024/5/2 7:33:06
  4. PHP+python高校教务处工作管理系统q535p

    开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp/Laravel 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方…...

    2024/5/1 13:22:30
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/2 11:19:01
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/2 16:04:58
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/2 23:55:17
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/2 9:47:31
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/2 9:47:31
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/2 6:03:07
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/2 9:47:30
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/2 23:47:43
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/2 5:31:39
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/3 1:55:15
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/2 9:47:28
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/2 9:47:27
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/3 1:55:09
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/2 9:47:26
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/2 23:47:16
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/2 18:46:52
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/2 7:30:11
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/3 1:54:59
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57