Oracle学习笔记之四,SQL语言入门
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语言入门的更多相关文章
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式
目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...
- 学习笔记:oracle学习三:SQL语言基础之检索数据:简单查询、筛选查询
目录 1. 检索数据 1.1 简单查询 1.1.1 检索所有列 1.1.2 检索指定的列 1.1.3 查询日期列 1.1.4 带有表达式的select语句 1.1.5 为列指定别名 1.1.6 显示不 ...
- Oracle学习笔记四 SQL命令(二):SQL操作语言类别
SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...
- 吴裕雄--天生自然ORACLE数据库学习笔记:SQL语言基础
select empno,ename,sal from scott.emp; SELECT empno,ename,sal FROM scott.emp; selECT empno,ename,sal ...
- Oracle学习笔记六 SQL常用函数
函数的分类 Oracle 提供一系列用于执行特定操作的函数 SQL 函数带有一个或多个参数并返回一个值 以下是SQL函数的分类:
- Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页
GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group ...
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
随机推荐
- RPC框架研究(二)Hadoop源代码-1
报名了阿里中间件性能大赛,我来说是一个全新的挑战.一切从空白学起,比赛的过程也是学习的过程 是的.想让自己学好.给自己报一个比赛吧~ 就像当初学围棋,也是报了围棋比赛,为了不至于输的太慘.一个星期里学 ...
- word2vec模型cbow与skip-gram的比较
cbow和skip-gram都是在word2vec中用于将文本进行向量表示的实现方法,具体的算法实现细节可以去看word2vec的原理介绍文章.我们这里大体讲下两者的区别,尤其注意在使用当中的不同特点 ...
- 用JavaScript 来创建 mac os x 程序这样是否好
在网上看到的文章: 用 JavaScript 编写 OS X 应用 (Tyler Gaw) 这个文章的内容是不错的. 可是思路呢? 我们假设想学一种方法或工具,这样做好吗? 我看了上面的代码.假设 ...
- 解决java.sql.SQLException: Incorrect string value: '\xE6\x88\x91\xE7\x9A\x84...' for column 'groupName'
今天使用mysql,用java程序往mysql中写数据,出现如下错误: Caused by: java.sql.SQLException: Incorrect string value: '\xD3\ ...
- win7官方下载地址
win7官方下载地址 http://microsoftstore.me/category/microsoft/windows/
- Caffe源代码中Solver文件分析
Caffe源代码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/solver.hpp文件 ...
- python之函数用法staticmethod
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法staticmethod #http://www.cnblogs.com/hongfe ...
- 【laravel54】详解中间件
1.中间件定义:对http请求进行一层过滤,通过过滤才能继续执行请求 2.中间件方法handle方法参数详解: 其中参数的形式可以有多个,使用[,]进行分割. 3.路由中使用中间件: 3.1 中间件使 ...
- vim删除文件第n行到结尾、或某段内容
1. 编辑文件 vim myShell.sh 2. 转到文件末尾 G 3. 或者转到删除内容最后的行 :set nu #显示行号,便于确定哪行 200G #光标定到200行,表示要删除n-200行的内 ...
- 直线的中点Bresenham算法的实现
一.实验目的 1.掌握在MFC中搭建图形绘制的基本框架的方法: 2.将直线的中点Bresenham算法转化成可执行代码. 二.实验内容 1. 通过分析具体数据在中点Bresenham算法上的执行过程, ...