Oracle 的使用整理
Oracle 的使用
1.1. SQLPLUS 的命令
初始化表的位置:
set NLS_LANG=american_america.us7ascii (设置编码才可以使用下面脚本)
cd $ORACLE_HOME/rdbms cd demo summit2.sql
*********************************
我们目前使用的是oralce 9i 9201 版本
select * from v$version;
恢复练习表命令:
sqlplus **/** @summit2.sql //shell要在这个文件的位置。
登陆 oracle的命令:
sqlplus 用户名/密码
show user 显示当前登陆的身份.
set pause on
set pause off 分页显示.
oracle 中默认日期和字符是左对齐,数字是右对齐
table or view does not exist ; 表或示图不存在
edit 命令用于自动打开vi 修改刚修执行过的sql 的命令。
修改方法二:
l 3 先定位到行 c /旧串/新串
执行出错时,利用错误号来查错误:
!oerr ora 942 (装完系统后会装一个 oerr 工具,用于通过错误号来查看错误的具
体信息)
想在 sql 中执行 unix 命令时,把所有的命令前加一个!就可以, 或者 host( 用于
从 sql 从切换至unix环境中去)
/*** 初次使用时注意 ****
运行角本时的命令:
先切换到 unix环境下,cd $oracle_home cd sqlplus cd demo 下面有两个角本
建表语句。
@demobld.sql
sqlplus nanjing/nanjing @demobid.sql 直接运行角本,后面跟当前目录或者是绝对
路径
保存刚才的 sql 语句: save 命令 第二次保存时要替换之前的角本 save
文件名 replace
把刚才保的 sql 重新放入 buffer 中
spool on 开启记录
spool off 关闭记录
spool 文件名 此命令会把所有的操作存在某个文件中去
常见缩写:
nls national language support 国家语言支持
1.2. SQL 的结构
|DDL 数据库定义
|DML 数据库管理
SQL――Commit rollback
|DCL 数据库控制
|grant+revoke 权限管理
表分为:系统表(数据字典),用户表
注:知道数据字典可以更便于使用数据库。
1.3. SQL 语句
1.3.1. 纵向投影操作 select
select * from student;
select name||’(‘||id||’)’ EMPLOYEE from employee;
select name,salary*13 from employee;
NVL function
如果原来的数值是null的话,由指定数值替代。
select last_name,title,salary*NVL(commission_pct,0)/100 COMM from s_emp;
1.3.2. column 使用
column(col) columnName clear/format/heading/justify format
column salary format $9999999.00 设置数字显示形式
column name fromat a15; 设置字符串显示 15 个字符
column salary justify left/right/center 输出格式
column salary heading text 设置显示的字段名
column clear 清除格式
column last_name;显示该字段名所用的格式
column salary justify left format $99,999.00 ( 定义工资的显示形式 )
1.3.3. order by
ORDER BY 排序 升序和降序 ASC 升序(默认) DESC 降序
select * from s_emp order by dept_id , salary desc
部门号升序,工资降序
关键字 distinct 也会触发排序操作。
select * from employee order by 1; //按第一字段排序
NULL被认为无穷大。order by 可以跟别名。
1.3.4. where 选择操作(横向投影)
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'; 查某个具
体表名时,表名的字符串必须要为大写
或者采用 upper(table_name)
select * from user_talbes where table_name like ‘s\_%’ escape ‘\’;
使用转义字符对关键字进行转义。
逻辑运算:
BETWEEN AND 在什么之间
NOT BETWEEN AND 注意区间:[ ]是一个闭区间
IN( LIST)