1. SQL语言概述

1.1 SQL语言特点

  • 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理。
  • 统一性,操作任务主要包括:查询数据;插入、修改和删除数据;建立、修改和删除数据对象;控制对数据和数据对象的读写;保证数据库一致性和完整性。
  • 易于移植性。

1.2 SQL语言的分类

  • 数据查询语言(DQL),主要是SELECT语句、
  • 数据操纵语言(DML),主要包括INSERT、UPDATE、DELETE。
  • 事务控制语言(TCL),主要包括COMMIT、ROLLBACK、SAVEPOINT。
  • 数据定义语言(DDL),用于建立、修改和删除数据库对象,主要包括CREATE、ALTER、DROP。
  • 数据控制语言(DCL),用于执行权限授予和权限收回操作,主要包括GRANT、REVOKE。

2. 检索数据

select {[distinct|all]columns|*}

[into table_name]

from {tables|views|other select}

[where conditions]

[group by columns]

[having conditions]

[order by columns]

筛选查询:

  • 比较筛选,主要有6种情况:=,!=,>=,<=,<,>
  • 特殊关键字筛选,LIKE/IN/BETWEEN/IS NULL等关键字,它们都可以与NOT合用。如:NOT...BETWEEN...AND
  • 逻辑筛选,AND、OR、NOT(正常情况,可以用“AND”和“比较运算符”来代替“BETWEEN...AND”关键字)。

分组查询:

排序查询:

多表关联查询:

  • 内连接(INNER JOIN),当只合用JOIN关键字时,默认内连接操作。
  • 外连接(LEFT JOIN/RIGHT JOIN/FULL JOIN),左外连接查询表示查询结果还包含左表中不满足连接条件的数据行,以此类推。
  • 自连接,如:select emp2.ename 上层管理者,em1.ename as 下属员工 from emp em1 left join emp em2 on em1.mgr=em2.empno order by em1.mgr;
  • 交叉连接(CROSS JOIN),交叉连接实际上就是不需要任何连接条件的连接,执行结果是一个笛卡尔积,这种查询结果是冗余的,但可以通过WHERE子句来过滤出有用的信息。

3. Orcale常用系统函数

参考:Oracle学习笔记之五(实践:常用函数)

4. 子查询

4.1 单行子查询

单行子查询是指返回一行数据的子查询语句。当在WHERE子句中引用单行子查询时,可以使用单行比较运行符(=、>、<、>=、<=、<>)。

select empno,ename,sal from emp where sal>(select avg(sal) from emp);

4.2 多行子查询

多行子查询是指返回多行数据的子查询语句。当在WHERE子句使用多行子查询时,必须使用多行运算符(IN、ANY、ALL)。

select empno,ename,job from emp where deptno IN (select deptno from dept where dname<>’SALES’);

ANY运算符必须与单行比较运算符结合使用,并且返回行只要匹配子查询的任何一个结果即可。

select deptno,ename,sal from emp where sal > ANY (select sal from emp where deptno=10) and deptno<>10;

ALL运算符必须与单行比较运算结合使用,并且返回行必须匹配所有子查询结果。

select deptno,ename,sal from emp where sal > ALL (select sal from emp where deptno=30);

4.3 并联子查询

内查询的执行需要借助于外查询,而外查询的执行又离不开内查询的执行。

比如:列出员工工资大于此员工所在岗位的平均工资的清单

select empno,ename,sal from emp f where sal>(select avg(sal) from emp where job=f.job) order by job;

5. 操作数据库

5.1 插入数据(INSERT语句)

INSERT INTO table_name [(column_name1[,column_name2]…)]

VALUES(express1[,express2]…)

INSERT INTO table_name [(column_name1[,column_name2]...) selectSubquery

5.2 更新数据(UPDATE语句)

UPDATE table_name

SET   {column_name1=express1[,column_name2=express2...]

| (column_name1[,column_name2…])=(selectSubquery)}

[WHERE condition]

在将UPDATE语句与SELECT语句组合使用时,必须保证SELECT语句返回单一的值。

5.3 删除数据(DELETE语句、TRUNCATE语句)

DELETE FROM table_name

[WHERE condition]

TRUNCATETABLE table_name

Oracle学习笔记之四,SQL语言入门的更多相关文章

  1. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  2. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  3. 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式

    目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...

  4. 学习笔记:oracle学习三:SQL语言基础之检索数据:简单查询、筛选查询

    目录 1. 检索数据 1.1 简单查询 1.1.1 检索所有列 1.1.2 检索指定的列 1.1.3 查询日期列 1.1.4 带有表达式的select语句 1.1.5 为列指定别名 1.1.6 显示不 ...

  5. Oracle学习笔记四 SQL命令(二):SQL操作语言类别

    SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...

  6. 吴裕雄--天生自然ORACLE数据库学习笔记:SQL语言基础

    select empno,ename,sal from scott.emp; SELECT empno,ename,sal FROM scott.emp; selECT empno,ename,sal ...

  7. Oracle学习笔记六 SQL常用函数

    函数的分类 Oracle 提供一系列用于执行特定操作的函数 SQL 函数带有一个或多个参数并返回一个值 以下是SQL函数的分类:

  8. Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页

    GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group ...

  9. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

随机推荐

  1. wireshark 的使用(filter的用法)

    转自:http://blog.csdn.net/hanyuxinting/article/details/5558095 过滤器语法---------------------------------- ...

  2. ZH奶酪:Linux新建用户+远程登录

    7.想在VBUbuntu中新建一个账户,但是用useradd命令发现没有权限,原来Ubuntu默认不是root权限登录,需要按照下边的教程才能新建用户. http://www.linuxidc.com ...

  3. 提高ASP.NET首页性能的十大方法

    本文是我对ASP.NET页面载入速度提高的一些做法,这些做法分为以下部分: http://www.cnblogs.com/xiachufeng/archive/2011/11/09/2242130.h ...

  4. Nginx的负载均衡的几种方式

    Nginx的负载均衡的那点事 本节就聊聊采用Nginx负载均衡之后碰到的问题: Session问题 文件上传下载 通常解决服务器负载问题,都会通过多服务器分载来解决.常见的解决方案有: 网站入口通过分 ...

  5. Flume-0.9.4数据插入HBase-0.96

    来自:http://blog.csdn.net/iam333/article/details/18770977 最近由于业务需要,需要将flume的数据插入HBase-0.96,利用flume的实时日 ...

  6. 深入理解Object提供的阻塞和唤醒API

    深入理解Object提供的阻塞和唤醒API 前提 前段时间花了大量时间去研读JUC中同步器AbstractQueuedSynchronizer的源码实现,再结合很久之前看过的一篇关于Object提供的 ...

  7. java面试第十八天

    软件开发流程: 1.可行性分析 2.需求分析->开发测试 3.概要设计->分隔模块,定义框架等 4.详细设计->类设计.接口设计 5.编码 6.测试 7.部署 8.维护 单元测试: ...

  8. 堆叠相冊效果,兼容pc和移动端

    在手机端,堆叠效果的相冊是比較常见的一种图片展示方式,每一个人的思路可能会有一些不同,实现的方法不同. 本篇博客主要是分享下我的实现方法.欢迎大家提出建议,指出我的不足,先3Q啦~ 先看一下终于的效果 ...

  9. CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端

    CAS单点登录系列: CAS 5.1.x 的搭建和使用(一)—— 通过Overlay搭建服务端 CAS5.1.x 的搭建和使用(二)—— 通过Overlay搭建服务端-其它配置说明 CAS5.1.x ...

  10. cxf之Caused by: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /rest

    发布rest服务 但是spring-cxf-rest.xml中配置的却是 <jaxws:server address="/weather".................. ...