SQL基础:

文章目录

  • SQL基础:
  • 前言
  • 一、rownum行查找
  • 二、LIKE(模糊查询)
  • 三、通配符
  • 四、in操作符
  • 五、between...and...操作符
  • 六、Alias(别名)
  • 七、Join(连接查询)
  • 八、UNION(合并)
  • 九、SELECT INTO(查询插入)

前言

SQL基础整理

一、rownum行查找

  • rownum

    展示指定行的数据信息:(展示行数小于固定数值的行的列名的信息)

  • 用法:

    select 列名 from 表名 where rownum <= 数值
    (等价与MySQL中的 LIMIT 和 SQL SELECT 中的TOP)

二、LIKE(模糊查询)

  • 作用:

    LIKE操作符作用与where中的搜索条件

  • 用法:

    select 列名1 from 表名 where 列名2 LIKE 检索条件
    (展示表中列名2等于检索条件的列名1的数据信息)
    注:一般LIKE与通配符"%"一起使用(模糊查询)

  • 用法1:

    select * from 表名 where 列名 LIKE ‘%A’
    (展示表中某一列中以A结尾的所有数据信息)

  • 用法2:

    select * from 表名 where 列名 LIKE ‘%A%’
    (展示表中某一列中包含A的所有数据信息)

  • 用法3:

    select * from 表名 where 列名 LIKE ‘A%’
    (展示表中某一列中以A开头的所有数据信息)

三、通配符

符号

作用

%

代替一个或多个字符

_

代替一个字符

[charlist]

字符列中的任何单一字符

[^charlist] 或者 [!charlist]

不在字符列中的任何单一字符

  • 用法:
  • 通配符"%" 和 “_” 一般在LIKE中使用

    例如:

    select * from 表名 where 列名 like ‘%A%’

    select * from 表名 where 列名 like ‘C_A_S’

  • 通配符[charlist]
    例:select * from 表名 where 列名 like ‘[ASD]%’ (查询表中某列以A或S或D开头的列的数据信息)

通配符[!charlist]

例:

select * from 表名 where 列名 like ‘[!ASD]%’

(查询表中某列不以A或S或D开头的列的数据信息)

四、in操作符

  • 作用:

    in操作符作用于where条件中规定多个值

  • 用法:

    select * from 表名 where 列名 in (值1,值2,值3,…)
    (查询表中某列的值等于 ‘值1’ 或 ‘值2’ 或 ‘值3’…的数据信息)

五、between…and…操作符

  • 作用:

    between操作符(一般用法为between…and)(包含前包含后)
    between操作符作用与where条件中,选取介于两个值之间的数据信息(可以是数值,文本或日期)

  • 用法:

    select * from 表名 where 列名 between 值1 and 值2
    (查询表中某列数据的值在 ‘值1’ 和 ‘值2’ 之间的数据信息)
    如果是只查询数字类型或者字符类型的数据,包前包后
    select * from test_hsj where id between 1 and 5;

  • 时间用法:

    用法1:

    select * FROM UPLAN WHERE CREATE_DATE 
    BETWEEN to_date('2021-01-04 00:00:00','yyyy-mm-dd hh24:mi:ss')
    AND to_date('2021-01-05 11:39:07','yyyy-mm-dd hh24:mi:ss')

    如果是只查询某两个月之间的数据,会默认从每个月的1号开始查,包前包后

    用法2:

    select * from test_hsj where regdate between 
    to_date('2015-05','yyyy-MM') and to_date('2015-06','yyyy-MM')

    如果是只查询某两年之间的数据,会默认从1月1日开始查,包前包后

    用法3:

    select * from test_hsj where regdate between 
    to_date('2015','yyyy') and to_date('2016','yyyy')

    注1:
    使用通配符时’2021-01-05%'默认为当天00:00:00

    select * FROM UPLAN WHERE CREATE_DATE BETWEEN 
    to_date('2021-01-05%','yyyy-mm-dd hh24:mi:ss')
    AND
    to_date('2021-01-06%','yyyy-mm-dd hh24:mi:ss')

六、Alias(别名)

  • 作用:

    Alias(as)别名(给表或列名起别名方便记忆书写)

  • 用法:

    select 列名1 as a1,列名2 as a2 from 表名 as u where u.a2 = ‘aaa’
    (从表中查询字段2等于’aaa‘ 的两个字段)

七、Join(连接查询)

  1. Join

    作用:
    Join(连接查询)(为了得到从多个表中查询到的完整结果)
    INNER JOIN(内连接查询)与JOIN相同,连接匹配的行
    SQL基础_操作符

    结果:
    产生的结果是多个表的交集
    图示:
    SQL基础_数据_02
    用法:

    select column_name(s)
    from table 1
    INNER JOIN table 2
    ON
    table 1.column_name=table 2.column_name

    SQL基础_操作符_03

  2. LEFT JOIN(左外连接查询)

    作用:

    LEFT JOIN(左外连接查询)返回左表全部行和右表满足on条件的行,如果左表的行在右表没有匹配,那么这一行数据在右表中对应的数据用null代替

    结果:

    产生的结果是左表的全集,右表匹配则有值,没有匹配则取null
    图示:
    SQL基础_表名_04
    用法:

    select * from Table A left join Table B 
    on Table A.id = Table B.id

    SQL基础_表名_05

  3. RIGHT JOIN(右外连接查询)

    作用:
    RIGHT JOIN(右外连接查询)返回右表全部行和左表满足on条件的行,如果右表的行在左表中没有匹配则返回null
    结果:
    产生的结果是右表的全集,左表匹配则有值,没有匹配则取null
    图示:
    SQL基础_操作符_06

    select * from Table A right join Table B
    on Table A.id=Table B.id

    SQL基础_操作符_07

  4. FULL OUTER JOIN(全连接查询)

    作用:
    FULL OUTER JOIN(全连接查询)从左表和右表返回所有的行,如果其中一个表的数据在两一个表中没有匹配的行,则对应表的数据用null代替
    结果:
    产生左表和右表的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
    图示:
    SQL基础_数据_08

    select column_name(s)
    from table 1
    FULL OUTER JOIN table 2
    ON table 1.column_name=table 2.column_name

    SQL基础_表名_09
    总结join:
    1、A inner join B 取交集。
    2、A left join B 取 A 全部,B 没有对应的值为 null。
    3、A right join B 取 B 全部 A 没有对应的值为 null。
    4、A full outer join B 取并集,彼此没有对应的值为 null。
    5、对应条件在 on 后面填写。

八、UNION(合并)

  • 作用:

    UNION 操作符用于合并两个或多个SELECT语句的结果集

    *注:UNION 内部的SELECT语句必须又相同数量的列。列也必须拥有相似的数据类型。同时,每条SSELECT语句中的列顺序必须相同。

  • 用法:

    select 列名1 from 表名1 union select 列名2 from 表名2
    (合并从表1查询出的列1和从表2查询出来的列2)(列1与列2需要有相似的数据类型)

    *注1:默认UNION操作符选取的是不同的值,同时进行默认规则的排序,如果需要显示重复的值则使用 UNION ALL

    *注2:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

    *注3:UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

  • UNION与UNION ALL区别:

    区别1:取bai结果的交集
    1、duunion: 对两个结果集进zhi行dao并集操作, 不包括重复行,相当zhuan于distinct, 同时进行默认规则的排序;
    2、union all: 对两shu个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;
    区别2:获取结果后的操作
    1、union: 会对获取的结果进行排序操作
    2、union all: 不会对获取的结果进行排序操作
    区别3:

1、union看到结果中ID=3的只有一条
select * from student2 where id < 4
union
select * from student2 where id > 2 and id < 6
2、union all 结果中ID=3的结果有两个
select * from student2 where id < 4
union all
select * from student2 where id > 2 and id < 6

总结

union all只是合并查询结果,并不会进行去重和排序操作, 在没有去重的前提下,使用union all的执行效率要比union高

九、SELECT INTO(查询插入)

  • 作用:
    SELECT INTO 语句作用:从一个表中选取数据,然后把数据插入到另一个表中(常用于创建表的备份复件或者用于对记录进行存档)
  • 用法:
    select * into 表名1 from 表名2(把从表2中查到的所有数据存储到表1中)
    select 列名 into 表名1 from 表名2(把从表2中查到的某一列数据存储到表1中)
    select * into 表名1 in 数据库名1 from 表名2(把从表2中查到的某一列数据存储到数据库1的表1中)
    也可以使用where条件查询作为条件或者join连接查询



更多内容详见微信公众号:Python研究所

SQL基础_表名_10