`
junix1988
  • 浏览: 80169 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle SQL FAQ

阅读更多

  Oracle SQL FAQ
  
  荣耀 2002
  
  整理这篇Oracle基本语法FAQ最初是为了回答一位客户朋友的提问(客观情况所限,我无法在线回答问题)。这些解答并非唯一答案,只是答案之一。更完备的答案请查阅Oracle正式文档。
  
  目录
  
  Q1.怎样创建表?
  
  Q2.怎样删除表?
  
  Q3.怎样创建视图?
  
  Q4.怎样删除视图?
  
  Q5.怎样给表添加字段?
  
  Q6.怎样删除表中某个字段?
  
  Q7.怎样给某个字段添加约束?
  
  Q8.怎样去除某个字段上的约束?
  
  Q9.怎样给表加上主键?
  
  Q10.怎样删除表的主键?
  
  Q11.怎样给表添加一个外键?
  
  Q12.怎样删除表的一个外键?
  
  Q13.怎样给字段加上CHECK?
  
  Q14.怎样去掉字段上的CHECK?
  
  Q15.怎样给字段设置默认值?
  
  Q16.怎样移去字段的默认值?
  
  Q17.怎样创建索引?
  
  Q18.怎样删除索引?
  
  Q19.怎样创建用户?
  
  Q20.怎样删除用户?
  
  Q21.怎样将对象权限(object privileges)授予用户?
  
  Q22.怎样从用户收回对象权限?
  
  Q23.怎样将角色权限(role privileges)授予用户?
  
  Q24.怎样从用户收回角色权限?
  
  Q25.怎样将系统权限(system privileges)授予用户?
  
  Q26.怎样从用户收回系统权限?
  
  Q27.怎样创建序列?
  
  Q28.怎样删除序列?
  
  Q29.怎样获取序列值?
  
  Q30.怎样创建角色?
  
  Q31.怎样删除角色?
  
  Q32.怎样将对象权限(object privileges)授予角色?
  
  Q33.怎样从角色收回对象权限?
  
  Q34.怎样将角色权限(role privileges)授予角色?
  
  Q35.怎样从角色收回角色权限?
  
  Q36.怎样将系统权限(system privileges)授予角色?
  
  Q37.怎样从角色收回系统权限?
  
  Q38.不等于条件有哪几种写法?(茴香豆问题:))
  
  Q39.like子句的用法?
  
  Q40.请举出一个where子查询简单例子?
  
  Q41.Oracle常用字符串处理函数有哪些?
  
  Q42.Oracle支持哪些数字处理函数?
  
  Q43.怎样取得数据库服务器当前日期、时间?
  
  Q44.怎样将字符串转换为日期、时间格式?
  
  Q45.常用日期函数有哪些?
  
  Q46.能给出一个DECODE函数用法的例子吗?
  
  Q47.能给出一个group by、having和order by用法的例子吗?
  
  Q48.Oracle有哪些常用数据字典?
  
  Q49.怎样将日期、时间插入date型字段中?
  
  Q50.能介绍一下connect by的用法吗?
  
  内容
  
  Q1.怎样创建表?
  
  A. CREATE TABLE ROYAL_MTABLE
  
  (
  
   RM_INT_FIELD INTEGER,
  
   RM_STR_FIELD VARCHAR2(64)
  
  )
  
  CREATE TABLE ROYAL_DTABLE
  
  (
  
   RD_INT_FIELD INTEGER,
  
   RD_STR_FIELD VARCHAR2(32)
  
  )
  
  Q2.怎样删除表?
  
  A. DROP TABLE ROYAL_DTABLE;
  
  Q3.怎样创建视图?
  
  A. CREATE OR REPLACE VIEW ROYAL_MDVIEW AS
  
  SELECT T1.RM_STR_FIELD AS F1, T2.RD_STR_FIELD AS F2 FROM ROYAL_MTABLE T1, ROYAL_DTABLE T2
  
  WHERE T1.RM_INT_FIELD = T2.RM_INT_FIELD
  
  Q4.怎样删除视图?
  
  A. DROP VIEW ROYAL_MDVIEW;
  
  Q5.怎样给表添加字段?
  
  A. ALTER TABLE ROYAL_DTABLE ADD RM_INT_FIELD INTEGER;
  
  Q6.怎样删除表中某个字段?
  
  A. ALTER TABLE ROYAL_DTABLE DROP COLUMN RM_INT_FIELD;
  
  Q7.怎样给某个字段添加约束?
  
  A. ALTER TABLE ROYAL_MTABLE MODIFY RM_STR_FIELD NOT NULL;
  
  Q8.怎样去除某个字段上的约束?
  
  A. ALTER TABLE ROYAL_MTABLE MODIFY RM_STR_FIELD NULL;
  
  Q9.怎样给表加上主键?
  
  A. ALTER TABLE ROYAL_MTABLE ADD CONSTRAINT PK_ROYAL_MTABLE PRIMARY KEY (RM_INT_FIELD);
  
  Q10.怎样删除表的主键?
  
  A. ALTER TABLE ROYAL_MTABLE DROP CONSTRAINT PK_ROYAL_MTABLE CASCADE;
  
  Q11.怎样给表添加一个外键?
  
  A. ALTER TABLE ROYAL_DTABLE ADD CONSTRAINT FK_ROYAL_DTABLE FOREIGN KEY (RM_INT_FIELD) REFERENCES ROYAL_MTABLE (RM_INT_FIELD) ON DELETE CASCADE;
  
  Q12.怎样删除表的一个外键?
  
  A. ALTER TABLE ROYAL_DTABLE DROP CONSTRAINT FK_ROYAL_DTABLE;
  
  Q13.怎样给字段加上CHECK?
  
  A. ALTER TABLE ROYAL_MTABLE ADD CONSTRAINT CHK_RM_STR_FIELD CHECK (RM_STR_FIELD IN ('Y','N'));
  
  Q14.怎样去掉字段上的CHECK?
  
  A. ALTER TABLE ROYAL_MTABLE DROP CONSTRAINT CHK_RM_STR_FIELD;
  
  Q15.怎样给字段设置默认值?
  
  A. ALTER TABLE ROYAL_DTABLE MODIFY RD_STR_FIELD DEFAULT 'ROYAL';
  
  Q16.怎样移去字段的默认值?
  
  A. ALTER TABLE ROYAL_DTABLE MODIFY RD_STR_FIELD DEFAULT NULL;
  
  Q17.怎样创建索引?
  
  A. CREATE UNIQUE INDEX IDX_ROYAL_DTABLE ON ROYAL_DTABLE (RM_INT_FIELD);
  
  Q18.怎样删除索引?
  
  A. DROP INDEX IDX_ROYAL_DTABLE;
  
  Q19.怎样创建用户?
  
  A. CREATE USER TESTUSER IDENTIFIED EXTERNALLY DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;
  
  Q20.怎样删除用户?
  
  A. DROP USER TESTUSER CASCADE;
  
  Q21.怎样将对象权限(object privileges)授予用户?
  
  A. GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE TO TESTUSER;
  
  GRANT INSERT, UPDATE, DELETE ON ROYAL_DTABLE TO TESTUSER;
  
  GRANT SELECT, ALTER ON ROYAL_DTABLE TO TESTUSER WITH GRANT OPTION;
  
  Q22.怎样从用户收回对象权限?
  
  A. REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_DTABLE FROM TESTUSER;
  
  Q23.怎样将角色权限(role privileges)授予用户?
  
  A. GRANT CONNECT TO TESTUSER WITH ADMIN OPTION;
  
  GRANT DBA TO TESTUSER;
  
  Q24.怎样从用户收回角色权限?
  
  A. REVOKE DBA FROM TESTUSER;
  
  Q25.怎样将系统权限(system privileges)授予用户?
  
  A. GRANT ALTER ANY TABLE TO TESTUSER WITH ADMIN OPTION;
  
  Q26.怎样从用户收回系统权限?
  
  A. REVOKE ALTER ANY TABLE FROM TESTUSER;
  
  Q27.怎样创建序列?
  
  A. CREATE SEQUENCE RM_INT_FIELD_SEQ
  
  MINVALUE 1
  
  MAXVALUE 999999999999999999999999999
  
  START WITH 1
  
  INCREMENT BY 1
  
  CACHE 10
  
  ORDER;
  
  Q28.怎样删除序列?
  
  A. DROP SEQUENCE RM_INT_FIELD_SEQ;
  
  Q29.怎样获取序列值?
  
  A. SELECT RM_INT_FIELD_SEQ.NEXTVAL FROM DUAL;
  
  Q30.怎样创建角色?
  
  A. CREATE ROLE TESTROLE;
  
  Q31.怎样删除角色?
  
  A. DROP ROLE TESTROLE;
  
  Q32.怎样将对象权限(object privileges)授予角色?
  
  A. GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE TO TESTROLE;
  
  Q33.怎样从角色收回对象权限?
  
  A. REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE FROM TESTROLE;
  
  Q34.怎样将角色权限(role privileges)授予角色?
  
  A. GRANT DBA TO TESTROLE;
  
  Q35.怎样从角色收回角色权限?
  
  A. REVOKE DBA FROM TESTROLE;
  
  Q36.怎样将系统权限(system privileges)授予角色?
  
  A. GRANT CREATE TABLE TO TESTROLE;
  
  Q37.怎样从角色收回系统权限?
  
  A. REVOKE CREATE TABLE FROM TESTROLE;
  
  Q38.不等于条件有哪几种写法?(茴香豆问题:))
  
  A. SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD != 'Y';
  
  SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD ^= 'Y';
  
  SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD <> 'Y';
  
  Q39.like子句的用法?
  
  A. SELECT * FROM ROYAL_DTABLE WHERE RD_STR_FIELD LIKE '%Y%';
  
  SELECT * FROM ROYAL_DTABLE WHERE RD_STR_FIELD LIKE '_Y%';
  
  Q40.请举出一个where子查询简单例子?
  
  A. SELECT * FROM ROYAL_DTABLE WHERE RM_INT_FIELD IN (SELECT RM_INT_FIELD FROM ROYAL_MTABLE WHERE RM_STR_FIELD NOT IN ('Y','B'));
  
  Q41.Oracle常用字符串处理函数有哪些?
  
  A. || 连接两个字符串; LENGTH 字符串长度; TRIM/LTRIM/RTRIM 截断串左(右)指定字符串(包括空串); LOWER/UPPER 将字符串转换为小/大写,等等。
  
  例如:SELECT RM_INT_FIELD||'--'||RM_STR_FIELD||'YES' FROM ROYAL_MTABLE;
  
  Q42.Oracle支持哪些数字处理函数?
  
  A. Oracle支持所有常用数字函数,包括(但不限于)+、-、*、/、ABS、COS、EXP、LN、LOG、MOD、POWER、ROUND、SIN、 SINH、SQRT、TAN、TRUNC、AVG、COUNT、MAX、MIN、SUM、GREATEST、LEAST等等。
  
  例如:
  
  SELECT GREATEST(3, 4, 5)*4 FROM DUAL;
  
  SELECT POWER(2,3) FROM DUAL;
  
  Q43.怎样取得数据库服务器当前日期、时间?
  
  A. SELECT SYSDATE FROM DUAL;
  
  SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
  
  Q44.怎样将字符串转换为日期、时间格式?
  
  A. SELECT TO_DATE('2002-11-27', 'YYYY-MM-DD') FROM DUAL;
  
  SELECT TO_DATE('2002-11-27 09:28:55', 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
  
  Q45.常用日期函数有哪些?
  
  A. NEXT_DAY LAST_DAY ADD_MONTHS MONTHS_BETWEEN等等。
  
  例如:SELECT LAST_DAY(SYSDATE) FROM DUAL;
  
  Q46.能给出一个DECODE函数用法的例子吗?
  
  A. DECODE函数的格式为DECODE(value, if1, then1, if2, then2...,else)。假设表ROYAL_DTABLE中有如下数据:
  
  RD_INT_FIELD RD_STR_FIELD RM_INT_FIELD
  --------------------------------------
  1 royal 1
  2 bill 2
  3 joy 1
  
  请观察如下SQL语句输出结果。
  SELECT DECODE(RD_STR_FIELD, 'royal', 'royaltest', 'bill', 'billgates', RD_STR_FIELD) AS DC FROM ROYAL_DTABLE;
  DC
  ---------
  royaltest
  billgates
  joy
  
  Q47.能给出一个group by、having和order by用法的例子吗?
  
  A. SQL> SELECT * FROM ROYAL_MTABLE;
  
  RM_INT_FIELD RM_STR_FIELD
  -------------------------
  1 Y
  2 N
  3 Y
  
  SQL> SELECT * FROM ROYAL_DTABLE;
  
  RD_INT_FIELD RD_STR_FIELD RM_INT_FIELD
  --------------------------------------
  1 royal 1
  2 bill 2
  3 joy 1
  
  SQL> SELECT RM_INT_FIELD, SUM(RD_INT_FIELD) FROM ROYAL_DTABLE GROUP BY RM_INT_FIELD HAVING SUM(RD_INT_FIELD) >= 2 ORDER BY SUM(RD_INT_FIELD) ASC;
  
  RM_INT_FIELD SUM(RD_INT_FIELD)
  ------------------------------
  2 2
  1 4
  
  Q48.Oracle有哪些常用数据字典?
  
  A. USER_TABLES(TABS)、USER_TAB_COLUMNS(COLS)、USER_VIEWS、USER_SEQUENCES(SEQ)、 USER_CONSTRAINTS、USER_CONS_COLUMNS、USER_TAB_COMMENTS、USER_COL_COMMENTS、 USER_INDEXES(IND)、USER_IND_COLUMNS、USER_USERS、DBA_USERS、ALL_USERS、 USER_TABLESPACES等等。
  
  例如:SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'FK_ROYAL_DTABLE';
  
  Q49.怎样将日期、时间插入date型字段中?
  
  A. INSERT INTO ROYAL_MTABLE (RM_INT_FIELD, RM_STR_FIELD, RM_DATE_FIELD) VALUES (9, 'Y', TO_DATE('2002-05-23', 'YYYY-MM-DD'));
  
  INSERT INTO ROYAL_MTABLE (RM_INT_FIELD, RM_STR_FIELD, RM_DATE_FIELD) VALUES (10, 'Y', TO_DATE('2002-10-10 8:23:33', 'YYYY-MM-DD HH:MI:SS'));
  
  Q50.能介绍一下connect by的用法吗?
  
  A. connect by子句提供了遍历“树”的手段。
  
  假设有这样一个表:CREATE TABLE ROYAL_TREETABLE (ID INTEGER, PARENT_ID INTEGER, NAME VARCHAR2(32));
  
  表中有如下数据:
  
  ID PARENT_ID NAME
  -----------------
  2 1 AAA
  3 1 BBB
  4 2 CCC
  5 2 DDD
  6 4 EEE
  8 7 GGG
  
  假如我们现在需要从NAME = 'EEE'的记录开始,向上查找所有有父子关系的记录,可执行如下SQL语句:
  
  SELECT * FROM ROYAL_TREETABLE START WITH NAME = 'EEE' CONNECT BY ID = PRIOR PARENT_ID;
  
  ID PARENT_ID NAME
  -----------------
  6 4 EEE
  4 2 CCC
  2 1 AAA
  
  自从 Oracle 9i 开始,就可以通过SYS_CONNECT_BY_PATH 函数实现将从父节点到当前
  行内容以“path”或者层次元素列表的形式显示出来。
  
  取得一个表的所有字段名,用逗号分割。
  
  select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','),2)) col from (
  select COLUMN_NAME,column_id from user_tab_columns where table_name='&表名')
  start with column_id=1
  connect by column_id=rownum;

分享到:
评论

相关推荐

    ORACLE_FAQ.rar_oracle express_oracle sql _oracle chm_sql chm_架

    ORACLE_FAQ中是itpub高手的多年经验总结出来的oracle开发的经典资料,包括pl-sql技巧,oracle体系架构,oracle备份与恢复,oracle优化,不同O/S上的开发,网络开发等

    SQL loader and oracle sql study

    **SQLLoader FAQ - Oracle FAQ_files、SQLLoader FAQ - Oracle FAQ.htm** 这些文件很可能是关于SQL*Loader的常见问题解答(FAQ),可能包含了使用SQL*Loader时遇到的问题及其解决方案。FAQ通常涵盖以下内容: 1. **...

    ORACLE-FAQ.rar_cracle_html oracle_oracle

    6. **SQL和PL/SQL**:Oracle数据库支持标准SQL,同时也扩展了PL/SQL,一种过程化编程语言,用于编写数据库存储过程、触发器和函数,增强了数据库的灵活性和功能。 7. **性能优化**:Oracle提供了许多工具和特性来...

    SQL Server 2005 Solutions - Migration - Oracle - FAQ

    以下是对SQL Server 2005 Solutions - Migration - Oracle - FAQ中的几个核心知识点的深入解析。 ### SSMA:SQL Server Migration Assistant SSMA是SQL Server Migration Assistant的简称,它定义并自动化了数据库...

    Oracle 必备FAQ中文手册 chm格式

    这份"Oracle必备FAQ中文手册"涵盖了Oracle数据库的关键领域,包括PL/SQL编程、架构体系、备份与恢复、性能调整、网络配置以及操作系统相关的知识。下面将详细阐述这些领域的关键知识点。 1. **PL/SQL**: PL/SQL是...

    oracle faq

    Oracle FAQ 是一个汇集了大量关于Oracle数据库系统的常见问题与解答的文档集合,它包含了丰富的技巧、处理方法和优化策略。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它为企业提供了高性能、高可用性...

    数据库通信Oracle和Sql serverDACv690053FS

    标题中的“数据库通信Oracle和Sql serverDACv690053FS”指的是一个与数据库通信相关的软件组件或库,特别提到了Oracle和SQL Server两种不同的数据库系统,并且可能使用了名为DAC(Data Access Components)的技术,...

    ORACLE之FAQ -- 性能调整

    ### ORACLE之FAQ -- 性能调整 #### 一、性能调整基础知识 在Oracle数据库管理过程中,性能调整是一项至关重要的工作。它不仅涉及到SQL语句的优化,还包括系统配置、索引策略、统计信息收集等多个方面。下面将详细...

    oracle常用FAQ

    本文将围绕“Oracle常用FAQ”展开,深入解析SQL与PL/SQL、Oracle架构体系、备份与恢复、性能调整以及Oracle网络和操作系统相关的问题。 一、SQL与PL/SQL SQL(Structured Query Language)是用于管理和处理数据库...

    ORACLE FAQ超级帮助文档.rar

    "ORACLE FAQ超级帮助文档"是一个非常有价值的资源,它很可能包含了Oracle数据库使用者在日常操作中可能遇到的各种问题及其解决方案。下面,我将依据这个文件名来概述一些Oracle数据库的关键知识点。 1. **Oracle...

    ORACLE_FAQ(2).rar_oracle

    "ORACLE_FAQ(2).rar_oracle"这个压缩包文件显然是针对Oracle数据库使用者提供的一份常见问题解答集,特别是"复件 ORACLE应用常见傻瓜问题1000问(之二).doc"文档,可能包含了大量实用的解决策略和技巧。 首先,...

    分享 Oracle超级帮助文件(中文版)-ORACLE FAQ

    2. **SQL语言**:Oracle FAQ中可能包含了SQL查询语言的详细解释,包括SELECT语句、JOIN操作、子查询、聚合函数以及DML语句(INSERT、UPDATE、DELETE)。这对于日常的数据操作和管理至关重要。 3. **PL/SQL编程**:...

    历史上最强的sql FAQ for Oracle

    第一部分、SQL&PL/SQL [Q]怎么样查询特殊字符,如通配符%与_ [A]select * from table where name like 'A\_%' escape(避开) '\' [Q]如何插入单引号到数据库表中 [A]可以用ASCII码处理,其它特殊字符如&也一样,如 ...

    oracle FAQ

    Oracle FAQ 是一个针对Oracle数据库系统常见问题与解答的资源集合,旨在帮助用户更好地理解和使用Oracle。这个压缩包中的"ORACLE+FAQ.chm"文件很可能是一个CHM(MicrosoftCompiled HTML Help)格式的文档,通常包含...

    sqlserver2005移植到oracle数据库移植报告

    标题所述的"sqlserver2005移植到oracle数据库移植报告"主要涉及的是将SQL Server 2005中的数据迁移到Oracle数据库的过程和技术。在描述中提到了两种数据库之间的数据导入方法,以及针对Oracle运行环境的需求。接下来...

    ORACLE之常用FAQ

    ### ORACLE之常用FAQ知识点详解 #### 一、ROWID的理解与使用 **知识点:** - **ROWID的定义:** ROWID(Row Identifier)是Oracle数据库中的一个特殊数据类型,用于唯一标识表中的每一行记录。 - **ROWID的结构:** ...

    oracle 之FAQ

    ### Oracle之FAQ知识点详解 #### 一、SQL与PL/SQL基础 **1. 使用通配符进行查询** - **问题**: 如何在Oracle中使用通配符`%`和`_`进行模糊查询? - **解答**: 在Oracle中,可以使用`LIKE`操作符配合通配符`%`...

    oracle 学习包含SQL.TERADATA,UNIX

    ORACLE FAQ.chm可能是Oracle数据库的常见问题解答集合,包含了用户在使用Oracle过程中可能遇到的问题及其解决方案,涵盖了安装、配置、性能调优、故障排查等多个方面。而PLSQL.pdf则可能深入讲解Oracle的PL/SQL编程...

Global site tag (gtag.js) - Google Analytics