|
的最大整数,忽略余数
CEIL(A);――返回大于或者等于n的最小整数
SELECT SYSDATE FROM dual;――返回系统时间
SELECT * FROM EMP WHERE sysdate>ADD_months(hiredate,8);返回系统时间8个月之前的员工
SELECT trunc(sysdate-hiredate) "入职天数" FROM EMP; ――返回入职天数
SELECT hiredate,ename FROM EMP WHERE last_day(hiredate)-2=hiredate; ――返回每月倒数第2天的员工
转换函数:
TO_CHAR(A,'');
TO_DATE(A,'');
系统函数:
SELECT sys_context('USER env','db_NAME') FROM dual; ――language:当前语言,SESSION_USER :当前用户,current_schema:当前方案
进行行迁移:
INSERT INTO r2(A1,A2,A3) SELECT a1,a2,a3 FROM r1 WHERE ...;
导出:
导出表,导出方案,导出数据库
EXP命令,要从命令行进入oracle中的bin 目录
USER id,TABLEs,owner,full=y,inctype,rows,file
导出表的结构而不导入数据:
EXP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp rows=n
导出表:
EXP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp
下面这种方式导出快
EXP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp direct=y
导出方案:
EXP USER id=learning/123456@XE owner=learning file=E:\DeskTop\EMP.dmp
导出全部:
EXP USER id=system/123456@XE full=y inctype=complete file=E:\DeskTop\EMP.dmp
导入表的结构,而不导入表的数据:
IMP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp rows=n
导入表:
IMP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp
导入数据,如果表已经存在只导入数据:
IMP USER id=learning/123456@XE TABLEs=(EMP) file=E:\DeskTop\EMP.dmp ignore y
导入表到其他用户
IMP USER id=system/123456@XE TABLE=EMP file=E:\DeskTop\EMP.dmp TOUSER =learning;
导入数据库:
IMP USER id=system/123456@XE full=y file=E:\DeskTop\EMP.dmp TOUSER =learning;
建立表空间:
CREATE TABLESPACE data01 datafile 'E:\data01.dbf' size 20m uniform size 128k;
增加数据文件:
ALTER TABLESPACE data01 ADD datafile 'E:\data02.dbf' size 20m;
增加数据文件的大小:
ALTER TABLESPACE data01 'E:\data01.dbf' resize 20m;
设置文件的自动增长:
ALTER TABLESPACE data01 'E:\data01.dbf' auTOextEND on next 10m maxsize 500m;
磁盘损坏时的做法:
确定数据文件所在的表空间:
SELECT TABLESPACE_NAME FROM dba_data_files WHERE file_NAME='E:\data01.dbf';
使表空间脱机:
ALTER TABLESPACE data01 offline;
移动表空间:
host move E:\data01.dbf D:\data01.dbf
对数据库文件进行逻辑修改:
ALTER TABLESPACE data01 RENAME datafile 'E:\data01.dbf TO D:\data01.dbf';
使得表空间联机:
ALTER TABLESPACE data01 online;
使用数据库表空间:
CREATE TABLE r(deptno NUMBER(4),dNAME varchar2(14),loc varchar2(13)) TABLESPACE data01;
查询表空间中的表:
SELECT * FROM all_TABLEs WHERE TABLESPACE_NAME='DATA01';//注意大写
查询表处于哪个表空间:
SELECT TABLESPACE_NAME,TABLE_NAME FROM USER _TABLEs WHERE TABLE_NAME='EMP'; //注意大写
删除表空间:
DROP TABLESPACE DATA01 including contents and datafiles;
表级定义:
在定义了列之后添加约束
列级定义:
在定义列的同时添加约束
创建一个存储过程,该过程可以向某表中添加记录
CREATE TABLE mytest(
name VARCHAR2(30),
password VARCHAR2(30)
);
CREATE OR REPLACE PROCEDURE b IS
BEGIN
--执行部分
INSERT INTO mytest VALUES('jack','123456');
END;
/
CREATE OR REPLACE PROCEDURE b IS
BEGIN
--执行部分
DELETE FROM mytest WHERE name='jack';
END;
/
REPLACE表示如果有相同的过程名就替换,b表示过程名
查看错误信息:
SHOW error;
如何调用该过程
1:EXEC 过程名(参数值1,参数值2);
2:CALL 过程名(参数值1,参数值2);
定义常量时,建议用v_作为前缀v_sal
定义常量时,建议用c_作为前缀c_rate
当定义游标时,建议用_cursor作为后缀EMP_cursor
当定义例外时,建议用e_作为前缀e_error
SET serveroutput ON;--开启显示内容
SET serveroutput OFF--关闭显示内容
BEGIN
DBMS_OUTPUT.PUT_LINE('helloworld');
END;
/--这个最后在加上
--显示雇员名,薪水
DECLARE
v_ename VARCHAR2(5);
v_sal NUMBER(7,2);
BEGIN
SELECT ename,sal INTO v_ename,v_sal FROM EMP WHERE EMPno=&no;
--输出
DBMS_OUTPUT.PUT_LINE('雇员是:'||v_ename |