知识大全 Oracle数据库入门之查询基础
Posted 知
篇首语:困难是人的教科书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库入门之查询基础相关的知识,希望对你有一定的参考价值。
Oracle数据库入门之查询基础 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
简单的表操作
指令 创建简单表 createtable student(name varchar ( ) age number( ) );
插入新记录 insert into studentvalues( stone );
查看表结构 desc student;
查询记录 select * from student;
删除表 drop table student;
删除表中的数据 delete from studenhere 条件;
说明 SQLPlusWorksheet中用“ ”作为单行注释标记 varchar ( )标明可变长度的字符串 上限为
number( )标明age为不包含小数点的 位的整数 如果只定义成number 则系统默认为 位的整数
单引号引起来的字符是SQL语言中字符串常量的表示方式 SQL语言中的关键字大小写是不敏感的
数据库开发人员喜欢使用大写关键字 应用程序开发人员多数使用小写的 以实现良好的可读性
插入记录后 其实并没有在数据库中立即永久生效 这时可以使用mit;提交数据的更新操作
简单的Select语句
语法格式 SELECT *|<字段名> FROM <表名>; 字段间用逗号隔开 在逗号后面添加空格可以增强可读性
例如select * from emp;或select empno ename sal from emp;
显示效果 Sql*plus的默认显示 Date和character型数据左对齐 Numeric型数据右对齐 列标题默认显示为大写
iSql*plus的默认显示 列标题默认显示为大写 列标题缺省居中对齐
使用算术表达式
概述 在Select语句中 对NUMBER型数据可以使用算术运算符(+ * /)创建表达式
举例 select empno ename sal sal* from emp; 查询emp中员工的编号姓名工资和年薪
select empno ename sal sal* + from emp;
select empno ename sql sal*( + ) from emp; 可以使用括号更改计算顺序
连接运算符
概述 即“||”可以把列与字符或其它表达式连接在一起 得到一个新的字符串 实现“合成”列的功能
举例 select ename || is a || job from emp;
select empno ename || s annual salary is || sal* from emp;
说明 用一个单引号代表字符串常量的分隔标记 用两个单引号代表字符串常量中出现的一个单引号字符
在查询的时候 也不需要转义符 直接用两个单引号代表字符串常量中出现的一个单引号即可
使用字段别名
概述 重命名查询结果中的字段 以增强可读性 如果别名中使用特殊字符或强制输出大小写时需使用双引号
格式 SELECT <字段名>|<表达式> [[AS]<字段别名>] FROM<表名>;
举例 select empno ename "Ename" sal* "年 薪" from emp;
select empno as 员工编号 ename 员工姓名 sal* "年薪" from emp;
说明 as可以不加 别名可以用双引号引起来 如果别名中不包含特殊字符 双引号可以省略
如果别名中包含了空格 如"年 薪" 就必须加双引号 否则将被解析成两个成份 导致语法上出问题
如果Ename不加双引号 那么执行后会显示为ENAME 只有给它加上双引号之后 才会遵重大小写来显示
空值
概述 空值是无效的 未指定的 未知的或不可预知的值 空值不等同于 或空格
举例 select empno ename sal m from emp; 执行后某些记录的m属性会显示一片空白 即空值
insert into student(age) values( ); 插入数据时 如果没有指定name值 那么默认的name就是空值
补充 算术表达式中如果出现空值 则整个表达式结果为空
连接表达式中出现的空值被当作一个空的(长度为零的)字符串处理
如select ename sal m ename || || m sal+m from emp;
在算术表达式中如果涉及到空值的话 可以使用相应的函数对可能存在空值的字段进行缺省值的设置
经过判断之后 如果它是空值 则返回 如果不是空值 则返回它真正的值 然后再进行算术运算
去除重复行
概述 缺省情况下 查询结果中显示所有符合条件的记录行 包括重复行 可以使用DISTINCT可以清除重复行
DISTINCT的作用范围是后面所有字段的组合 即后面的多个字段的组合不出现重复就可以了
举例 select deptno from emp; 本意是查询部门编号的种类 显示的却是所有的编号 包括重复编号
select distinct deptno from emp; 清除查询结果中重复的部门编号
select distinct deptno job from emp; 只要deptno和job组合后的结果不重复 那么就都显示输出
说明 通常把极为简单的数据处理 包括数据的查询 组合 过滤或转换类型等操作 均交给数据库进行处理
比如分组统计 求和 求平均值 过滤空值 过滤重复值 数据开头和结尾的空格过滤 字符串转日期型等等
而对于复杂些的业务逻辑 或者与商业逻辑相关的内容 建议在应用程序中处理 这样也就实现了松散的耦合
查询结果排序
概述 查询结果缺省按照记录的插入顺序进行排列 可以使用ORDER BY子句对查询结果进行排序
排序方式包括升序(ASC 缺省)和降序(DESC)两种 也可以使用字段别名排序或按多字段排序
举例 select empno ename sal from emp order by sal; 按sal进行升序排列 ASC可以省略不写
select empno ename sal from emp order by sal desc; 按sal进行降序排列
select empno ename sal* annsal from emp order by annsal;
select deptno empno ename sal from emp order by deptno sal;
说明 多字段排序时 先按照deptno排序 如果在得到的排列结果中存在重复的deptno记录的话
就将重复的deptno记录再按照sal排序 至于具体的排序方式 则需要对两个字段进行单独指定
如deptno sal表示二者均按升序排列 deptno sal desc表示deptno按升序排列 sal按降序排列
如deptno desc sal表示deptno按降序排列 sal按升序排列 依此类推
这种逻辑适合由数据库在查询阶段进行处理 在应用程序中通过代码来实现的话 就会困难一些
条件查询
说明 在查询语句中或查询条件中使用字符串或日期的时候 字符串和日期值要用单引号括起来
字符串大小写敏感 日期值格式敏感 缺省的日期格式是DD MON RR
注意 凡涉及到字符串内容的比较 大小写都是敏感的
格式 SELECT *|[DISTINCT]<字段名>|<表达式>[<别名>] FROM<表名> [WHERE <查询条件>];
举例 select * from emp where ename= SMITH ; 这里所要查询的SMITH严格区分大小写
select * from emp where hiredate= 月 ; 系统会自动将符合约定格式的字符串转换成Date型
select sysdata from dual; 以缺省的日期格式获取当前的系统时间
说明 表dual中只有一行一列 它本身并不保存系统时间 sysdate永远代表当前的系统时间
通常在进行简单的查询或运算的时候 dual表起一个媒介的作用 使得形式上看起来像是查询
dual的好处在于只有一行记录 它一般用在练习时测试某些指令 一般不在真实的开发使用它
比如select + from dual;返回 又如select + from emp;则会返回很多行的
它会对emp中每一行记录都查询 但查的不是真正保存的内容 而是逐行的计算一遍 +
再把得到的 作为一个唯一的结果 也是唯一的一个字段返回来 所以结果就是 多行的
对于Oracle数据库 即使是想让它做一个简单的常量表达式的运算 也要采用问答的形式
即便此时所有的数据都在用户的手中 那也要装作是查询 给它一个指令 令其返回结果
关系运算符
符号 BEEEN AND 界于两值之间 包括边界 并且必须把小的数值放在前面
IN(set) 出现在集合中 判断是否存在某字段等于集合中的值的记录
LIKE 模糊查询 也叫通配查询
IS NULL 判断空值
示例 select * from emp where sal beeen and ; 查询工资界于 和 之间的员工的信息
select * from emp where ename in( SMITH KING King ); 返回姓名为set中的元素的值的记录
select * from emp where m is null; 返回所有m字段的值为空的记录
select * from emp where m is not null; 返回非空的 注意 和空是不同的
注意 凡涉及到字符串内容的比较 大小写都是敏感的 即in()中的值需要与ename值完全匹配方可查询出记录
LIKE %代表零或多个字符 _代表一个字符 可以使用ESCAPE标识特殊符号
select * from emp where ename like S% ; 查询以S开头的姓名的记录 这里S仍然是大小写敏感的
select * from emp where ename like _A% ; 查询第二个字母是A的姓名的记录
select * from emp where ename like %_% escape ; 返回姓名存在下划线的记录
这里的escape标明“”起到转义符的作用 在真实的开发中 这种转义符用的并不多
Oracle中的转义符可以随便定义 所以例句中的“”也可以换成其它的符号 如“K”
说明 用一个单引号代表字符串常量的分隔标记 用两个单引号代表字符串常量中出现的一个单引号字符
在模糊查询的时候 也不需要转义符 直接用两个单引号代表字符串常量中出现的一个单引号即可
逻辑运算符
概述 优先级由高至低 NOT→AND→OR
举例 select * from emp where deptno= and sal> ; 返回部门编号为 而且工资大于 的记录
select * from emp where deptno= or sal> ; 返回部门编号为 的人或者工资大于 的记录
cha138/Article/program/Oracle/201311/19115相关参考
ORACLE入门之数据库安全策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库安全性问题
ORACLE入门之查看数据库的SQL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查看表空间的
ORACLE入门之改数据库的归档方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 先按正常方式
Oracle数据库入门之DDL与数据库对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库
ASP基础入门:数据库查询语言(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 原定计划从本
ASP基础入门:数据库查询语言(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在本篇的开头
一ORACLE的表的分类 REGULARTABLE普通表ORACLE推荐的表使用很方便人为控制少 PARTITIONEDTABLE分区表人为控制记录的分布将表的存储空间分为若干独立的分区记录按
ORACLE入门之ORACLE的备份 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一意义 当
SQL入门:复杂查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 复杂查询 DB通用数据库允
入门基础-Oracle常用脚本备忘 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!创建一个表T使之具