1.列出当前用户的全部表:
select * from tab;
2.sqlplus还可以执行操作系统本身的命令。命令格式为:HOST 操作系统命令
例如打开windows注册表,使用:host regedit;打开词本程序使用:host notepad
3.退出sqlplus
exit或quit
4.help命令
格式为:help 命令名称
如:help desc
5.清屏命令
clear screen或clear src
在sqlplus中也可以使用host cls;来清屏
6.显示当前用户
show user
7.set linesize 设定行宽
8.set pagesize 设定每页的行数
9.distinct关键字用来消除重复
10.in和not in
11.and,or,not,between...and,order by,like
12.SQL(structured query language)结构查询语言
DML(Data Manipulation Language)数据操作语言---用于检索或者修改数据
DDL(Data Definition Language)数据定义语言---用于定义数据的结构,如创建、修改或者删除数据库对象
DCL(Data Control Language)数据控制语言---用于定义数据库用户的权限
13.数据库系统中,各个数据库之间的最大区别就在于函数的支持上,使用函数可以完成一系列的操作功能。
14.使用ed buf.sql(文件名随便取),会新建一个buf.sql文本文件,我们的sql脚本可以写在buf.sql上。保存,然后运行@buf.sql(对于*.sql形式的文本,直接运行@buf.sql也可以)。
就可以执行刚才在buf.sql上保存的sql脚本。
15.针对14,使用start 文件名也可以的。例如,start buf.sql
16.视图是一种特殊的表,是建立在基表上的虚表。它可以由一个基表中选择的某些行和列组成,也可以由几个表中满足一定条件的数据行组成。视图反映了一个或多个基表的局部
数据,但它本身并不存放数据,其数据仍然存储在基表中。因此,视图是基表的一个数据窗口,但通过视图可对表中数据操作。视图是实现对数据的保密及数据安全性的一种手段,
同时也简化了对数据库的存取操作。要引用视图必须先创建视图,视图创建后,可以通过视图对数据库表中的数据进行查询、增加、删除等操作。对已创建的视图,如果不再使用
也可以将其删除。
●创建视图的一般格式为:
create view 视图名(视图列表名)
as [select语句]
例如:创建一个视图,使它包含10号部门职员的职工名、工程、月工资及全年的工资总额的信息。可输入如下命令:
create index emp10_view(person,title,salary,annual_sal)
as
select ename,job,sal,sal*12 from emp where deptno = 10;
●视图的使用
视图是基表的数据窗口,通过视图可对基表中数据进行查询、增加、删除及修改数据等操作,这对用户来讲,对视图可如同对表一样进行操作。
要求通过视图emp10_view查询10号部门中工资低于5000元的职工的有关信息。并按工资由高到低顺序显示。
select * from emp10_view where salary<5000 order by salary desc;
对基表emp查询查询10号部门中工资低于5000元的职工的有关信息。并按工资由高到低顺序显示。
select * from emp where sal<5000 and deptno=10 order by sal desc;
通过视图执行查询与通过对应的基表执行查询,其结果相同。
对视图进行查询,实际是用户通过视图对数据库基表中的数据进行查询。但使用视图简化了用户查询命令,因为视图定义的子查询中,可带有一定的条件,这样对表进行
复杂查询的部分条件可放在视图定义中,所以用户不需要复杂的条件就能通过视图获得相同的信息。
视图查询所用条件"salary<5000"等价于基表所用的查询条件"deptno=10 and sal<5000"的部分。
通过视图对表中对表中的数据做增,删,改等更新操作,如同对基表操作一样,但需要注意以下几点:
●删除操作(delete)
①仅能对意表创建的视图进行操作
②定义视图的子查询中,不含有group by子句,distinct子句及各分组函数等项。
●更新操作(update)
①仅能对意表创建的视图进行操作
②定义视图的子查询中,不含有group by子句,distinct子句及各分组函数等项。
③子查询中没有定义任何带有表达式的更新列
●插入操作(insert)
①仅能对意表创建的视图进行操作
②定义视图的子查询中,不含有group by子句,distinct子句及各分组函数等项。
③子查询中没有定义任何带有表达式的更新列
④定义视图的基表中所有"not null"列,都要在该视图中出现。
●删除视图
drop view 视图名
17.子查询中不能含有"order by"子句,因为子查询的结果不显示,只作主查询的条件。
18.in 和not in表示是否包含,是否在;any表示的语义是"至少比..."。all表示的主义是"比所有的都"。
19.索引(index)
①建立索引
create [unique] index 索引名 on 表名(字段...)
如:为emp表建立以empno为索引列的惟一性索引
create unique index index_no on emp(empno);
②删除索引
drop index 索引名称
20.oracle时间函数
①当前日期
select sysdate from dual; 或者 select current_date from dual;
②to_char函数
●取得时间的年月日
select hiredate,to_char(hiredate,'YYYY') year,to_char(hiredate,'MM') month,to_char(hiredate,'dd') day from emp;
21.常用聚焦函数
●count():求出全部的记录籽
●max():求出一组中的最大值
●min():求出一组中的最小值
●avg():求出平均值
●sum():求和
22.分组统计
范例:求出每个部门的员工数量
select deptno,count(empno) from emp group by deptno;
如下sql脚本是错误的:select deptno,max(sal) from emp;会提示:不是单组分组函数。需要遵循的如下:
①如果程序中使用了分组函数,则有两种可以使用的情况。
●程序中存在了group by,并指定了分组条件,这样可以将分组条件一起查询出来。
●如果不使用分组的话,则只能单独使用分组函数
②在使用分组函数时,不能出现分组函数和分组条件之外的字段
select deptno,empno,count(empno) from emp group by deptno;
这里会报错,提示empno不是group by 表达式。这里违反了②。
③分组函数只能在分组中使用,不允许在where子句中出现。而只能通过having子句。
④全部分组函数都忽略空值(null),只有count(*)除外(注意只有是*的时候不忽略)。
23.union运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。(需要记住它去掉了重复行)当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 使用union必须要保证两个中间结果具有相同的列数,且对应列数的数据类型要一致。
24.表复制
create talbe 表名 as select * from talbe_name