admin 管理员组

文章数量: 888526

SQL基本语句小结

                          SQL 基本语句小结 1 、显示一个表中字段       desc  表名(看表结构) 2 .删表中的字段    Alter table  表  drop ( 字段名 ) 3 .增加表中的字段  Alter table 表 add( 字段 类型 ) 2 、得到所有表或视图 select * from tab 3 、连接用户      conn 用户 / 密码 grant dba to 用户 4 、排序      order by 字段 desc ( asc ) 5 、数据库中所有表都有个隐藏的序列编号 rowid 6 、导出、导入 导出: exp 用户 / 密码 tables=( 表 1 ,表 2 , ..) file= 导出表 .dmp exp 用户 / 密码 full=y(N) filell= 导出表 .dmp 导入: imp 用户 / 密码 full=y(N) filell= 导出表 .dmp 远程: exp 用户/密码@oradb_IP tables=( 表 1 ,表 2 , ..) file= 导出表 .dmp 7 、多条记录只取一个 select Distinct 字段  from table group by …. 8 、创建序列 Create sequence test start with 1 increment by 1 nomaxvalue nocycle cache 10 Exp: insert into table (..)values( 序列名 .nextval) CREATE SEQUENCE "Y_CY3"."SKFAID" INCREMENT BY 1 START WITH 1     MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE CACHE 20 ORDER     Select 序列名 .nextval from dual   下一条序列值     Select 序列名 .currval from dual    序列当前值 9 删除用户对应的表:  drop user 用户名 cascade 10 、月加一,并按格式显示 TO_CHAR(add_months(JDRQ,jdxyzq-1),'yyyy-mm') 11 、系统时间 SELECT TO_CHAR(SYSDATE,'YYYY-mm') FROM DUAL 12 、相同记录显示固定的行    select * from table_name where rownum<N 13 、视图中查询条件是由程序传递的。要想用这个条件更新视图,可以创建一个表,这个表一个字段存放程序传递的参数,而这个表中的这个字段要由这个视图创建的表建立条件关联,当这个字段改变时,视图就回自动发生改变。所以根据程序参数查询视图时,先把参数保存到这个与视图关联条件的参数表中的对应的字段中,之后就可查询你要的视图数据了 14 、在我的机器上安装了一个 oracle 9 数据库服务器,其中还有一个 orace 数据库(只有读数据的权限,用户: cy7 ),我如何在我本地机器上创建一个视图来直接访问那台(不是本机的)数据库中 cy7 中的表或视图。 先建一个到另一数据库的连接 : create database link link_name connect to cy7 identified by 密码 using ' 连接串 ' 然后在本地 : create or replace view view_name as select * from 表名 @link_name      <--- 这里的表名是 cy7 的表名 15 、在 sql 中设置多少条记录显示一个字段名称 Set pagesize 100; 16 、把 sql 中的查询数据导入到文本中    Spool c:/qqq.txt       …. 查询语句  Spool off Q1. 怎样创建表? A.      CREATE TABLE TABLE_NAME( COLUMN1_NAME NUMBER(5) PRIMARY KEY, COLUMN2_NAME CHAR(10) NOT NULL, COLUMN3_NAME DATE DEFAULT(SYSDATE), COLUMN4_NAME NUMBER(7,2) CHECK COLUMN4_NAME<CHECKVALUES, COLUNM5_NAME NUMBER(3) CHECK(COLUMN5_NAME IN(‘FIRST_VALUES’,’SECOND_VALUES’,……’LAST_VALUES’)), FOREIGN KEY(COLUMN_NAME) REFERENCE PARENT_TABLE_NAME.COLUMN_NAME) PCTFREE 10 PCTUSED 40 TABLESPACE USERS STORAGE(           INITIAL 50K           NEXT 50K           MAXEXTENTS 10           PCTINCREASE 25);  Q2. 怎样删除表? DROP  TABLE  TABLE_NAME; Q3. 怎样创建视图? CREATE OR REPLACE VIEW VIEW_NAME AS SQLSTR; Create view  视图名 as select 要显示各个表要显示字段名 from 表 1 ,表 2… where 条件 Q4. 怎样删除视图? . DROP VIEW VIEW_NAME; Q5. 怎样给表添加字段? ALTER TABLE TABLE_NAME ADD COLUMN_NAEM CHAR(12); ALTER TABLE TABLE_NAME ADD (COLUMN1_NAME CHAR(12),COLUMN2_NAME NUMBER); Q6. 怎样删除表中某个字段? ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME; ALTER TABLE TABLE_NAME DROP (COLUMN1_NAME ,COLUMN2_NAME); Q7. 怎样给某个字段添加约束?  ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME NOT NULL; Q8. 怎样去除某个字段上的约束?  ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME NULL; Q9. 怎样给表加上主键?  ALTER TABLE TABLE_NAME ADD CONSTRAINT PRIMARYKEY_NAME PRIMARY KEY (COLUMN_NAME); Q10. 怎样删除表的主键?  ALTER TABLE TABLE_NAME DROP CONSTRAINT PRIMARYKEY_NAME CASCADE; Q11. 怎样给表添加一个外键? ALTER TABLE TABLE1_NAME ADD CONSTRAINT FOREIGNKEY_NAME FOREIGN KEY (COLUMN_NAME) REFERENCES TABLE2_NAME (COLUMN_NAME) ON DELETE CASCADE; Q12. 怎样删除表的一个外键? ALTER TABLE TABLE_NAME DROP CONSTRAINT FOREIGNKEY_NAME; Q13. 怎样给字段加上 CHECK ? ALTER TABLE TABLE_NAME ADD CONSTRAINT CHECK_NAME CHECK COLUMN_NAME<10; ALTER TABLE TABLE_NAME ADD CONSTRAINT CHECK_NAME CHECK(COLUMN_NAME IN(‘X’,’Y’)); Q14. 怎样去掉字段上的 CHECK ? ALTER TABLE TABLE_NAME DROP CONSTRAINT CHECK_NAME; Q15. 怎样给字段设置默认值?  ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME DEFAULT 'DEFAULT_VALUE'; Q16. 怎样移去字段的默认值? ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME DEFAULT NULL; Q17. 怎样创建索引? CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME); Q18. 怎样删除索引?  DROP INDEX INDEX_NAME; Q19. 怎样创建用户? CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD  DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP  PROFILE DEFAULT; Q20. 怎样删除用户?  DROP USER USER_NAME CASCADE; Q21. 怎样将权限 ( privileges) 授予用户? A.      GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON TABLE_NAME TO USER_NAME; B.      GRANT INSERT(COLUMN1_NAME,COLUMN2_NAME) ON TABLE_NAME TO USER_NAME; C.      GRANT ALL ON TABLE_NAME TO USER_NAME; D.     GRANT CONNECT ,RESOURCE,DBA TO USER_NAME; E.      GRANT ROLE_NAME(PRIVILEGE_NAME) TO USER_NAME WITH ADMIN OPTION; Q22. 怎样从用户收回对象权限? A.      REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON TABLE_NAME FROM USER_NAME; B.      REVOLE CONNECT,RESOURCE,DBA FROM USER_NAME; Q23. 怎样更登陆改用户密码? A .PASSWORD Q24. 怎样更改未登陆用户密码? A. PASSWORD USER_NAME Q25. 怎样更改表名? A. RENAME OLD_TABLE_NAME TO NEW_TABLE_NAME Q26. 怎样创建数据库连接? A.      CREATE PUBLIC DATABASE LINK LINK_NAME CONNECT TO USER_NAME IDENTIFIED BY USER_PASSWORD USING’SEVER_NAME’ Q27. 怎样创建序列? A. CREATE SEQUENCE SEQUENCE_NAME MINVALUE 1 MAXVALUE 999999999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 10 ORDER; Q28. 怎样删除序列? A. DROP SEQUENCE SEQUENCE_NAME; Q29. 怎样获取序列值? A. SELECT SEQUENCE_NAME FROM DUAL; Q30. 怎样创建角色? A. CREATE ROLE ROLE_NAME; Q31. 怎样删除角色? A. DROP ROLE ROLE_NAME; Q32. 怎样将权限 ( privileges) 授予角色? A.      GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON TABLE_NAMEE TO ROLE_NAME; B.      GRANT CREATE TABLE TO ROLE_NAME; Q33. 怎样从角色收回权限? A.      REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON TABLE_NAME FROM ROLE_NAME; B.      REVOKE CREATE TABLE FROM ROLE_NAME; Q34. 怎样将角色权限( role privileges )授予角色? A. GRANT DBA TO ROLE_NAME; Q35. 怎样从角色收回角色权限? A. REVOKE DBA FROM ROLE_NAME; Q36. 怎样连到远程数据库? A. CONN USER_NAME/USER_PASSWORD@SERVER_NAME; Q37. 怎样直接查看远程表的内容? A. SELECT * FROM TABLE_NAME@LINK_NAME; Q38. 不等于条件有哪几种写法? A.      !=; B.      ^=; C.      <>; Q39.like 子句的用法? A.      LIKE '%Y%';’ 包含字母 Y 的; B.      LIKE’Y%’;’ 以字母 Y 打头的; C.      LIKE’-----’;’有五个字母的 D.     LIKE’[c-jC-J]’;’首字母在c-j或C-J范围内的; E.      LIKE’[^c-jC-J]’;首字母不在范围内的; Q40. 用 TRUNCATE 函数清除表中全部记录? A. TRUNCATE TABLE TABLE_NAME  Q41.Oracle 常用字符串处理函数有哪些? A. || 连接两个字符串; LENGTH  字符串长度;  TRIM/LTRIM/RTRIM 截断串左(右)指定字符串(包括空串); LOWER/UPPER 将字符串转换为小 / 大写,等等。 例如: SELECT COLUMN1_NAME||'--'||COLUMN2_NAME||'YES' FROM TABLE_NAME;; 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) 。假设表 TABLE_NAME 中有如下数据: ID     NAME    ORDER
--------------------------------------
1            royal        1
2            bill         2
3            joy          1 请观察如下 SQL 语句输出结果。
SELECT DECODE(NAME, 'royal', 'royaltest', 'bill', 'billgates', NAME) AS DC FROM TABLE_NAME;
DC
---------
royaltest
billgates
joy
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 = 'FOREIGN_KEY'; Q49. 怎样将日期、时间插入 date 型字段中? A. INSERT INTO TABLE_NAME (RM_INT_FIELD, RM_STR_FIELD, RM_DATE_FIELD) VALUES (9, 'Y', TO_DATE('2002-05-23', 'YYYY-MM-DD')); INSERT INTO TALBE_NAME (INT_COLUMN, STR_COLUMN, DATE_COLUMN) 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 TABLE_NAME (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 Q51 怎样删除表中重复列? A.      DELETE FROM A A WHERE A.ROWID!=(SELECT MAX(ROWID) FROM A B WHERE A.COLUMN1=B.COLUMN1 AND …A.COLUMNn=B.COLUMNn); Q52 怎样从一表中删除在另一表中存在的记录? A.      DELETE FROM A WHRE EXISTS(SELECT FROM B WHERE A.COLUMN=B.COLUMN); B.      DELETE FROM AWHERE A.COLUMN IN(SELECT B.COLUMN FROM B);’ 记录超过十万 , 极慢 . Q53 怎样查找一表中有而另一表中没有的记录? A.      SELECT * FROM A WHERE NOT EXISTS(SELECT * FROM B WHERE A.COLUMN=B.COLUMN); B.      SELECT * FROM A WHERE A.COLUMN NOT IN(SELECT * FROM A INTERSET SELECT * FROM B); 数字函数 value1/value2 求两个数的商 ABS(value)    求这个数的绝对值 NVL(value,substitute)将数值为null的value字段值由substitute所制定的值替换 CEIL(value)求最小的大于等于这个数值的整数值 COS(value)求一个数的余弦数值 COSH(value)由一个数的双曲余弦数值 EXP(value) 求e的以value这个数为指数的幂 FLOOR(value)求最大的小于等于这个数的整数值 LN(vlaue)求这个数的自然对数值 LOG(value,value)求这个数的常数对数值 MOD(value,divisor) 求两个数的余数 POWER(value,exponent)求value的exponent次指数幂 ROUND(value,precision)将value值四舍五入到precision制定的精度 SIGN(value)取该是的符号,此数为正数时取回正号,显示“+”;为负时取回负号“-” SIN(value)求这个数的正弦函数值 SINH(value)求这个数的双曲正弦函数值 SQRT(value)求这个数的平方根 TAN(value)求这个数的正切函数值 TANH(value)求这个数的双曲正切函数值 TEUNC(value,precsion)将value的值取得precsion制定位数的精度 Select avg(nvl(wages,0)) form wmployee 日期函数 ADD_MONTHS(DATE,COUNT) 对该日期增加几个月。增加数由 count 给出 GREATEST(date1,date2,….) 从一连串日期列表中找到最近的一个月 LAST_DAY(day) 返回日期值所在的月的最后一天 MONTH_BETWEEN(date2,date1) 在两个如期之间的相隔天数 NEXT_DAY(DATE,’day’) 返回制定日期的所有在星期的某一日的日期, “ day ”代表星期: Friday TO_CHAR(date,’format’) 根据日期格式描述符重新设定日期格式 TO_DATE(srting,’format’) 将一个串转换为给定格式的日期 聚组函数 avg(value)      计算该组数的平均值 count(value)     max(value) min(value) stddev(value) sum(value) variance(value) 8. CHR() 的反函數是? ASCII()  SELECT CHAR(65) FROM DUAL;      SELECT ASCII('A') FROM DUAL;  89. 字符串的連接     SELECT CONCAT(COL1,COL2) FROM TABLE ;     SELECT COL1||COL2 FROM TABLE ; 90. 怎么把select出来的结果导到一个文本文件中?     SQL>SPOOL C:/ABCD.TXT;     SQL>select * from table;     SQL >spool off; 91. 怎样估算SQL执行的I/O数 ?     SQL>SET AUTOTRACE ON ;     SQL>SELECT * FROM TABLE;     OR     SQL>SELECT * FROM  v$filestat ; 可以查看IO数 92. 如何在sqlplus下改变字段大小?     alter table table_name modify (field_name varchar2(100));     改大行,改小不行(除非都是空的) 93. 如何查询某天的数据?     select * from table_name where trunc( 日期字段)=to_date('2003-05-02','yyyy-mm-dd'); 94. sql 语句如何插入全年日期? create table BSYEAR (d date);
insert into BSYEAR
select to_date('20030101','yyyymmdd')+rownum-1
from all_objects
where rownum <= to_char(to_date('20031231','yyyymmdd'),'ddd'); 95. 如果修改表名?   alter table old_table_name rename to new_table_name; 96. 如何取得命令的返回状态值? sqlcode=0 97. 如何知道用户拥有的权限?     SELECT * FROM dba_sys_privs ; 98. 从网上下载的ORACLE9I与市场上卖的标准版有什么区别?           从功能上说没有区别,只不过oracle公司有明文规定;从网站上下载的oracle产品不得用于 商业用途,否则侵权。 99. 怎样判断数据库是运行在归档模式下还是运行在非归档模式下? 进入dbastudio,历程--〉数据库---〉归档查看。 100. sql>startup pfile 和ifile,spfiled有什么区别? pfile 就是Oracle传统的初始化参数文件,文本格式的。
ifile 类似于c语言里的include,用于把另一个文件引入
spfile 是9i里新增的并且是默认的参数文件,二进制格式
startup 后应该只可接pfile 101. 如何搜索出前N条记录? SELECT * FROM empLOYEE WHERE ROWNUM < n
ORDER BY empno; 102. 如何知道机器上的Oracle支持多少并发用户数?      SQL>conn internal ;
SQL>show parameter processes ; 104. 如何统计两个表的记录总数?       select (select count(id) from aa)+(select count(id) from bb) 总数 from dual; 105. 怎样用Sql语句实现查找一列中第N大值?      select * from
(select t.*,dense_rank() over (order by sal) rank from employee)
where rank = N; 106. 如何在给现有的日期加上2年?( select add_months(sysdate,24) from dual; 111. 返回大于等于N的最小整數值?       SELECT CEIL(N) FROM DUAL; 112. 返回小于等于N的最小整數值?       SELECT FLOOR(N) FROM DUAL; 113. 返回當前月的最后一天?      SELECT LAST_DAY(SYSDATE) FROM DUAL; 114. 如何不同用戶間數據導入?  IMP SYSTEM/MANAGER FILE=AA.DMP FROMUSER=USER_OLD   TOUSER=USER_NEW ROWS=Y INDEXES=Y ; 115. 如何找数据库表的主键字段的名称?      SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and   table_name='TABLE_NAME'; 116. 兩個結果集互加的函數?    SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW;
  SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW;
  SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW; 117. 兩個結果集互減的函數?
 SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW; 118. 如何配置Sequence?     建sequence seq_custid
  create sequence seq_custid start 1 incrememt by 1;
  建表时:
  create table cust
  { cust_id smallint not null,
  ...}
  insert 时:
  insert into table cust
  values( seq_cust.nextval, ...)
  日期的各部分的常用的的寫法 119>. 取時間點的年份的寫法:
     SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL; 120>. 取時間點的月份的寫法:
     SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; 121>. 取時間點的日的寫法:
     SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL; 122>. 取時間點的時的寫法:
     SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL; 123>. 取時間點的分的寫法:
     SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL; 124>. 取時間點的秒的寫法:
     SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL; 125>. 取時間點的日期的寫法:
     SELECT TRUNC(SYSDATE) FROM DUAL; 126>. 取時間點的時間的寫法:
     SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL; 127>. 日期,時間形態變為字符形態
     SELECT TO_CHAR(SYSDATE) FROM DUAL; 128>. 將字符串轉換成日期或時間形態:
     SELECT TO_DATE('2003/08/01') FROM DUAL; 129>. 返回參數的星期几的寫法:
     SELECT TO_CHAR(SYSDATE,'D') FROM DUAL; 130>. 返回參數一年中的第几天的寫法:
     SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL; 131>. 返回午夜和參數中指定的時間值之間的秒數的寫法:
     SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL; 132>. 返回參數中一年的第几周的寫法:
     SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
   133 备份数据 1、                 Oracle 8.1.6 For NT 移植
初步设想也通过 Oracle 8.0.5 进行过度。因其版本比 Oracle 8.0.5 高、下面对参考的规则进行一些校验。
3 . 1 高版本的 Export 导出来的转储文件,低版本的 Import 读不了
在 Oracle 8.1.6 数据库服务器导出转储二进制文件: ora816.dmp 。
在 Oracle 8.0.5 数据库服务器上用 Imp80 进行导入。
D:>Imp80 house/password file=d:/ ora816.dmp log=d:/ora816.log full=y
/* 日志显示 */
已连接到: Oracle8 Release 8.0.5.0.0 – Production
PL/SQL Release 8.0.5.0.0 – Production
IMP-00010: 不是有效的导出文件,标题检验失败
IMP-00021: 操作系统错误 - 错误代码(十进制 2 ,十六进制 0x2 )
IMP-00000: 未成功终止导入
3 . 2 Oracle 的 Export/Import 工具只能连接到拥有更高或者一样的 Export/Import 版本的数据库
a)Oracle 8.1.6 远程数据导入   
在 Oracle 8.1.6 数据库服务器导出转储二进制文件: ora816.dmp 。
在 Oracle 8.1.6 数据库服务器向 Oracle8.0.5 数据库进行数据远程导入
D:>Imp house/password@orclfrom816to805 file=d:/ ora816.dmp log=d:/ora816.log full=y
(orclfrom816to805 为数据库连接字符串由 Oracle8.1.6 数据库指向 Oracle8.0.5 数据库 )
/* 日志显示 */
连接到 : Oracle8 Release 8.0.5.0.0 – Production
PL/SQL Release 8.0.5.0.0 – Production
……
经由常规路径导出由 EXPORT:V08.01.06 创建的文件
已经完成 ZHS16GBK 字符集和 ZHS16GBK NCHAR 字符集中的导入
IMP-00003: ORACLE 错误 2248 出现
ORA-02248: 无效的 ALTER SESSION 选项
IMP-00000: 未成功终止导入

b) 在 Oracle 8.0.5 数据库服务器上用 exp80 对 Oracle 8.1.6 数据库进行远程导出。
D:>exp80 house/password@orclfrom805to816 file=d:/ora816.dmp log=d:/ora816.log
(orclfromfrom805to816 为数据库连接字符串由 Oracle8.0.5 数据库指向 Oracle8.1.6 数据库 )
/* 日志显示 */
连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 – Production
With the Partitioning option
JServer Release 8.1.6.0.0 – Production
已导出 ZHS16GBK 字符集和 ZHS16GBK NCHAR 字符集
即将导出指定的用户 ...
……
在没有警告的情况下成功终止导出。

再对远程导出的转储文件在 Oracle 8.0.5 数据库服务器上用 imp80 导入。
D:>imp80 house/password file=d:/ora816.dmp full=y log=d:/ora816 _i.log
显示成功导入
此刻此移植就变成了 Oracle 8.0.5 For NT 移植至 Oracle 8.0.4 For Digital Unix 的移植。 好的例子 表1 id ,BID, date 1 303    2003-4-6 2 303    2003-5-6 3 303    2004-4-3 4 304    2003-2-5 5 304    2003-5-3 6 304    2003-6-4 7 305    2003-5-6 8 305    2003-7-6 字段 id 是一个序列,主要是找每个 BID 中相同的 BID 中最大的时间对应的 id ,如何写这个 SQL 语句啊?? 结果用给是,            3     303 2004 - 4 - 3            6     304 2003 - 6 - 4            8     305 2003 - 7 - 6 select abc.id,abc.bid,abc.date from abc where abc.id in (select Max(abc.id) from abc group by abc.bid) SELECT max(abc.ID) as id, abc.bid FROM abc GROUP BY abc.bid; 234更新存储过程 pl/SQL command window execute FILLRULEBASE 导入存储过程 cmd plus start 存储过程  

本文标签: SQL基本语句小结