`
saboo
  • 浏览: 72047 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle 总结与练习

阅读更多

 

create table order_status
(
    id integer constant order_status_pk primary key ,
    status varchar(120) ,
    last_modified date default sysdate
);
------------------------ 约束 ------------
-- check 约束
alter table order_status add constraint order_status_ck check (status in ('BeiJing','ShangHai','TaiWan'));
alter table order_status add constraint order_status_ck check (id>0);
insert into order_status values(132,'ShangHai');
-- Not Null 约束
alter table order_status modify status constraint order_status_newref not null;
alter table order_status modify last_modified  not null;
-- 外键约束
create global temporary table test_orderstatus
(
    id integer constraint order_statustest_pk primary key,
    status_id number(15),
    status varchar(120),
    last_modifieddate date default sysdate
);
alter table test_orderstatus add constraint order_statusmodify_fk status_id reference order_status(id);
-- Unique 约束
alter table order_status add constraint order_status_up unque(status);
-- 删除列
alter table test_orderstatus drop column status_id ;
-- 删除约束
alter table order_status drop constraint order_status_up ;
-- 禁用约束(Disable References)
alter table order_status add constraint order_status_uq unique(status) disable;
-- 使用禁止约束
alter table order_status disable constraint order_status_uq;
-- 启用约束(ReStart References)
alter table order_status enable constraint order_status_uq;
-- 只对新插入的数据才执行当前约束
alter table order_status enable novalidate constraint order_status_uq;
-- 创建唯一约束为延迟约束    Deferrable是否为延迟约束 或 Not Deferred
alter table order_status add constraint order_status_uq unique(status) deferrable initially deferred;
-- Delete
drop table test_orderstatus
drop table order_status


----------- SEQUENCE 序列 
CREATE SEQUENCE emp_sequence
INCREMENT BY 1  -- 每次加几个
START WITH 1    -- 从1开始计数
NOMAXVALUE      -- 不设置最大值 , 如:minvalue 0 , maxvalue 999999 最大值为999999
NOCYCLE         -- 一直累加,不循环   ; cycle 循环
CACHE 10 ;

一旦定义了emp_sequence,你就可以用 CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL


可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

SELECT empseq.currval FROM DUAL;

ALTER ANY SEQUENCE 权限才能改动sequence

DROP SEQUENCE order_seq;


--------- 函数

select ascii('A') A , ascii('a') a , ascii('0') zero, ascii(' ') space from dual ;

-- GREATEST 返回一组表达式中的最大值,即比较字符的编码大小
select greatest('AA','AB','AC') from dual;
select greatest('啊','安','天') from dual;

select chr(54740) zhao,chr(65) chr65 from dual;

select concat('010-','88888888') || '转23' MyTel from dual ;   -- concat 和 || 都是连接字符串

select length('范德萨') as len1 ,length(to_char(666)) as len2 from dual;

select abs(100),abs(-100),acos(-1), asin(0.5), atan(1) from dual ;
select cos(-3.1415927) from dual;  --返回一个给定数字的余弦值
select sin(1.57079) from dual;     --返回一个给定数字的正弦值
select cosh(20) from dual;    --返回一个数字反余弦
select sinh(20) from dual;    --返回双曲正弦值
select tan(20), tan(10) from dual;    --返回数字的正切值
select tanh(20), tanh(20) from dual;  --返回双曲正切值

select exp(2),exp(1) from dual;  --返回一个数字e的m次方根

-- LOG(n1,n2) 返回一个以n1为底n2的对数
select log(2,1), log(2,4) from dual; 

-- MOD(n1,n2) 返回一个以n1为底n2的余数
select mod(10,3), mod(3,3), mod(2,3) from dual;

-- POWER(n1,n2) 返回一个以n1为底n2的方根
select power(2,10), power(3,3) from dual;

-- SQRT 返回数字n的根
select sqrt(64),sqrt(10) from dual;

select ceil(3.1415926) from dual;
select floor(3.14159),floor(3.54159) from dual;

-- LN 返回一个数字的对数值
select ln(1),ln(2),ln(2.7182818) from dual;

-- TRUNC 按照指定的精度截取一个数
select trunc(124.1666,-2) ,trunc(124.16666,2) from dual;
select round(55.6), round(55.4),round(-55.4),trunc(55.5), trunc(-55.5) from dual;

-- SIGN 取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
select sign(123), sign(-123), sign(0) from dual;

-- INITCAP 返回字符串并将字符串的第一个字母变为大写
select initcap('smith') upp from dual;

select lower('AaBbCcDd') AaBbCcDd,
       upper('AaBbCcDd') AaBbCcDd from dual;

-- RPAD 在列的右边粘贴字符   LPAD 在列的左边粘贴字符
select lpad(rpad('gao',10,'*'),27,'*') from dual;

-- LTRIM 删除左边出现的字符串   RTRIM 删除右边出现的字符串
select ltrim(rtrim('    gao qian jing    ',' '),' ') from dual;
-- TRIM('s' from 'string')  LEADING 剪切前面的字符串   TRAILING 剪切后面的字符串   如果不指定,默认为空格符
select trim('s' from 'string') from dual;

-- INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符串位置
-- C1 被搜索的字符串  C2 希望搜索的字符串 I 搜索开始的位置,默认为1  J 出现的位置,默认为1
select instr('oracle traning', 'ra',1,1 ) instring from dual;   --返回 2
select instr('oracle traning', 'ra',1,2 ) instring from dual;   --返回 9

-- SUBSTR(string,start,count) 取子字符串,从strat开始(按个数),取count个
select substr('13088888888',3,8) from dual ;   -- 返回 0888 8888

-- REPLACE('string','s1','s2')  string 希望被替换的字符串或变量  s1 被替换的字符串   s2 要替换的字符串
select replace('he love you','he','I') from dual;

-- SOUNDEX 返回一个与给定的字符串读音相同的字符串
create table table1 (xm varchar(8));
insert into table1 values('weather');
insert into table1 values('wether');
insert into table1 values('gao');
select xm from table1 where soundex(xm) = soundex('weather');
drop table table1;

-- ADD_MONTHS 增加或减去月份
select to_char( add_months(to_date('199912','yyyymm'),2 ),'yyyymm') from dual;

-- LAST_DAY 返回日期的最后一天
select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;
select last_day(sysdate) from dual;

-- MONTHS_BETWEEN(date2,date1) 给出date2-date1的月份
-- select months_between('19-12月-1999','19-3月-1999') from dual; Error

-- NEXT_DAY(date,'day') 给出日期date和星期x之后计算下一个星期的日期
--select next_day('18-5月-2001','星期五') next_day from dual;  Error

-- NEW_TIME(date,'this','that') 给出在this时区=other时区的日期和时间
select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,
       to_char(new_time(sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;
      
select to_char(sysdate,'dd-mm-yyyy day') from dual;

-- trunc(date,fmt) 按照给出的要求将日期截断,如果fmt='mi'表示保留分,截取秒
select to_char(trunc(sysdate,'hh'), 'yyyy.mm.dd hh24:mi:ss') hh,
       to_char(trunc(sysdate,'mi'), 'yyyy.mm.dd hh24:mi:ss') hhmm from dual;

select to_number('1999') from dual;

-- BFILENAME(dir,file)
insert into file_tb1 values( bfilename('lob_dir1','image1.gif') );

select user from dual;
select username,user_id from dba_users where user_id = uid;

-- select avg() , max(), min(),count(),sum()

-------------------
-- rownum 查询记录列的行,如果有两条一样的数据,可以用rownum标识,然后根据rownum不同删除一条

 

---
select * from all_sequences  --查询数据库所有sequence

select * from all_tables    --查询数据库所有表

1
4
分享到:
评论

相关推荐

    oracle总结习题练习

    oracle详细总结,经典习题练习让你,巩固已经学习过的知识

    oracle精品实例,练习总结

    这个"oracle精品实例,练习总结"的压缩包文件显然包含了nickcheng个人整理的一系列关于Oracle数据库的操作实例和学习心得,旨在帮助用户深入理解和应用Oracle技术。下面我们将深入探讨Oracle数据库的一些关键知识点。...

    oracle实战练习

    在实践过程中,建议你动手创建自己的数据库实例,根据提供的"Oracle实战练习"逐步操作,遇到问题时查阅官方文档或在线资源,不断试错并总结经验。记住,理论知识与实际操作相结合是学习Oracle的最佳途径,避免单纯地...

    oracle练习题 总结了一下几个经典的

    这些练习题涵盖了Oracle数据库的基本查询技巧,包括子查询、连接操作、聚合函数、条件判断以及各种内置函数的使用。通过解决这些问题,可以深入理解Oracle SQL和PL/SQL的用法,并提升在实际数据库管理中的技能。

    oracle数据库练习题emp练习题

    根据提供的Oracle数据库练习题及其描述,我们可以逐一解析并总结出其中涉及的重要知识点: ### 一、多表查询 1. **子查询与多表连接**: - 练习题目中涉及到了`emp`表与`dept`表的关联查询。 - 例如:“获取在同...

    oracle 练习(自己总结的,很全)

    根据提供的文件内容,我们可以归纳出一系列与Oracle数据库相关的知识点,...通过以上内容可以看出,这份文档总结了Oracle DBA日常工作中常用的命令与操作,非常适合用于学习和实践Oracle数据库的基础管理和查询技能。

    oracle数据库相关练习与答案

    根据提供的Oracle数据库相关的练习及其描述,我们可以总结出以下几个重要的知识点: ### 1. 创建表 (CREATE TABLE) 在Oracle数据库中创建表是基本操作之一。通过`CREATE TABLE`语句可以定义表的结构,包括字段名、...

    oracle-触发器练习.pdf

    Oracle 触发器练习 本文档收录了多个 Oracle 触发器练习,涵盖了触发器的各种应用场景和技术细节。每个练习都提供了详细的代码实现和测试结果,帮助读者更好地理解和掌握触发器的使用。 一、触发器基本概念 ...

    oracle学习总结(适合刚学习oracle的人)

    本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...

    oracle常规练习

    根据提供的信息,我们可以总结出以下Oracle数据库相关的知识点: ### Oracle PL/SQL 存储过程创建与使用 在Oracle中,存储过程是一种预先编译并存储在数据库中的代码块,可以提高执行效率和重用性。从给定的部分...

    Oracle题库辅助练习系统的设计与实现.pdf

    【Oracle题库辅助练习系统设计概述】 Oracle题库辅助练习系统是针对Oracle数据库学习而设计的一个实践平台,旨在帮助学生克服学习Oracle时遇到的语言障碍,提高学习效率。系统基于Visual FoxPro开发,提供了便捷的...

    Oracle非常全的学习总结

    通过阅读"oracle非常全和完整的总结文档.doc",你可以获得更直观的学习体验,文档可能包含实例演示、问题解答和实战练习,帮助巩固理论知识并提升实际操作技能。记得理论与实践相结合,不断尝试在真实的Oracle环境中...

    Oracle经典练习题及标准答案

    根据提供的Oracle经典练习题及其标准答案,我们可以详细分析并总结其中涉及的重要知识点: ### 1. 基本查询:筛选特定条件的数据 - **题目示例**:选择在部门30中员工的所有信息。 - **SQL语句**:`select * from ...

    oracle操作练习

    总结一下,这个练习涵盖了Oracle数据库中的以下几个关键知识点: 1. **表的创建**:使用`CREATE TABLE`语句定义表结构和约束,如主键、唯一键和非空约束。 2. **表的描述**:`DESC`或`DESCRIBE`命令用于查看表的...

    oracle selecr查询练习

    根据给定的Oracle SELECT查询练习题目,我们可以详细解析并总结出以下重要的知识点: ### Oracle SELECT语句基础 1. **基本SELECT查询**:`SELECT * FROM emp WHERE e.deptno = 20;` - 此查询展示了如何从`emp`表...

    达内ORACLE练习二

    根据提供的信息,我们可以总结出以下相关的Oracle SQL知识点: ### 一、联合查询与子查询 在SQL查询中,经常会遇到需要结合多个表进行查询的情况,这时可以使用联接(JOIN)或者子查询来实现。 #### 示例 1:部门...

    Oracle 练习题答案

    根据提供的Oracle练习题答案及其描述,我们可以逐一解析并总结出其中涉及的重要知识点: ### 1. 查询所有学生信息以及所有课程信息 ```sql select * from student; select * from course; ``` - **知识点**: `...

    oracle子程序的创建与测试

    以下是对【标题】"oracle子程序的创建与测试"及其【描述】中涉及知识点的详细说明: 1. **表的创建与管理**: - 在Oracle中,可以通过SQL语句`CREATE TABLE`来创建表,定义各字段的名称、数据类型、约束等。例如,...

Global site tag (gtag.js) - Google Analytics