【01】 - Oracle基本select语句

一、登陆.

 

1. 超级用户登陆:

i. sqlplus /nolog

ii. connect /as sysdba

 

2. 普通用户登陆(使用Oracle的用户Scott登陆):

i. sqlplus scott/123 (用户名:scott密码:123)

 

ii. sqlplus scott(当然,为了安全在后面输入密码),再输入密码

 

 

3. 退出:quitexit

SQL>  exit

Oracle Database 10g Enterprise Edition Release 10.2.0

With the Partitioning, OLAP and Data Mining options 断开

 

二、 基本设置与基本select语句.

 

1. Oracle数据库:用户-->用户下的表;

2. 

3. tab是数据字典:oracle超级管理员分配给普通用的资源。它记录着用户所有的表。 * 接下来我们用select查看scott用户下的所有表:

SQL> select * from tab;(可以看出,大小写并不影响)

   

 

4. 可以看到Scott用户下有7张表,接下来查询表dept的所有记录

       SQL> select * from dept;

 

 

基本设置:

5. 有时候表的结构比较复杂,显示出来很乱,这时候可以设置行(Line)宽和页(Page)    大小:

       SQL> set linesize 150

       SQL> set pagesize 140

 

6. 当看到上面的表deptDEPTNO,觉得不需要这么宽,可以列宽(column)。

  这里涉及数字与字符的区别:

  SQL> col deptno for 999999999;  (9代表数字)

  SQL> col dname for a20;  (a代表字符,20代表宽度)

 

7. 清屏:SQL> host cls ;

 

检索:

8. 检索所有列、部分列、表达式、别名.

i. 所有列: 检索所有列可以用*号,也可以分别列出列名:

SQL> select * from dept;

SQL> select deptno, dname, loc from dept;

 

ii. 部分列: 检索部分列就要分别列出来了:

SQL > select deptnl, loc from;

 

iii. 表达式: 在检索中使用表达式(这里检索empEMPNO,ENAME,SAL(月薪),年薪(表达式),如果没有设置过上面提到的行宽页宽,可能会分成好几页挤在一起,可以看看上面的设置下),表达式直接使用比较简单:

SQL> select empno, ename, sal, sal*12 from emp;

 

iv. 别名: 什么是别名,顾名思义就是另外取个名字,当然一般是取比较简单明了的:

SQL> select empno, ename, sal, sal*12 AS “年薪” from emp;  (记得不区分大小 ,这里的AS和双引号””都可以省略, 当年薪中有其他符号如空格, 则不能省 )

 

SQL> select empno, ename, sal, sal*12 AS "年   薪" from emp;

 

SQL> select empno 编号, ename 姓名, sal "月 薪" from emp;

 

 

三、空值问题.

 

9. 空值(NULL): 任何数和null运算都为null

10. 空值不是空: null IS NOT NULL

11. 当遇到空值时, 可以使用滤空函数nvl(src, dest), src为空时nvl函数返回dest(dest   可以是数字或者字符串, 字符串和日期在sql语言用单引号扩起来)

12. 示例: 上面检索的年薪其实是不准的, 应该加上comm(奖金), 但是可以看出很多   人没有奖金, 这时候就有null空值干扰了, 可以使用滤空来解决:

      emp:

      

      未滤空时, 很多员工奖金都为空了:

  

  使用nvl()函数滤空之后(空即为0):

  

 

13. 使用条件语句where来找空值: 查询奖金为空(不空)的员工.

不能直接找comm = null, 否则结果为空

 

SQL> select * from emp where comm is null;

 

SQL> select * from emp where comm is not null;

 

 

四、四、其他 (dual, 连接符||, DISTINCT, 单双引号使用)

 

14. 前面提到的tab是数据字典, 记录着用户所建立的表. 这里在介绍一个伪表dual,     oracle超级管理员分配给普通用的资源. 如需要查看日期时, 可以用伪表来代替:

SQL> select sysdate from dual;

 

如果直接在emp等用户的表上查询, 则该表有几个记录就重复几个结果:

 

15. 连接符||. 这里借用伪表dual来应用连接符(顾名思义, 链接字符):

SQL> select 'Hello ' || 'Taylor !' from dual;  (这样就不会出现14行结果了)

 

 

16. 14点提到的重复现象, 当检索其他列如deptno(部门编号), 同样会出现重复现 , 但这里必须在emp表中检索, 这是就只能用distinct(有区别的) 来过滤了:

SQL> select deptno from emp;

 

SQL> select DISTINCT deptno from emp;

 

17. 单双引号使用: select语句中, 别名使用双引号, 字符串日期使用单引号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值