SQLPLUS

SQLPLUS是ORACLE公司开发的很简洁的管理工具,SQLPLUS是最好的,最核心的ORACLE管理工具。SQLPLUS简洁而高效,舍弃浮华,反璞归真。使用sqlplus,进入sqlplus并进行简单的操作目的是熟悉oracle的小工具sqlplus的使用。

1、如何进入SQLPLUS界面

进入DOS,然后键入如下命令

C:\>sqlplus /nolog

进入字符界面

C:\>sqlplusw /nolog

进入windows界面,windows平台特有的。

/nolog是不登录的意思。只进入SQLPLUS程序提示界面。

等待你输入命令。

2、SQLPLUS的基本操作

Sql>connect / as sysdba

连接到本地的最高帐号

Sql>help index

Enter Help [topic] for help.

Sql>show all

显示当前SQLPLUS的环境设置

Sql>show user

显示当前所登录的用户信息

SQL> clear screen

有的时候sqlplus会显示的有点乱,光标不在最后,请清屏.

3、一些常用命令

Spool

命令是将屏幕的显示输入到文本文件内,以便查看,有点象屏幕转存。

SPOOL C:\1.TXT

SELECT * FROM EMP;

SPOOL OFF

以上三行就将SPOOL和SPOOL OFF所夹的屏幕输出到c:\1.txt文件中。

Spool c:\1.txt append

Select * from dept;

Spool off

加APPEND命令的含义是续写c:\1.txt,如果不加,将会把原来的c:\1.txt覆盖,这是10G的新特性,

以前的数据库版本不能续写,只能指定新的文件名称。

Run

运行SQLPLUS缓冲区内的SQL语句,可以缩写为r

/

与run命令相同,运行SQLPLUS缓冲区内的SQL语句

@脚本

@%oracle_home%\rdbms\admin\utlxplan.sql

该句话的含义为运行指定的脚本。

@@为运行相对路径下的脚本,一般是在大脚本调用小脚本的时候使用。

Save

将当前SQLPLUS缓冲区内的SQL语句保存到指定的文件中

如save c:\2.txt

Get

将文件中的SQL语句调入到SQLPLUS缓冲区内。

如 get c:\2.txt

Edit

编辑当前SQLPLUS缓冲区内的SQL语句,如ed

注释

--是注释当前行

/* */是注释多行

 

PS:注意书写语句的时候要加上分号 ” ; ”

 

















学习Oracle数据库(3)-SELECT语句

普通用户连接conn scott/tiger

超级管理员连接 conn “sys/sys as sysdba”

Disconnect 断开连接

把SQL存到文件 save c:\1.txt

Ed c:\1.txt编辑SQL语句

@c:\1.txt运行SQL语句

Desc emp描述EMP结构

Select * from tab 查看该用户下大所有对象

Show user显示当前用户

 

书写SQL语句的原则

大小写不敏感,但单引和双引内的大小写是敏感的。切记!

关键字不能缩写

可以分行书写,但关键字不能被跨行书写,单引内也不要跨行书写。

一般每个子句是一行

可以排版来增加可读性

字符串用单引

列的别名用双引

 

SELECT语句

1、  简单的Select语句

Select * from table 不指定查询的字段

Select attr1,attr2 from table指定查询某些字段

Select attr1,attr2 from table where attr1=xxx查询符合条件的指定字段

 

2、  使用算术表达式 + - / *

表达式的运算是有优先级的,和程序中的一样,先乘除后加减,括号强制优先级.

+ - * /

先乘除,后加减,括号强制优先级

Select ename,12*sal+300 from emp;

Select ename,12*(sal+300) from emp;

3、  连接运算符 ||

 

4、  使用字段别名 as

别名的使用原则

1。区分同名列的名称

2。非法的表达式合法化

3。按照你的意愿显示列的名称

4。特殊的别名要双引

5。直接写列的后面

6。使用as增加可读性

5、  空值 is null

Null值不等于0,也不等于空格。

Null值是未赋值的值,不入索引。

NULL是双刃剑,使用好了提高性能,你对它不了解,往往是错误的根源,切记!

查询NULL值

因为null不等于null,所以没有行被选出。未知不等于未知,无穷不等于无穷.

6、去除重复行 distinct

SELECT 语句显示重复的行。用DISTINCT语法来去掉重复的行。

如果我们想去掉重复的行,我们需要distinct关键字。

在ORACLE数据库的10G前版本,该语句需要排序才能去掉重复的行,而在10G中数据库并不需要

排序,而是使用HASH算法来去掉重复的行,由于避免了排序,从而极大的提高了SQL语句的效率,

因为10G的SQL内核改写了。效率更加的高。因为没有排序,所以输出也是无序的。

 

7、查询结果排序 order by asc(desc)

Where和order by 子句

语法

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table

[WHERE condition(s)]

[order by column|expression| alias ];

Where 一定要放在FROM 子句的后面。

显示表的部分行和部分列,使用where子句过滤出想要的行

Select deptno,ename from emp Where deptno=10;

 

Order by 放在最后,用来排序显示结果

不指明都是二进制排序,如果你想按照拼音,部首,笔画,法语等特殊的排序模式,请设定排序的环境

变量,关于国家语言的支持问题我们再DBA体系结构中描述。

默认是升序asc

降序要指定desc

8、比较运算符 > < (!= or <>) between and

 

 And运算

Select ename,deptno,sal From emp Where deptno=30 and sal>1200;

ENAME DEPTNO SAL

---------- ------ ----------

ALLEN 30 1600

WARD 30 1250

MARTIN 30 1250

BLAKE 30 2850

TURNER 30 1500

两个条件的交集,必须同时满足。

in操作 not in

含上下界

In操作,穷举,据说穷举不能超过1000个值,我没有去验证。一般我们也不会穷举到1000个值,如

果到1000请改写你的SQL。

Select deptno,ename,sal from emp Where deptno in(10,20);

9、模糊查询 like

% 表示零或多个字符

_ 表示一个字符

对于特殊符号可使用ESCAPE 标识符来查找

Like运算

_ 通配一个,仅匹配一个字符,

% 通配没有或多个字符

10、逻辑运算符 or and not

OR运算

Select ename,deptno,sal From emp Where deptno=30 or sal>1200;

ENAME DEPTNO SAL

---------- ------ ----------

ALLEN 30 1600

WARD 30 1250

JONES 20 2975

MARTIN 30 1250

BLAKE 30 2850

CLARK 10 2450

KING 10 5000

TURNER 30 1500

JAMES 30 950

FORD 20 3000

MILLER 10 1300

两个条件的并集,满足一个就可以。

 not运算

Select ename,deptno,sal From emp Where ename not like 'T%';

ENAME DEPTNO SAL

---------- ------ ----------

SMITH 20 800

ALLEN 30 1600

WARD 30 1250

JONES 20 2975

MARTIN 30 1250

BLAKE 30 2850

CLARK 10 2450

KING 10 5000

JAMES 30 950

FORD 20 3000

MILLER 10 1300

补集,不是T打头的员工。

 优先级

1。算术运算

2。连接运算

3。关系运算

4。 IS [NOT] NULL, LIKE, [NOT] IN

5。Between

6.not

7.and

8.or

括号强制优先级