转自:http://www.iteye.com/topic/847568
有部分修改
一
1、sqlplus 访问数据库命令
sqlplus 用户名/密码
2、显示当前用户的用户名
show user
3、改变身份可以
connect 用户名/密码 --- 这个是sqlplus命令
二
1、
select table_name from user_tables; --(查询当前用户的表)
2、
desc [表名] --这条命令用于查看表的结构。
3、
select [表的字段名1],[表的字段名2], ...from 表名; --关键字不等拆分,sql语句,以及表名,字段名是大小写不敏感的。在Oracle中字符显示是左对齐,数值右对齐。
4、在select 语句中可以使用数学表达式。
select [表达式(必须包含本表字段名)],[...],....from 表名;
运算的优先级的先乘除后加减,同级自左向右运算,括号改变优先级。
5、别名
select [字段名或表达式] [别名],[...] [...],....from 表名;
可以通过在字段名或表达式后加空格"别名",可以给列,或者表达式结果起别名。
6、字符串拼接使用||符号
select 目标字段名||" "||目标字段名 from 表名;
sqlplus的buffer中会缓存最后一条sql语句,可以使用"/"来执行这最后一条sql语句,也可以使用edit命令来编辑,用l命令(list)来显示。
注意:在Oracle中的字符串要用'..'包含。别名中需要使用空格,或是大小写敏感时需要用".."包含。
三、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 关闭写入。
四、sql脚本
也就是在文件中写有sql语句的文件,可以在sqlplus中运行。
sqlplus 用户名/密码 @sql脚本文件全名(包含路径)
注意:在用户名密码输入结束后一定要加空格然后再写@sql脚本
在脚本中最后一行写上“exit”,则运行完脚本以后,回到shell上
五、column命令
column命令 列格式的定义
column 目标列名 查看这个类是否定义了格式
column 目标列名 format a.. 设置列宽。
column last_name heading'Employee|Name' formAT A15
设置题头
这其中的'|'是换行符
SQL> select cnid ,salary from cn;
CNID SALARY
--------------------------------------------------
c001 10000
c002 9980
SQL> column cnid heading 'customer|id' format a10
SQL> column salary justify left format$99,990.00
SQL> select cnid ,salary from cn;
customer
id SALARY
---------- -----------
c001 $10,000.00
c002 $9,980.00
column 列名 clear (清除列格式定义)
六、单行函数
1、字符函数
字符是大小写敏感的
转小写lower(字段名) ---其中的参数可以是一个字符串常量或是一个字段名
转大写upper(字段名)
首字母大写initcap(字段名)
字符串拼接concat(字段1,字段2)
截取子串substr(字段名,起始位置,取字符个数)
dual表,是专门用于函数测试和运算的,他只有一条记录
字符串拼接concat(...,....)
求指定子串substr(...,起始位置,取字符个数)
可以使用"-"表示从右向左取,取的时候可以从左往右取。
select substr(first_name,-2,2) sub froms_emp;(取后两个)
select substr(first_name,2,2) sub froms_emp;(取前两个)
2、数值函数
四舍五入round(数据,保留小数点后几位)
可以用负数表示小数点前,0,表示小数点后第一位,也就是保留个位,-1表示个位(保留到十位)。
例:selectround(15.36,1) from dual;
截取数字函数trunc(数据,保留的位数(小数点后位数))截取个位之后补0
select trunc(123.456,1) from dual;
3、日期函数
全日期格式 世纪信息,年月日,时分秒。
缺省日期格式,日-月-年dd-mon-rr
修改当前会话的日期格式,会按照指定的格式输出日期
alter session set nls_date_format='yyyymm dd hh24:mi:ss';
返回当前日期sysdate
selectsysdate from dual;
select sysdate+1 from dual; --获得明天的日期,加1,单位是天
日期是格式敏感的
求两个日期间相隔了多少个月months_between(date1,date2)
加减指定数量的月份add_months(date,月数),月数可以为负,负值就是减去相应的月数。
从date日期开始的第一个星期五next_day(date,FriDay)
返回月末的日期last_day(date)
截取日期trunc(date,'年或月或日或时分秒')
select round(last_day(sysdate),'MONTH')from dual;
select add_months(trunc(sysdate,'MONTH'),1);
4、不同数据类型间转换函数
将日期转成字符tochar(date,'日期格式')
日期格式要用有效格式,格式大小写敏感'yyyy mm dd hh24:mi:ss',
'year'(全拼的年),'mm'(数字表示的月)'month'(全拼的月),'day'(星期的全拼),'ddspth'(日期的全拼)'yy mm dd'
select to_char(sysdate,'yyyy mm ddhh24:mi:ss')from dual;
将字符转换成数字to_number('...')
将数字转字符to_char(number,'fmt')fmt是数字格式
将字符串转成日期to_date('...','日期格式')
select to_char(to_date('2006 11 03','yyyymm dd'),'dd-month-yy') from dual;