oracle基础
发布日期:2021-05-08 13:40:40 浏览次数:26 分类:精选文章

本文共 2357 字,大约阅读时间需要 7 分钟。

SQL基础教程:从入门到实践

SQL简介

结构化查询语言(SQL)是一种数据库查询和程序设计语言,主要用于存取、查询、更新和管理关系数据库。它被广泛应用于多种数据库系统,作为数据处理的标准接口。SQL的语法灵活且强大,支持嵌套查询,适合处理复杂的数据操作。

SQL类型分类

  • DML(数据操作语言)

    包括INSERTUPDATEDELETE语句,用于对数据库表进行数据添加、修改和删除操作。

  • DDL(数据定义语言)

    包括CREATEDROP语句,用于创建和删除数据库表、索引等操作。

  • DCL(数据控制语言)

    包括GRANTREVOKE语句,用于控制用户对数据库对象的访问权限。


  • Select语句

    SELECT语句是用于从数据库表中检取数据的基本语句。

    Select语法

    Select * | 列名 from 表名
    • * 表示选择表中所有列。
    • 列名 表示选择指定列。
    • from 表名 表示从指定表中选择数据。

    别名用法

    在查询结果中,可以为列设置别名:

    Select 列名 别名, 列名 别名 from 表名

    别名可以包含特殊符号或关键字,但别名中如果有双引号,区别在于是否包含特殊符号。

    消除重复数据

    使用DISTINCT关键字可以去除重复行:

    Select distinct * from 表名

    如果需要去除多个列的重复值,需要在列名列表中包含所有列:

    Select distinct 列名1, 列名2 from 表名

    查询中四则运算

    可以在SELECT语句中使用四则运算符:

    Select name, sal * 12 as income from emp

    支持的运算符包括+-*/


    空值与null

    空值定义

    空值是指无效的、未指定的、未知的或不可预知的值。空值与空格或0不同,包含null的表达式结果为null。空值永远不等于自身。

    空值判断

    -- 非空检查
    Select 列名 is not null from 表名
    -- 空值检查
    Select 列名 is null from 表名

    连接符

    在数据库中,字符串连接通常使用||符号。不同数据库服务器的实现方式有所不同:

    • MySQL:直接使用||符号。
    • Oracle:使用II符号。

    条件查询与排序

    where语句

    WHERE子句用于对查询结果进行过滤:

    Select * from 表名 where 条件

    比较运算符

    常用比较运算符包括:

    • =(等于)
    • <>(不等于)
    • >(大于)
    • >=(大于等于)
    • <(小于)
    • <=(小于等于)

    逻辑运算符

    • AND(逻辑与)
    • OR(逻辑或)
    • NOT(逻辑非)

    where语句示例

  • 非空和空的限制

    Select 列名 is not null from 表名
    Select 列名 is null from 表名
  • 范围限制

    Select * from 表名 where 列名 > 1500 and 列名 < 3000
  • 模糊查询

    Select * from 表名 where 列名 like "%海%"
  • 排序

    使用ORDER BY对结果排序:

    Select 列名 from 表名 order by 列名 asc/desc

    默认排序规则为升序排列。如果需要降序排列,需在ascdesc后指定。排序时可以处理null值,使用nulls firstnulls last指定null值的显示位置。


    单行函数

    字符函数

  • 字符串连接 使用CONCAT||符号连接字符串:

    Select concat('hello', 'world') as full_string from dual
  • 字符串截取 使用SUBSTR函数截取字符串:

    Select substr('hello', 1, 5) from dual
  • 字符串长度 使用LENGTH函数获取字符串长度。

  • 字符串替换 使用REPLACE函数替换字符串:

    Select replace('old', 'new', 'result') from dual
  • 数值函数

  • 数值运算 使用+-*/进行数值运算。

  • 数值函数 包括ROUND(四舍五入)、CEILING(向上取整)和FLOOR(向下取整)等函数。

  • 日期函数

  • 获得周数

    Select (sysdate - 入职日期) / 7 as weeks from dual
  • 获得两个时间段中的月数

    Select months_between(日期1, 日期2) from dual
  • 获得几个月后的日期

    Select add_months(日期, 个月数) from dual
  • 转换函数

  • 字符串转换 使用TO_CHAR函数将日期转换为字符串:

    Select to_char(sysdate, 'YYYY-MM-DD HH:MM:SS') from dual
  • 数值转换 使用TO_NUMBER函数将字符串转换为数值。

  • 日期转换 使用TO_DATE函数将字符串转换为日期。


  • 多行函数

    分组函数

    分组函数作用于一组数据,返回一组数据中的统计值。常用的分组函数包括COUNTAVGSUMMAX

  • 查询部门平均工资不到2000的部门
    Select dept_name, avg(sal) from emp group by dept_name having avg(sal) < 2000
  • 单行子查询

  • 查询部门工资最少的员工信息
    Select e.name, min(sal) from emp group by e.dept_id

  • NVL函数

    NVL函数用于处理null值:

    Select name, nvl(name, '匿名') from emp

    如果name字段为null,则返回'匿名';如果name不为空,则返回实际值。

    上一篇:oracle集合运算
    下一篇:su用户的正确切换

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年04月11日 00时40分44秒