Oracle SQL 学习笔记1 - 基础

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】结构化查询语言

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容