美文网首页程序园
Oracle SQL 学习笔记1 - 基础

Oracle SQL 学习笔记1 - 基础

作者: 赵阳_c149 | 来源:发表于2020-02-03 15:00 被阅读0次

    SQL定义

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统【1】。

    SQL历史

    SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。1980年10月,经美国国家标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL。

    SQL 分类

    • DQL(Data Query Language)
      SELECT
    • DML(Data Manage Language)
      INSERT、UPDATE、DELETE
    • DDL(Data Define Language)
      Create,Alter,Drop,Rename,Truncate,Comment
    • DCL(Data Control Language)
      Grant,Revoke
    • TCL(Transaction Control Language)
      commit,rollback,savepoint

    运行环境

    • Sqlplus
      Oracle客户端
    • Sqldeveloper
      Oracle的UI客户端
    • PL/SQL
      第三方UI客户端

    时间

    时间受限于环境变量。

    ALTER SESSION SET NLS_DATA_FORAMT='yyyy-mm-dd';
    

    列的缺省格式

    1. 缺省的对齐方式
    • 左部对齐:日期,字符数据
    • 右部对齐:数字格式数据
    SQL> select * from employee;
    
           ENO ENAME         SAL BIRTH_DAY
    ---------- ---------- ---------- ---------
         1 Kobe         1000 03-FEB-20
    
    1. 缺省的显示方式:大写

    SQL语句的使用

    在SQL语句中运用数学表达式

    SQL> select ename, sal, sal+300 from employee;
    
    ENAME         SAL    SAL+300
    ---------- ---------- ----------
    Kobe         1000       1300
    

    定义空值(Null)

    空值是一个表达不可用、未分配、未知、或者不适用等意义的值。空值与零和空格的概念不同,应该严格区分。


    Null.png

    定义一个列别名

    • 重新命名一个列的名字时很有用。
    • 可以用AS关键字为列取一个别名。
    • 如果别名中包含空格,或者其他特殊字符,则需要用引号(“”)将别名包含起来。
    select ename, sal+300 as "new salary" from employee;
    
    ENAME      new salary
    ---------- ----------
    Kobe         1300
             1300
             1300
             1300
    

    数学表达式中空值的处理

    如果数学表达式中包含一个空值,那么该数学表达式的结果为空值。

    select ename, sal+300 from employee;
    
    ENAME         SAL+300
    ---------- ----------
    Kobe         1300
    Ross
    

    使用连接运算符和文字字符串

    SQL> select 'Dear '||ename||': your salary is '||sal from employee;
    
    'DEAR'||ENAME||':YOURSALARYIS'||SAL
    ------------------------------------------------------------------------
    Dear Kobe      : your salary is 1000
    Dear Ross      : your salary is
    

    消除掉重复行

    在SELECT语句中用DISTINCT关键字来消除所有重复的行。

    SELECT DISTINCT ENAME FROM EMPLOYEE;
    

    dual表

    SQL> SELECT 1111111/2222 FROM dual; 
    
    1111111/2222
    ------------
      500.049955
    

    dual是数据字典表,只有一行一列,通常提供杠杆作用。

    选择查询出的行

    • 用where子句限定查询出的行:
      SELECT [DISTINCT] [ * | column [alias], ...]
      FROM table
      [WHERE condition(s)]
    • WHERE子句中,数字不用引号

    字符串和日期

    • 字符串和日期值应当用单引号括起来
    • 字符串值大小写敏感,日期值对于日期的格式敏感
    • 例如,23-Jul-14,为14年7月23日

    比较操作符

    操作符 含义
    = 等于
    > 大于
    >= 大于等于
    < 小于
    <= 小于或等于
    <> 不等于

    比较操作符忽略空值。

    其他比较操作符
    操作符 含义
    BETWEEN...AND... 在两个值之间(包含边界值)
    IN(list) 在列出的值中
    LIKE 与输出的字符串匹配
    IS NULL 是一个空值

    使用LIKE操作符

    可以用LIKE进行某个字符串的通配符匹配,来选出某些行。查询条件中既可以包含字符,也可以包含数字:

    • %代表0个或者多个字符
    • _代表一个字符
    • 使用escape进行特殊字符转义说明
    SQL> select * from employee where ename like '%be%';
    
           ENO ENAME         SAL BIRTH_DAY
    ---------- ---------- ---------- ---------
         1 Kobe         1000 03-FEB-20
    
    SQL> select * from system.employee where ENAME like 'O\%%' escape '\';
    
           ENO ENAME         SAL BIRTH_DAY
    ---------- ---------- ---------- ---------
         6 O%            03-FEB-20
    

    逻辑操作符

    操作符 含义
    AND 两个条件都为TRUE,则返回TRUE
    OR 两个条件中任何一个为TRUE,则返回TRUE
    NOT 如果条件为FALSE,返回TRUE

    优先级顺序

    用圆括号可以改变操作符的优先级次序。

    顺序 操作符
    1 所有比较操作符
    2 NOT
    3 AND
    4 NOT

    ORDERBY 子句

    ORDER BY 子句跟在SELECT语句之后,对行进行排序:

    • ASC:升序,缺省
    • DESC:降序

    可以按照多个列进行排序,用于排序的列甚至可以不出现在SELECT的列中。
    排序时,如果升序,默认Null在最后;如果降序,默认Null在最开始。

    SQL 语句编码基本规范

    • SQL语句不是大小写敏感的
    • SQL语句可以分布在一行或者多行中
    • 关键字不能进行缩写,也不能分布在两行
    • 一般地,不同的子句写在不同的行为宜
    • 经常用跳格或者缩进来增强可读性
    • 建议在一个开发项目中统一大小写和换行规范

    【1】结构化查询语言

    相关文章

      网友评论

        本文标题:Oracle SQL 学习笔记1 - 基础

        本文链接:https://www.haomeiwen.com/subject/qoxcxhtx.html