* oracle 学习笔记第一天 **
oracle是什么?
数据库产品。
流行的数据库。
oracle oracle
ibm db2
sybase ase
informxs
oracle 提供什么?
rdbms(关系型数据库管理系统)
中间件 application server
dt开发工具。
erp解决方案。
关于oracle 版本。
企业版标准版个人版。
version 8-->8i-->9i-->10g
我们目前使用的是oralce 9i 9201 版本(企业版)
i---internet g---gred
关系db操作。
投影(projection)
过滤(filter)
关联(join)
约束(constraint)
索引(index)
oracle 环境。
which sqlplus
sqlplus是在安装oracle数据后安装的。
登陆oracle的命令:
sqlplus 用户名/密码。
出现sql>
表示你已经与数据库建立连接。
oracle中表。
user table
system table (data dictinary)
user table的ddl操作会触发system table的dml操作。
你的第一条select 语句。
select table_name from user_tables;(当前用户下用那些表)
运行select的标志是在语句后加分号。
重复运行最后一条语句。
键入/回车。
desc user_tables;(查看当前用户下系统表的结构)
desc是sqlplus命令。
sqlplus命令特点:
可以执行的命令:
sql命令,sqlplus命令,操作系统命令(实际是一个子进程去执行使用!或host)
是sqlplus特有的命令。
可以缩写(desc全写是describe)
如果你在执行语句时报错怎么解决。
掌握了以上两条命令你将解决以下问题:
表名不存在。
字段名不存在。
利用错误号来查错误。
oerr ora 出错**。
例如:sql>!oerr ora 942 (装完系统后会装一个oerr工具,用于通过错误号来查看错误的具体信息)
--实现sqlplus 与shell的切换(实际上!是sqlplus的子进程)
host命令同!使用。
sql>! 回车。
shell>
shell>exit
回到sqlplus
掌握 s_emp,s_dept表结构。
show user 显示当前登陆的身份。
set pause on
set pause off 分页显示。
clear screen 清屏。
oracle中默认日期和字符是左对齐,数字是右对齐。
table or view does not exist ; 表或示图不存在。
edit 命令用于自动打开vi修改刚修执行过的sql的命令。
修改方法二:
l 3 先定位到行。
c /旧串/新串。
保存刚才的sql语句: s**e 命令第二次保存时要替换之前的角本 s**e 文件名 replace
把刚才保的sql重新放入 buffer中。
spool 文件名。
此命令会把所有的操作存在某个文件中去。
spool off
练习1:查看s_emp表中员工的年工资。
select first_name , salary*12 salary from s_emp;
select first_name , salary*12 "annual salary" from s_emp;
给列起别名的命令:
方式1字段后空格跟别名。
方式2利用关键字 as
注:使用双引号将大小写敏感保持引号内容原样输出,如果不加双引号时,默认为大写。
拼接操作:select first_name||'last_name from s_emp ;
select first_name||last_name "employees" from s_emp ;
oracle中表达字符串用单引号来表达:
select first_name||'last_name from s_emp;(在两个字段之间拼接一个空格)
查看当前用户所有的表:
练习2:显示当前用户下所有表在每个表前有select * from字符串。
select 'select * from' |table_name ||
from user_tables;
动态的拼sql语句写入文件。
spool
select 'select * from' |table_name ||
from user_tables;
spool off
注:spool命令用储存终端。
动态生成脚本例子。
shell>edit
set head off--去除表头。
set feed off --去除最后一行。
set echo off --去除执行sql的显示。
spool
select 'select * from' |table_name ||
from user_tables;
spool off;存盘。注:
运行脚本。方式1:sql>
方式2:shell> sqlplus 用户名/密码
练习3:(查出s_emp表中所有员工的一年的总收入)
select first_name , salary*12*( 1+nvl(commission_pct/100 , 0 ) year salary "
from s_emp;
nvl函数将空值转为实际意义的值专用于处理空值的影响。
nvl函数实现重载支持date、char、number
空值可认为无穷大。
练习4:列出公司所有部门(排重)
select distinc name
from s_dept;
练习5:不同的部门不同的职位(复合唯一)
select distinct dept_id,title
from s_emp;
column 定义格式化输出。
sql>column last_name
sql>column last_name heading employee|name' format a15;
sql>column last_name clear;
sql>column salary justify left format $99,999.00 ( 定义工资的显示形式 )
l-local currency(受本地环境变量影响)
set lang = american_
setenv nls_lang 'simplified chinese_'/chinese
echo $lang
zh_ echo $nls_lang
simplified chinese_
下午。order by 排序升序和降序 asc 升序(默认) desc 降序。
select * from s_emp order by dept_id , salary desc 部门号升序,工资降序。
关键字distinct也会触发排序操作。
过滤操作: where 子句。
select * from s_emp where dept_id=42;
查看部门号为42的所有员工。
select * from s_emp where salary>1000
查看工资高于1000的所有员工。
select salary from s_emp where first_name='geroge'
找出名字为geroge的员工的工资数。
select table_name from user_tables where table_name='s_emp';
查某个具体表名时,表名的字符串必须要为大写。
日期的默认的格式 dd-mon-rr(缺省使用单引号)
between and 在什么之间 not between and 注意区间:[ 是一个闭区间。
in( list) 在某个集合中 not in (list) 空值会有影响 (等于list其中任何一个就行,为提高效率常把比例高的放在前面)
like 模糊配置 not like 通配比较。
is null 是空。andor
not练习4:(找出表名以s_开头的所有表)对于一些特殊字符,要用到escape转义。
select table_name from user_tables where table_name like 's\_%escape '\
单行函数: (dual 哑表 )
字符函数:lower 转小写。
select lower('sqlplus') from dual;
upper 转大写。
select upper('sqlplus') from dual;
initcap 首字符大写。
select initcap('tarena') from dual;
concat 连接字符串。
select concat(first_name , last_name) from s_emp;
substr 求子串。
select substr('tarenasd2008' ,1,6) from dual; (取前六个字符)
select substr('tarenasd0603',-2) from dual; (取后两个字符)
length 求字符长度。
select length('tarena') from dual;
nvl 空值函数。
select first_name , substr(first_name , 2 ) from s_emp; (查出s_emp表中所有用户名字的最后两个字符)
练习5:select first_name , salary from s_emp where lower(first_name)='george';
数值函数:round 函数 select round(45.935, 2) from dual; 不带参数时默认为0位小数。
trunc 函数 select trunc(45.995, 1) from dual;
ORACLE学习笔记
rac real application clusters 真实应用集群。ohs oracle http server sga system global area 系统全局区,是系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。实例 存取和控制数据数...
Oracle学习笔记
参数文件 记录了控制文件的位置,控制文件是一个非常小的二进制文件,最大。可以增长到 64mb,控制文件包括如下主要信息 数据库的名字,检查点信息,数据库创建的时间戳 所有的数据文件,联机日志文件,归档日志文件信息 备份信息等 有了这些信息,oracle 就知道那些文件是数据文件,现在的重做日志文件是...
ORACLE学习笔记
目录。oracla管理 1 1.登录sqlplus 1 1.1.sysdba 身份登陆 1 1.2.普通用户登陆sqlplus 1 2.常用命令 1 3.格式化提示符 2 4.查看系统状态 2 4.1.查看实例状态 2 4.2.查看表 2 5.关闭 启动 2 6.创建表空间 3 7.用户和权限 3 ...