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 存储过程
 
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值