oracle 学习笔记

发布 2021-05-11 23:15:28 阅读 5146

* 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 ...