sql脚本,也就是在文件中写有sql语句的文件,可以在sqlplus中运行。
引入sql脚本
sqlplus用户名/密码@sql脚本.sql
(注意:在用户名密码输入结束后一定要加空格然后再写@sql脚本)
Oracle中的空值会当作无穷大处理,其实空值根本就不会存储,只是看作是无穷大。
Oracle中控制处理函数NVL(字段名,值),这个字段中的空值替换为指定值,如果不为空,则会返回其原值。
例:select(salary*12)*(NVL(commission_pct,0)/100+1) salary,first_name
froms_emp;
distinct关键字,去掉重复行(这个关键字会处发排序操作)
例:selectdistinctdept_id,titlefroms_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目标列名(别名)排序顺序(不写排序顺序,会默认为升序排序)
例:selectfirst_namefroms_emp order by first_name;
selectfirst_namefroms_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.选择合适的运算符
Oracle SQL(Oracle 9i 9.2.0.1.0)
SQL(结构化查询语言),是操作关系型数据库中的对象。
DDL(数据定义语言)语句,用于建表或删表操作,以及对表约束进行修改。
DML(数据操作语言)语句,向表中插入纪录,修改纪录。
事务控制语句,commit; ,rollback;
授权语句
select语句(数据的查询),投影,过滤(选择)查寻,关联查寻(表连接)。
sqlplus访问数据库命令(本地访问/远程访问),和数据库建立连接的命令,是数据库操作的环境
sqlplus用户名/密码@脚本名.sql
(登陆数据库的命令,并且引入sql脚本)
show user显示当前用户的用户名
在sqlplus中可以使用!可以在shell和sqlplus间切换,!shell命令可以在sqlplus中使用shell命令。实际上是sqlplus开了子进程来执行shell命令。
Oracle数据库中的表分两类:用户表(用户使用操作的表),系统表(数据库系统维护的表,数据字典)
select查询语句
selecttable_namefromuser_tables;(查询系统表)
以上的查询语句就是查询本用户下所拥有的所有表的表名。
desc [表名]这是一条sqlplus命令,注意他不是sql语句,这条命令用于查看表的结构。
[字段名] [字段的类型],这是使用完desc命令后显示的表结构。
投影操作,只查看选择的字段的信息。
选择操作,查看字段中的特定某些信息。
多表查询,通过表间连接,查寻出多表中的信息
!oerr ora [错误号],系统可以显示错误的原因和如何修改。如果命令错误输入可以使用edit或ed来修改输入错误。实际上是在编辑缓存文件中的最后一条sql语句。
也可以使用(change) c /错误字段/正确字段,来进行替换操作进行修改。
select[表的字段名1],[表的字段名2], ...from表名;
select*from表名;查寻表中所有字段的信息
关键字不等拆分,sql语句,以及表名,字段名是大小写不敏感的。
sql语句要以";"结尾,来表示sql语句结束,如果不加";"系统不会执行此条sql语句,并提示。
sqlplus的buffer中会缓存最后一条sql语句,可以使用"/"来执行这最后一条sql语句,也可以使用
edit命令来编辑最后一条sql语句。l命令(list)(sqlplus命令)可以显示buffer中最后一条命令。
sqlplus设置
set pause on回车响应,分屏显示,只在本会话中有效
set pause off关闭分屏显示。
set pause '...'设置分屏显示的提示信息。
set pause on先输出提示信息,回车响应,分屏显示
set head off提头输出关闭
set feed off结尾输出关闭
set echo off回写关闭
spool文件名.sql写入指定文件
spool off关闭写入。
清屏命令!clear或clear screen
在Oracle中字符显示是左对齐,数值右对齐。
在select语句中可以使用数学表达式。
select[表达式(必须包含本表字段名)],[...],....from表名;
运算的优先级的先乘除后加减,同级自左向右运算,括号改变优先级。
select[字段名或表达式] ["别名"],[...] ["..."],....from表名;
可以通过在字段名或表达式后加空格"别名",可以给列,或者表达式结果其别名。
字符串拼接使用||符号
select目标字段名||" "||目标字段名from表名;
注意:在Oracle中的字符串要用'..'包含,别名中需要使用空格,或是大小写敏感时需要用".."包含。