十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
别名
成都创新互联公司作为成都网站建设公司,专注重庆网站建设、网站设计,有关企业网站建设方案、改版、费用等问题,行业涉及发电机回收等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
oracle别名如果别名包含空格 特殊字符(如# $) 或需区分大小写(Name)需要用双引号把别名引起来
select ename Name
sal* Annual Salary
from emp;
列的别名可用于select和order by子句中 但是不能用在where子句中
连接操作符 ||
select ename||job as Employees
from emp;
原义字符串 包含在select列表中的一个字符 数字或日期 而不是列名或别名 使用原义字符串可增强输出的可读性
select ename|| is a ||job
as Employees from emp;
去除重复行distinct
select distinct deptno
from emp;
sql*plus登录
sqlplus [username[/password[@database]]]
在sql*plus中编辑sql缓冲区中的sql语句
SQLselect depno
dname
from dept;
sqlL
*dname
sqlA loc
*dname loc
sqlL
select depno
dname loc
*from dept
sql/(执行)
限定查询和排序
select empno ename job deptno
from emp
where deptno= ;
oracle提供 种常用的比较运算符 = = = 或!=(不等于)
除了 种常用的外还提供 种比较运算符 beeen and (包含) IN(和多个值中的任何一个匹配) like (字形匹配)
is null(是空值)
在where子句中的字符串和日期数值必须用单引号引起来 oracle 以内部数值形式存储日期 能表现出世纪 年 月 日 小时 分 秒 默认的日期形式是DD MON YY
sqlselect ename job deptno
from emp
where ename= JAMES ;
sqlselect name job deptno
from emp
where ename= james ;
所有字符检索都是大小写敏感的
显示工资在 和 美元之间的雇员信息
select ename sal
from emp
where sal beeen and ;
显示 年加入公司的雇员相关信息
select ename sal hiredate
from emp
where hiredate beeen JAN and DEC ;
显示mgr等于 的雇员信息
select empno ename sql mgr
from emp
where mgr in ( );
显示姓名为FORD ALLEN雇员的相关信息
select empno ename mgr deptno
from emp
where ename in( FORD ALLEN );
like字形匹配操作可以使用通配符 % (表示任意字符)和 _ (表示一个字符)
select ename
from emp
where ename like S% ;
当我们需要对% _进行查找时 可以使用escape选项 这个选项指定哪个是转义字符
escape标识 \ 字符作为转义符
select ename
from emp
where ename like %A\_B% escape \ ;
在条件中NOT 形成否定条件
select ename job
from emp
where job not in ( CLERK MANAGER ANALYST );
where sal not beeen and
where ename not like %A%
wher m is not null
运算符优先规则
not and or
select ename job sal
from emp
where job= SALESMAN
or job= PRESIDENT
and sal ;
第一个条件是工作为president并且月工资大于 美元
第二个条件是工作为sale *** an
因此可以这样理解 如果一个雇员是president并且月工资大于 或者这个雇员是sale *** an 那么他们将被检索出
select ename job sal
from emp
where (job= SALESMAN
or job= PRESIDENT )
and sal ;
第一个条件是工作为president或saleman
第二个条件是月工资大于
order by子句后可选用关键字asc(升序默认为升序) desc(降序排列)
select ename job deptno hiredate
from emp
lishixinzhi/Article/program/Oracle/201311/17302
1、首先在oracle建立数据表的时候,对表的命名有以下规范:以字母开头表名长度不能超过30个字符,不能使用oracle保留关键字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接报错的。如下图使用了 *。
3、在建立表的时候,数字也是不能使用表名的开始的。
4、但如果使用双引号对表名进行规范的话,是可以建立以数字或者包含特殊字符的表名的。
5、过这样建立的表名,在查询数据的时候是非常麻烦的,查询时也要加双引号。而且这样建立的表名,在项目运行的过程中也非常容易造成各种麻烦,所以尽量不要使用。
以下是对Oracle中的基本查询过滤排序示例进行了详细的分析介绍 需要的朋友可以参考下
基本查询
复制代码 代码如下: 查询所有员工的信息 select * from emp; 设置行宽 set linesize ; 设置列宽为四个数字的宽度 col empno for ; 设置列宽 a表示字符串共八位长度 col ename for a 设置pageSize每页显示 条记录 set pagesize ; sql中支持算数表达式 注意 如果一个表达式中含有空值 则整个表达式为空 select empno ename sal sal* m sal* +m from emp; 使用滤空函数如果m为空将以 代替 select empno ename sal sal* m sal* +nvl(m ) from emp; 使用别名的三种方式 别名中有无双引号的区别 带双引号的可以包含空格和特殊字符 不带双引号的则不能 select empno as "员工编号" ename "姓名" sal 月薪 m sal* +nvl(m )年收入 from emp; 关于disctinct 相同记录只取一次 select distinct deptno from emp; 当disctinct跟多个值时 当deptno和job均一样时 才认为是相同记录 select distinct deptno job from emp; 连接符的使用 select ename || 的薪水是 ||sal from emp;
注意 SQL 语言大小写不敏感 SQL 可以写在一行或者多行 关键字不能被缩写也不能分行 各子句一般要分行写 使用缩进提高语句的可读性 过滤和排序
复制代码 代码如下: 查询系统参数 select * from v$nls_parameters; 修改日期格式 alter session set NLS_DATE_FORMAT= yyyy mm dd ; 隐士方式转换日期 会影响性能 select * from emp where hiredate= ; 显示方式转换日期 select * from emp where hiredate=to_date( yyyy mm dd ); 比较运算符 查询工资大于 小于 的员工 beeen and含边界 select * from emp where sal= and sal= ; select * from emp where sal beeen and ; in: 在集合中 查询 号部门和 号部门的员工 select * from emp where deptno= or deptno= ; select * from emp where deptno in ( ); 模糊查询:查询名字以S打头的员工 select * from emp where ename like S% ; 查询名字有四个字的员工 要求四个下划线 select * from emp where ename like ____ ; 查询姓名中含义下划线的员工 _下划线为特殊字符需要转义 escape 声明转义 select * from emp where ename like %\_% escape \ ; 查询奖金不为空的员工 select * from emp where m is not null; 查询员工信息 按照月薪排序 select * from emp order by sal; a命令 追加命令 将上边改为降序排序 a desc 查询员工信息 按照年薪排序 select empno ename sal sal* from emp order by sal* ; order by后面可以跟别名 select empno ename sal sal* 年薪 from emp order by 年薪; order by后面可以跟序号 select empno ename sal sal* from emp order by ; order by作用于多列 先按照第一列排序 然后按照第二列排 select * from emp order by deptno sal; order by作用于多列 降序需要每列均有desc select * from emp order by deptno desc sal desc 将空值排到最后 select * from emp order by m desc nulls last; 屏蔽/开启反馈信息 set feedback off/set feedback on lishixinzhi/Article/program/Oracle/201311/19117
Oracle9i之前,中文是按照二进制编码进行排序的。在oracle9i中新增了按照拼音、部首、笔画排序功能。
1、设置NLS_SORT参数值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序 SCHINESE_PINYIN_M 按照拼音排序
2、Session级别的设置,修改ORACLE字段的默认排序方式:
按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;
按笔画:alter session set nls_sort = SCHINESE_STROKE_M;
按偏旁:alter session set nls_sort = NLS_SORT=SCHINESE_RADICAL_M;
3、语句级别设置排序方式:
按照笔划排序 select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');
按照部首排序 select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
按照拼音排序 此为系统的默认排序方式
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');
4、修改系统参数(数据库所在操作系统):
set NLS_SORT=SCHINESE_RADICAL_M export NLS_SORT (sh) setenv NLS_SORT SCHINESE_RADICAL_M (csh) HKLC\SOFTWARE\ORACLE\home0\NLS_SORT (win注册表)