Oracle语法札记

alter tabel abc add c number; 修改表 加个字段
alter table abc drop column c;删除一个字段
ALTER TABLE table_name modify (name varchar2(30)default 'hebei'); 或者用ALTER TABLE table_name modify name varchar2(30)default 'hebei'; 修改字段

grant select on 表名 to 用户名; 授权操作
revoke select on 表名 from 用户名 解除

select length('abc') from dual;
select substr('abc',1,3) from dual; 接字符串
select to_char(sysdate,'yyyy hh24') from dual; 需加24来标示是 24小时制的

dual是oracle数据库默认提供的一个一行一列的数据库空表,常常用来使用一些oracle函数,如:select sysdate from dual; 存在于sys 数据库中

select 7*9 from dual;

在oracle中 mm 和MM 都代表月份, 但字段中有空值的时候用count无法准确查找这个天数
decode()--> decode(列名,'可能值',代替值,否则值)
selecet sum(decode(sex,'男',1,0)) from lin;
-------------------------------------------------------
sqlplus "sys/密码 as sysdba" 只要是sys登录一定是以sysdba或者是身份的
sql*plus下:connect to sys/密码 as sysdba
startup
shutdown immediate 立即断开 而 shutdown 要等所有用户操作后才断开
-------------------------------------------------------
help index 支持的命令
?或者help 查看命令
set SQLBLANKLINES on 设置可以跨行操作
select * from v$parameter where name=&name 变量的代替

list 用来查看在缓冲区写的命令 简写为l l3表示查看缓存中第三条语句
c/FRON/FROM c简写change --但貌似好像只修改缓存中的最后一条语句
可用 /来重复执行缓冲区里的命令
DEL 4 删除缓冲区第4行
DEL 2 3 删除2到3行
A FROM students 用来在缓冲区里追加语句 再用/执行
save c:\oracle.txt 保存缓冲区的语句
@c:\oracle.txt 用来执行一个文件里的语句
get c:\oracle.txt 获取文件里的语句 但没有被执行
执行缓冲区的命令用/方式来执行
edit
describe 来显示描述 简写desc

set LINESIZE 50
ITITLE CENTER "我的标题" SKIP 1-
LEFT "测试表格" RIGHT "页" -
ITITLE OFF

spool c:\oracle.txt 保存结果集到文件中
select * from stud
spool off

edit c:\oracle.txt 可以打开文本编辑器编辑

------------------------------------------
SQLPLUS / nolog --不登陆连接
sqlplus / as sysdba --通过操作系统验证之后
sqlplus scott/trigger@t:32.1.11.20:1521:orad
@t:网络协议,表示TCP/IP

select name,type,value from v$parameter where name=&name
&name的可能取值:(db_2k_cache_size,sga_max_size,log_buffer,shared_pool_size,java_pool_size)

selecet name, type,value,description from v$parameter where name like'%processes%'用来查看 进程的情况 value指系统能启动进程的最大值,但等于该值时就不能再创建进该程了

select * from v$session where type='user' 用来获取用户的会话信息
select name,status,enabled ,bytes from v$datafile;用来查找数据文件的语句,通过动态性能表

操作视图就是操作基本表
create or replace view myview as selecet * from lin where no>30 with check option(用来限制视图);
| with read only (视图只读)

在视图中 若视图是基于2个以上的基表时 则不允许同时对基表进行插入
desc user_views 查看试图结构
select text from user_views where view_name='..';

----------------------------------------------------
使用decode()
decode()--> decode(列名,'可能值',代替值,否则值)
selecet sum(decode(sex,'男',1,0)) from lin;

查看用户下所有的表
SQL>select * from user_tables;

查看名称包含log字符的表
SQL>select object_name,object_id from user_objects
where instr(object_name,'LOG')>0;
学会instr函数的用法

查看序列号,last_number是当前值
SQL>select * from user_sequences;

查看视图的名称
SQL>select view_name from user_views;

查看函数和过程的状态
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE';

查看控制文件

select name from v$controlfile;
查看控制文件中记录文档段的信息:
select type,record_size,records_total,records_used from v$controlfile_record_section where type='datafile' --查看数据文件的相关信息


5、查看日志文件 select member from v$logfile;

9、查看数据库的创建日期和归档方式 Select Created, Log_Mode, Log_Mode From V$Database;
-----------------------------------------
用系统管理员,查看当前数据库有几个用户连接:
SQL> select username,sid,serial# from v$session;

如果要停某个连接用

SQL> alter system kill session 'sid,serial#';
如果这命令不行,找它UNIX的进程数

SQL> select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr;

说明:21是某个连接的sid数

然后用 kill 命令杀此进程号。

b、在sqlplus下得到帮助信息
列出全部SQL命令和SQL*Plus命令
SQL>help
列出某个特定的命令的信息
SQL>help 命令名

使用INPUT命令可以在SQL缓冲区中增加一行或多行
SQL>i
SQL>输入内容

a、表的创建、修改、删除
创建表的命令格式如下:
create table 表名 (列说明列表);

为基表增加新列命令如下:
ALTER TABLE 表名 ADD (列说明列表)
例:为test表增加一列Age,用来存放年龄
sql>alter table test
add (Age number(3));

修改基表列定义命令如下:
ALTER TABLE 表名
MODIFY (列名 数据类型)
例:将test表中的Count列宽度加长为10个字符
sql>alter atble test
modify (County char(10));


年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS

CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1
MAXVALUE 99999 CYCLE NOCACHE;
----------------------------------------------
DELETE FROM表名 WHERE 条件;

注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.
如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间
TRUNCATE TABLE 表名;
此操作不可回退.
4.TRUNCATE (清空表里的所有记录, 保留表的结构)
-----------------------
把表放在或取出数据库的内存区
ALTER TABLE 表名 CACHE;
ALTER TABLE 表名 NOCACHE;

查看放在ORACLE的内存区里的表
SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;
--------------------------
函数大全:
NVL(EXPR1, EXPR2)函数
F EXPR1=NULL
RETURN EXPR2
ELSE
RETURN EXPR1

DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数
解释:
IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL

LPAD(char1,n,char2)函数
解释:
字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位

INSTR(字段名, ‘字符串’)>0
字段名 LIKE ‘字符串%’ [‘%字符串%’]

每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.

ROWID中内容的意义:
OOOOOO:表示该条记录所在数据对象编号,同一个表所有的记录的ROWID前六个都一样
FFF:表示该条记录所在的某一表空间中的数据文件编号。若相同则表示存储在同一个数据文件中
BBBBBB:表示数据文件中数据块的编号,而不是相对于表空间的,所以判断两条记录是不是在同一个块
要判断FFF和BBBBBB都一样
RRR:该条记录的编号,同一个表中的所有记录该RRR都不一样

利用ROWID可以唯一标示一条记录,查询表的存储结构,快速查找一条记录
-----------------------------------------
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;

to_char(sysdate,"yyyy-MM-dd"); 其中一定要为date类型的转化
to_date("2008-9-7","yyyy-MM-dd") 其中一定要为char类型的转化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值