$ORACLE_HOME oracle产品的安装路径
sqlplus sd0909/sd0909 @summit2.sql
ddl数据定义语言
dml数据操作语言,增删改
transaction tcl commit rollback savepoint保留点
放数据是靠事务放,dml语句加上这个事务的控制语句就叫一个事务(到后面你就明白事务是什么了)
RDBM关系型数据库:oracle公司名,也是产品名字。oracle10.2.0 , mysql, IBM的DB2,sybase ASE的。
desc是describe缩写, 可以查看表的结构,describe也可以用在oeacle也可以用在mysql中
在这里我们主要操作的表:s_emp,s_dept,s_region
select必须支持的3个操作:1,投影操作;2,选择操作,如我想知道4部门42有哪些员工;3,连接操作
select *
运行有两种方式:1,;回车 2加/
使用edit修改
;号一敲就把语句传给进程(server process)分析,写sql语句应该写一样的sql语句,要规范,不然工具在分析的时候会多分析一次,大写就要全大写,小写就全小写,oracle把经常访问的数据放一起,每一条语句都存在内存中,等下一个用户再访问的时候直接查找内存是否存在这语句,没有就存入,有就直接用。oracle自动将字段,
从功能上讲oracle大小写不敏感的,从性能上敏感,送上去的语句一样会好解析一点,充分共享,查询语句最好都用大写形式,提高效率。
!感叹号,退出plus
ps可以看进程
ps -ef|grep 2340
算数表达式里含有空值的话,最后整个表达式结果就是空,
clear清屏
别名用双引号select first_name, salary*12 "ann salary" from s_emp
nvl函数把空值转为具体的值,nvl(salary,100)如果第一个参数是空的话,那么函数返回的值是100,否则就是自己,
nvl(start_date,'01-jan-95')
nvl(title,'no title yet')
nvl(salary,100)
select first_name, salary*12*(1+nvl(commission_pic,100)/100) "totsal"取别名 from s_emp
select first_name||last_name employee from s_emp拼接
select first_name||' '||last_name employee from s_emp这样就有个空格隔开
l 谁在什么什么部门上班:
select first_name||'is in department'||dept_id||'.' "employee" from s_emp; "employee"是前面完整的别名
select first_name,dept_id,salary*12 ann_sal
from s_emp
where salary > 1000;在where子句里能不用表达式的尽量不用表达式
select first_name,commission_pct
from s_emp
where commission_pct = null//这个写法是错误的,不会报错,但是没有结果的,使用is null
order by 有以下类型:
order by name desc降序,order by name asc
select first_name ,salary*12 where dept_id=41 order by 2 desc;
select first_name ,salary*12 ann_la where dept_id=41 order by salary*12 desc;
空值降序在最上面,升序在下面,order by name,id desc先按第一个字段排再按第二个字段排
select table_name from user_tables where table_name like'S/_% escape '/';