sql脚本,也就是在文件中写有sql语句的文件,可以在sqlplus中运行。
引入sql脚本
sqlplus 用户名/密码 @sql脚本.sql
(注意:在用户名密码输入结束后一定要加空格然后再写@sql脚本)
Oracle中的空值会当作无穷大处理,其实空值根本就不会存储,只是看作是无穷大。
Oracle中控制处理函数 NVL(字段名,值),这个字段中的空值替换为指定值,如果不为空,则会返回其原值。
例:select (salary*12)*(NVL(commission_pct,0)/100+1) salary,first_name
from s_emp;
distinct关键字,去掉重复行(这个关键字会处发排序操作)
例: select distinct dept_id,title from s_emp;
注意:distinct,关键字之后会对from之前的字段进行排重操作。
column命令(这是个sqlplus命令)
column命令 列格式的定义
column 目标列名 查看这个类是否定义了格式
column 目标列名 format a.. 设置列宽
column last_name heading 'Employee|Name'(设置题头) FORMAT A15
这其中的'|'是换行符
column salary justify left format $99,990.00(定义数字显示格式)
注意:如果不满足显示的格式,就会把数据显示为"#"
column 列名 clear (清除列格式定义)
注意:只有sqlplus命令才有简写,并且在使用sqlplus命令时结尾也不能加分号。
选择操作
order by 排序子句 ASC(默认,升序) DESC(降序)
order by 目标列名(别名) 排序顺序(不写排序顺序,会默认为升序排序)
例:select first_name from s_emp order by first_name;
select first_name from s_emp order by first_name desc;
注意:升序空值在结果的末尾,降序空值在结果的最前面。
where子句
where子句使用在 select ... from ... 后面,用来选择所需(符合条件的)的记录
where后面跟的是表达式 也就是 XXX=XXX, XXX between X and X ,XXX in(X,X,X)
like '...' 通配查询
between ... and ... ,表示结果在这之间,between and是一个闭区间,
也就相当于... <= ... and ... >= ... 。
!=,<>,^=,这三个都标识不等于,<=,>=,=,这些运算符都可以使用。
... in (va1,val2,...) 判断结果是否在这个枚举中存在
like '...' 字符串通配查询,'%'表示多个字符,'_',表示一个字符。
... and ... 表示只有两个条件同时满足
... or ... 表示条件只要满足其中只一就可以
all(数据或子查询)。
例
select first_name from s_emp where salary<>all(2500,1500);
all中的数据和纪录中的值全部一致,一般使用!=all(),来过滤在某个范围纪录
not .....,则是可以与以上的条件产生反效果。
空值会对not in造成影响,也就是不等于任何值,但是空值例外。
... is null 使用来判断值是不是空。
转义,使用escape定义转义符 'S\_%' escape '\',使用转义,可以避免和运算符相同的字符的查询
例:
select table_name from user_tables where table_name like 'S\_%' escape '\'
注意:Oracle中的字符串是严格区分大小写的。
1.注意数据类型,数字类型直接写,字符用'......' ,缺省格式的Date可以用'......',只有别名才用" "包含。
2.选择合适的运算符