【01】-Oracle基本select语句

一、登陆.

1. 超级用户登陆:

i. sqlplus /nolog

ii. connect /as sysdba

 

 

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

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

 

 

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

 

 

3. 退出:quit,exit

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. 当看到上面的表dept的DEPTNO,觉得不需要这么宽,可以列宽(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. 表达式: 在检索中使用表达式(这里检索emp的EMPNO,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语句中, 别名使用双引号, 字符串和日期使用单引号

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐