程序园

Oracle SQL 学习笔记1 - 基础

2020-02-03  本文已影响0人  赵阳_c149

SQL定义

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

SQL历史

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

SQL 分类

运行环境

时间

时间受限于环境变量。

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

定义一个列别名

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是数据字典表,只有一行一列,通常提供杠杆作用。

选择查询出的行

字符串和日期

比较操作符

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

比较操作符忽略空值。

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

使用LIKE操作符

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

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语句之后,对行进行排序:

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

SQL 语句编码基本规范

【1】结构化查询语言

上一篇下一篇

猜你喜欢

热点阅读