Linux c++如何连接oracle数据库(Pro*C/C++/接口)及内嵌SQL语句,比较急!!!!!!!

garping 2008-12-31 09:34:02
Linux c++如何连接oracle数据库(Pro*C/C++/接口)及内嵌SQL语句,请提供详细源代码,最好是封装好的,谢谢万分了!!!!
...全文
650 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
garping 2009-01-01
  • 打赏
  • 举报
回复
我想问下,ORACLE不像SQL SERVER按IP可以连接其它数据库服务器吗?
wiowei 2008-12-31
  • 打赏
  • 举报
回复
lz不是知道用proc/c++吗?那就找本相关的书看看不就行了。。这个用的人比较多了,比如csdn就有:http://download.csdn.net/source/796168

用occi也行,随便帮你google了段源码:

// occi1.cpp : 使用OCCI访问Oracle数据库的例子
//
#include <iostream>
#include <occi.h>
using namespace oracle::occi;
using namespace std;

int main(int argc, char* argv[])
{
// 用以连接数据库的参数
string strDBName, strUserName, strUserPassword;

Environment *env; // 环境
Connection *con; // 数据库连接

// 输入数据库名、用户名和口令
cout<<"enter database name:";
cin>>strDBName;
cout<<"enter user name:";
cin>>strUserName;
cout<<"enter password:";
cin>>strUserPassword;

// 创建运行环境
env = Environment::createEnvironment (Environment::DEFAULT);
// 建立数据库连接
con = env->createConnection (strUserName, strUserPassword, strDBName);

// 设置要执行的语句
Statement *stmt = con->createStatement
("BEGIN test_proc.test_getempinfo(:v1); END;");
// 注册输出参数
stmt->registerOutParam (1, OCCICURSOR, 30, "");
cout << "Executing the block :" << stmt->getSQL() << endl;

// 执行
stmt->executeUpdate ();

// 获取结果集
ResultSet *rst = stmt->getCursor(1);

// ---------------BEGIN 在VC++中以调试模式运行时,需修改这段代码-------------
int c1;
string c2;

try{
cout << "Printing the result set:" << endl;
cout <<"Number"<<"\t"<<"Names"<<endl;
// 读取并输出各记录
while(rst->next ())
{
c1=rst->getInt(1);
c2=rst->getString(2); // 在VC++6.0调试模式下,这里会报错
cout << c1<<"\t"<<c2 << endl;
}
// ---------------END 在VC++中以调试模式运行时,需修改这段代码-------------
}catch(SQLException ex)
{
cout<<"Exception thrown for displayAllRows"<<endl;
cout<<"Error number: "<< ex.getErrorCode() << endl;
cout<<ex.getMessage() << endl;
}

// 关闭结果集
stmt->closeResultSet (rst);
// 终止“语句”
con->terminateStatement (stmt);
cout << "occiproc - done" << endl;

// 断开数据库连接
env->terminateConnection (con);
Environment::terminateEnvironment (env);

return 0;
}

/*本例中的程序在Microsoft Windows和Linux平台中均可运行。通过程序的运行可以感觉到使用OCCI比ODBC调用的连接数据库速度要快很多,程序的执行效率较高。但这段代码在VC++6.0中,如果使用调试模式编译的话(使用Release模式则不存在此问题),由于内存分配上的原因,会出现异常。为了解决这个问题,需要将c2定义为指针,并从堆中分配内存。相应的代码段如下:*/
int c1;
string *c2;

try{
cout << "Printing the result set:" << endl;
cout <<"Number"<<"\t"<<"Names"<<endl;
// 读取并输出各记录
while(rst->next ())
{
c1=rst->getInt(1);
c2 = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY, sizeof(string));
*c2=rst->getString(2);
cout << c1<<"\t"<<c2 << endl;
HeapFree(GetProcessHeap(), 0, c2);
}
garping 2008-12-31
  • 打赏
  • 举报
回复
我现在就是不知Pro*C/C++ 具体代码是怎么样的?所以请高手帮忙一下
yutaooo 2008-12-31
  • 打赏
  • 举报
回复


occi 吧。 oracle 里不是有的吗?

我也就知道这么几个选择。
Pro*C -- 这个你知道啊
oci -- C 接口
occi -- C++接口
目录1 译者的话 14 第一周概貌 16 从这里开始 16 第一天SQL 简介 17 SQL 简史 17 数据库简史 17 设计数据库的结构21 SQL 总览23 流行的SQL 开发工具 24 SQL 在编程中的应用 27 第二天查询— — SELECT 语句的使用 30 目标 30 背景 30 一般的语法规则 30 你的第一个查询 33 总结 37 问与答 38 校练场 38 练习 39 第三天表达式条件语句与运算 40 第四天函数对数据的进一步处理 60 目标 60 汇总函数 60 COUNT61 SUM 61 AVG 63 MAX 63 MIN 64 VARIANCE65 STDDEV66 日期/时间函数66 ADD_MONTHS 67 LAST_DAY68 MONTHS_BETWEEN 69 NEW_TIME70 NEXT_DAY71 SYSDATE72 数学函数 72 ABS 73 CEIL 和FLOOR 73 COS COSH SIN SINH TAN TANH 73 EXP 75 LN and LOG75 MOD 76 POWER77 SIGN 77 SQRT 78 字符函数 79 CHR 79 CONCAT 79 INITCAP80 LOWER 和UPPER 81 LPAD 与RPAD 82 LTRIM 与RTRIM 83 REPLACE 84 SUBSTR85 TRANSLATE88 INSTR 88 LENGTH89 转换函数 89 TO_CHAR90 TO_NUMBER91 其它函数 91 GREATEST 与LEAST 91 USER 92 总结 92 问与答 93 校练场 93 练习 94 第五天SQL 中的子句95 目标 95 WHERE 子句96 STARTING WITH子句 98 ORDER BY 子句99 GROUP BY 子句104 HAVING 子句109 子句的综合应用112 总结117 问与答117 校练场117 练习118 第六天表的联合119 介绍119 在一个SELECT 语句中使用多个表119 正确地找到列123 等值联合124 不等值联合129 外部联合与内部联合130 表的自我联合132 总结134 问与答134 校练场134 练习135 第七天子查询内嵌的SQL 子句136 目标136 建立一个子查询136 在子查询中使用汇总函数140 子查询的嵌套141 相关子查询144 EXISTS ANY ALL 的使用147 总结151 问与答151 校练场152 练习153 第一周回顾154 预览154 第二周概貌155 这一周都讲些什么155 第八天操作数据156 目标156 数据操作语句156 插入语句157 INSERT VALUES 语句157 INSERT SELECT 语句161 UPDATE语句163 DELETE 语句166 从外部数据源中导入和导出数据169 Microsoft Access 170 Microsoft and Sybase SQL Server 171 Personal Oracle7171 总结172 问与答172 校练场173 练习173 第九天创建和操作表174 目标174 CREATE DATABASE 语句174 建立数据库时的选项175 设计数据库176 建立数据字典176 建立关键字段177 CREATE TABLE 语句178 表名179 FIRST NAME179 空值属性180 唯一属性181 表的存储与尺寸的调整183 用一个已经存在的表来建表184 ALTER TABLE 语句185 DROP TABLE 语句186 DROP DATABASE语句187 总结188 问与答188 校练场189 练习190 第10 天 创建视图和索引191 目标191 使用视图192 列的重命名196 SQL 对视图的处理过程197 在SELECT 语句使用约束201 在视图中修改数据201 在视图中修改数据的几个问题203 通用应用程序的视图204 删除视图语句207 使用索引207 什么是索引207 使用索引的技巧212 对更多的字段进行索引212 在创建索引时使用UNIQUE 关键字214 索引与归并216 群集簇的使用217 总结218 问与答219 校练场219 练习220 第11 天事务处理控制221 目标221 事务控制221 银行应用程序222 开始事务处理223 结束事务处理225 取消事务处理228 在事务中使用保存点231 总结234 问与答234 校练场235 练习235 第12 天数据库安全236 前提数据库管理员236 流行的数据库产品与安全237 如何让一个数据库变得安全237 Personal Oracle7 与安全238 创建用户238 创建角色240 用户权限242 为安全的目的而使用视图247 总结251 问与答252 校练场252 练习253 第13 天 高级SQL254 目标254 临时表254 Title 257 游标259 创建游标260 打开游标260 使用游标来进行翻阅261 测试游标的状态262 关闭游标263 游标的适用范围264 创建和使用存贮过程265 在存贮过程中使用参数267 删除一个存贮过程269 存贮过程的嵌套270 设计和使用触发机制272 触发机制与事务处理273 使用触发机制时的限制275 触发机制的嵌套275 在选择语句中使用更新和删除275 在执行前测试选择语句276 嵌入型SQL277 静态SQL 与动态SQL277 使用SQL 来编程279 总结280 问与答280 校练场280 练习281 第14 天动态使用SQL 282 目标282 快速入门282 ODBC 282 Personal Oracle 7283 InterBase SQL ISQL 283 Visual C++ 284 Delphi284 设置284 创建数据库285 使用MS QUERY 来完成链接290 将VISUAL C++与SQL 结合使用292 将DELPHI 与SQL 结合使用296 总结302 问与答303 校练场303 练习303 第二周回顾304 第三周概貌305 应用你对SQL 的知识305 第15 天对SQL 语句优化以提高其性能306 目标306 让你的SQL 语句更易读307 全表扫描308 加入一个新的索引309 在查询中各个元素的布局309 过程311 避免使用OR311 OLAP 与OLTP 的比较313 OLTP 的调试313 OLAP 的调试314 批量载入与事务处理进程314 删除索引以优化数据的载入316 经常使用COMMIT 来让DBA 走开316 在动态环境中重新生成表和索引317 数据库的调整319 性能的障碍322 内置的调整工具323 总结323 问与答324 校练场324 练习324 第16 天用视图从数据字典中获得信息326 目标326 数据字典简介326 用户的数据字典327 数据字典中的内容327 Oracle 的数据字典328 Sybase 的数据字典328 ORACLE 数据字典的内部结构328 用户视图328 系统数据库管理员视图336 数据库对象339 数据库的生长343 动态执行视图347 总结349 问与答349 校练场350 练习350 第17 天使用SQL 来生成SQL 语句351 目标351 使用SQL 来生成SQL 语句的目的351 几个SQL*PLUS 命令352 SET ECHO ON/OFF353 SET FEEDBACK ON/OFF353 SET HEADING ON/OFF 353 SPOOL FILENAME/OFF353 START FILENAME354 ED FILENAME354 计算所有的表中的行数354 为多个用户赋予系统权限359 将你的表的权限赋予其它的用户361 在载入数据时解除对数的约束363 一次创建多个同义字364 为你的表创建视图368 在一个计划中清除其所有的表的内容369 使用SQL 来生成SHELL 脚本371 再建表和索引372 总结373 问与答373 校练场373 练习374 第18 天PL/SQL 简介376 目标376 入门376 在PL/SQL 中的数据类型377 字符串类型377 数值数据类型378 二进制数据类型378 日期数据类型378 逻辑数据类型378 ROWID379 PL/SQL 块的结构379 注释380 DECLARE 部分380 变量声明380 常量定义381 指针定义381 %TYPE 属性382 %ROWTYPE 属性382 %ROWCOUNT 属性383 Procdure 部分383 BEGIN … … END383 指针控制命令384 条件语句386 LOOPS 循环387 EXCEPTION 部分390 激活EXCEPTION 异常390 异常的处理391 将输入返回给用户392 在PL/SQL 中的事务控制393 让所有的事在一起工作394 示例表及数据394 一个简单的PL/SQL 语句块395 又一个程序398 存储过程包和触发机制403 总结406 问与答407 校练场407 练习407 第19 天TRANSACT-SQL 简介408 目标408 TRANSACT-SQL 概貌408 对ANSI SQL 的扩展408 谁需要使用TRANSACT-SQL409 TRANSACT-SQL 的基本组件409 数据类型409 使用TRANSACT-SQL 来访问数据库411 BASEBALL 数据库411 定义局部变量414 定义全局变量414 使用变量415 PRINT 命令417 流控制417 BEGIN … … END 语句418 IF … … ELSE 语句418 EXIST 条件421 WHILE 循环422 使用WHILE 循环在表中翻阅424 TRANSACT-SQL 中的通配符426 使用COMPUTE 来生成摘要报告426 日期转换427 SQL SERVER 的诊断工具— — SET 命令427 总结428 问与答428 校练场429 练习429 第20 天SQL*PLUS 430 目标430 简介430 SQL*PLUS 缓存430 DESCRIBE 命令435 SHOW 命令436 文件命令438 SAVE GET EDIT 命令438 运行一个文件439 查询的假脱机输出440 SET 命令442 LOGINSQL 文件445 CLEAR 命令446 将你的输出格式化446 TTITLE 与BTITLE446 格式化列COLUMN HEADING FORMAT 447 报表与分类汇总449 BREAK ON449 COMPUTE450 在SQL*PLUS 中使用变量453 DEFINE 454 ACCEPT 455 NEW_VALUE457 DUAL 表458 DECODE 函数459 日期转换462 运行一系列的SQL 文件465 在你的SQL 脚本中加入注释466 高级报表467 总结469 问与答469 校练场469 练习470 第21 天常见的SQL 错误及解决方法471 目标471 介绍471 常见的错误471 Table or View Does Not Exist471 Invalid Username or Password 472 FROM Keyword Not Specified473 Group Function Is Not Allowed Here 474 Invalid Column Name475 Missing Keyword 475 Missing Left Parenthesis 476 Missing Right Parenthesis 477 Missing Comma478 Column Ambiguously Defined 478 Not Enough Arguments for Function480 Not Enough Values481 Integrity Constraint Violated--Parent Key Not Found 482 Oracle Not Available 483 Inserted Value Too Large for Column 483 TNS:listener Could Not Resolve SID Given in Connect Descriptor 484 Insufficient Privileges During Grants484 Escape Character in Your Statement--Invalid Character 485 Cannot Create Operating System File 485 Common Logical Mistakes485 Using Reserved Words in Your SQL statement 486 The Use of DISTINCT When Selecting Multiple Columns487 Dropping an Unqualified Table 487 The Use of Public Synonyms in a Multischema Database488 The Dreaded Cartesian Product 488 Failure to Enforce File System Structure Conventions 489 Allowing Large Tables to Take Default Storage Parameters489 Placing Objects in the System Tablespace490 Failure to Compress Large Backup Files 491 Failure to Budget System Resources 491 Preventing Problems with Your Data491 Searching for Duplicate Records in Your Database491 总结491 校练场492 练习492 第三周回顾494 附件A 在SQL 中的常见术语495 ALTER DATABASE495 ALTER USER495 BEGIN TRANSACTION 495 CLOSE CURSOR495 COMMIT TRANSACTION496 CREATE DATABASE496 CREATE INDEX496 CREATE PROCEDURE496 CREATE TABLE497 CREATE TRIGGER497 CREATE USER497 CREATE VIEW497 DEALLOCATE CURSOR498 DROP DATABASE498 DROP INDEX498 DROP PROCEDURE498 DROP TABLE498 DROP TRIGGER 499 DROP VIEW499 EXECUTE499 FETCH499 FROM499 GRANT500 GROUP BY500 HAVING500 INTERSECT500 ORDER BY500 ROLLBACK TRANSACTION 500 REVOKE500 SELECT501 SET TRANSACTION501 UNION501 WHERE501 *501 附件B 在第14 天中的C++源代码清单502 附件 C 第14 天中的Delphi 源代码清单521 附件D 参考内容524 书524 Developing Sybase Applications 524 Sybase Developer's Guide 524 Microsoft SQL Server 65 Unleashed, 2E 524 Teach Yourself Delphi in 21 Days 524 Delphi Developer's Guide 524 Delphi Programming Unleashed 525 Essential Oracle 72 525 Developing Personal Oracle7 for Windows 95 Applications 525 Teach Yourself C++ Programming in 21 Days 525 Teach Yourself Tansact-SQL in 21 Days 525 Teach Yourself PL/SQL in 21 Days 525 杂志526 DBMS526 Oracle Magazine526 SQL 的互联网资源526 附件E ACSLL 码表527 附件F 问题与练习答案533 第一天SQL 简介533 问题答案533 练习答案533 第二天查询— — SELECT 语句的使用533 问题答案533 练习答案534 第三天表达式条件语句与运算535 问题答案535 练习答案535 第四天函数对获得数据的进一步处理536 问题答案536 练习答案537 第五天SQL 中的子句538 问题答案538 练习答案538 第六天表的联接540 问题答案540 练习答案541 第7 天子查询内嵌的SELECT 语句542 问题答案542 练习答案544 第八天操作数据544 问题答案544 练习答案546 第九天创建和操作表546 问题答案546 练习答案548 第10 天 创建视图和索引549 问题答案549 练习答案550 第11 天事务处理控制550 问题答案550 练习答案551 第12 天数据库安全552 问题答案552 练习答案552 第13 天 高级SQL553 问题答案553 练习答案553 第14 天动态使用SQL 554 问题答案554 练习答案554 第15 天对SQL 语句优化以提高其性能555 问题答案555 练习答案555 第16 天用视图从数据字典中获得信息557 问题答案557 练习答案557 第17 天使用SQL 来生成SQL 语句558 问题答案558 练习答案560 第18 天PL/SQL 简介561 问题答案561 练习答案561 第19 天TRANSACT-SQL 简介562 问题答案562 练习答案562 第20 天SQL*PLUS 563 问题答案563 练习答案563 第21 天常见的SQL 错误及解决方法564 问题答案564 练习答案565
1.增加主键 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN); 指定表空间 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN) using index tablespace TABLE_SPACE_NAME; 2.增加外键 alter table TABLE_NAME add constraint FK_NAME foreign key (TABLE_COLUMN) references KEY_TABLE_NAME; 3.使主键或外键失效、生效 alter table TABLE_NAME disable(enable) constraint KEY_NAME; 4、查看各种约束 select constraint_name,table_name,constraint_type,status from user_constraints; select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper(\'&table_name\') select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner = upper(\'&table_owner\') and c.table_name = upper(\'&table_name\') and c.owner = cc.owner and c.constraint_name = cc.constraint_name order by cc.position; 5、删除主键或外键 alter table TABLE_NAME drop constraint KEY_NAME; 6、建外键 单字段时:create table 表名 (col1 char(8), cno char(4) REFERENCE course); 多个字段时,在最后加上 Foreign Key (字段名) REFERENCE 表名(字段) 连带删除选项 (on delete cascade 当指定时,如果父表中的记录被删除,则依赖于父表的记录也被删除 REFERENCE 表名() on delete cascade; 7、删除带约束的表 Drop table 表名 cascade constraints; 8:索引管理 <1>.creating function-based indexes sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped); <2>.create a B-tree index sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace sql> tablespace_name [pctfree integer] [initrans integer] [maxtrans integer] sql> [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0 sql> maxextents 50); <3>.pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows <4>.creating reverse key indexes sql> create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k sql> next 200k pctincrease 0 maxextents 50) tablespace indx; <5>.create bitmap index sql> create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k sql> pctincrease 0 maxextents 50) tablespace indx; <6>.change storage parameter of index sql> alter index xay_id storage (next 400k maxextents 100); 7.allocating index space sql> alter index xay_id allocate extent(size 200k datafile \'c:/oracle/index.dbf\'); <8>.alter index xay_id deallocate unused; <9>、查看索引 SQL>select index_name,index_type,table_name from user_indexes order by table_name; <10>、查看索引被索引的字段 SQL>select * from user_ind_columns where index_name=upper(\'&index_name\'); 11、创建序列 select * from user_sequences; create sequence SEQ_NAME start with 1000 maxvalue 1000 increment by 1; alter sequence SEQ_NAME minvalue 50 maxvalue 100; 12、删除重复行 update a set aa=null where aa is not null; delete from a where rowid!= (select max(rowid) from a b where a.aa=b.aa); 13、删除同其他表相同的行 delete from a where exits (select \'X\' from b where b.no=a.no); 或 delete from a where no in (select no from b); 14、查询从多少行到多少行的记录(可以用在web开发中的分页显示) select * from ( select rownum row_id,b.* from (select a.* from sys_oper a) b ) where row_id between 15 and 20 15、对公共授予访问权 grant select on 表名 to public; create public synonym 同义词名 for 表名; 16、填加注释 comment on table 表名 is \'注释\'; comment on column 表名.列名 is \'注释\'; 17、分布式数据库,创建数据库链路 create [public] database link LINKNAME [connect to USERNAME identified by PASSWORD] [using \'CONNECT_STRING\'] 可以在服务器端,也可以在客户端建立,但必须注意,两台服务器之间 数据库必须可以互访,必须各有各自的别名数据库 18、查看数据库链路 select * from all_db_links; select * from user_db_links; 查询 select * from TABLENAME@DBLNKNAME; 创建远程数据库同义词 create synonym for TABLENAME@DBLNKNAME; 操纵远程数据库记录 insert into TABLENAME@DBLNKNAME (a,b) values (va,vb); update TABLENAME@DBLNKNAME set a=\'this\'; delete from TABLENAME@DBLNKNAME; 怎样执行远程的内嵌过程 begin otherdbpro@to_html(参数); end; 19、数据库链路用户密码有特殊字符的时候,可以用双引号把密码引起来 create public database link dblink1 connect to db1 identified by \"123*456\" using \'db11\' 20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的。 <1>下面的语句可以进行总计 select region_code,count(*) from aicbs.acc_woff_notify group by rollup(region_code); <2> 对第1个字段小计,最后合计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by rollup(region_code,write_status); ---------------------- 570 0 3 570 1 2 570 5 --此处小计了570的记录 571 0 10 571 1 2 571 12 --此处小计了571的记录 ..... 100 --此处有总计 <3> 复合rollup表达式,只做总计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by rollup(region_code,write_status); <4> 对第1个字段小计,再对第2个字段小计,最后合计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by cube(region_code,write_status); ---------------------- 100 --此处有总计 0 60 --对write_status=0的小计 1 39 --对write_status=1的小计 3 1 --对write_status=3的小计 570 5 --此处小计了570的记录 570 0 3 570 1 2 571 12 --此处小计了571的记录 571 0 10 571 1 2 .... <3> 复合cube表达式,只做总计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by cube(region_code,write_status); <4>下面的语句可以按照rollup不同的字段进行小计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by region_code,rollup(write_status); 21.查询view的创建语句 sql>set long 1000 sql>select * from user_views where view_name=\'MY_VIEW_NAME\'; or sql>select * from all_views where view_name=\'MY_VIEW_NAME\'; 22、去除数据库中特殊字符 <1>.字符串字段中含有\"\'\",如果用来组合sql语句,会造成语句不准确。 比如:replace(f1,\'\'\'\',\'\') <2>.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,\'\\t\',\'\') <3>.清除换行和回车 比如: replace(f2,chr(13)||chr(10),\'\') 23、如何在字符串里加回车或者tab键 在sqlplus中执行 sql>select \'UserId=1233111\'||chr(10)||\'AccId=13431\'||chr(9)||\'AccId2=11111\' from dual; 24、树形查询 create table zj( bm number(8), bmmc varchar2(20), sjbm number(8) ) insert into zj values(1,\'aaa\',0) insert into zj values(11,\'aaa1\',1) insert into zj values(12,\'aaa2\',1) insert into zj values(111,\'aaa11\',11) insert into zj values(112,\'aaa12\',11) insert into zj values(113,\'aaa13\',11) insert into zj values(121,\'aaa21\',12) insert into zj values(122,\'aaa22\',12) insert into zj values(123,\'aaa23\',12) -- select bm,bmmc,sjbm,level from zj start with sjbm=0 connect by prior bm = sjbm 或者 select bm,bmmc,sjbm,level from zj start with sjbm=0 connect by sjbm = prior bm 25、快照 create snapshot SNAPSHOT_NAME [storage (storage parameter)] [tablespace TABLESPACE_NAME] [refresh [fast\\complete\\force] [start with START_DATE next NEXT_DATE] as QUERY; create snapshot snapshot_to_study as select * from TABLE_NAME@to_study; 创建角色 create role aa identified by aaa; 授权 grant create snapshot,alter snapshot to aaa; grant aaa to emp; create snapshot SNAPSHOT_TO_HTML refresh complete start with sysdate next sysdate+5/(24*60*60) as select * from a@to_html; 删除 drop snapshot snap_to_html 手工刷新快照,(调用DBMS_SNAPSHOT包中的refresh过程)DBMS_SNAPSHOT.refresh(snapshot_name,refresh_type); begin DBMS_SNAPSHOT.REFRESH(\'snap_to_html\',\'c\'); end; 对所有快照进行刷新 begin DBMS_SNAPSHOT.REFRESH_ALL; end; 怎样执行远程的内嵌过程 begin otherdbpro@to_html(参数); end; 26、用户管理 create a user: database authentication sql> create user juncky identified by oracle default tablespace users sql> temporary tablespace temp quota 10m on data password expire sql> [account lock|unlock] [profile profilename|default]; <1>.查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; <2>生成用户时指定缺省表空间 create user 用户名 identified by 口令 default tablespace 表空间名; <3>重新指定用户的缺省表空间 alter user 用户名 default tablespace 表空间名 <4>查看当前用户的角色 SQL>select * from user_role_privs; <5>查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; <6>查看用户下所有的表 SQL>select * from user_tables; <7> alter user语句的quota子句限制用户的磁盘空间 如:alter user jf quota 10M on system; 27、查看放在ORACLE的内存区里的表 SQL>select table_name,cache from user_tables where instr(cache,\'Y\')>0; 28、约束条件 create table employee (empno number(10) primary key, name varchar2(40) not null, deptno number(2) default 10, salary number(7,2) check salary<10000, birth_date date, soc_see_num char(9) unique, foreign key(deptno) references dept.deptno) tablespace users; 关键字(primary key)必须是非空,表中记录的唯一性 not null 非空约束 default 缺省值约束 check 检查约束,使列的值符合一定的标准范围 unqiue 唯一性约束 foreign key 外部键约束 29、查看创建视图的select语句 SQL>set view_name,text_length from user_views; SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小 SQL>select text from user_views where view_name=upper(\'&view_name\'); 30、查看同义词的名称 SQL>select * from user_synonyms; 31、用Sql语句实现查找一列中第N大值 select * from (select t.*,dense_rank() over (order by sal) rank from employee) where rank = N; 32 虚拟自段 <1>. CURRVAL 和 nextval 为表创建序列 CREATE SEQUENCE EMPSEQ ... ; SELECT empseq.currval FROM DUAL ; 自动插入序列的数值 INSERT INTO emp VALUES (empseq.nextval, \'LEWIS\', \'CLERK\', 7902, SYSDATE, 1200, NULL, 20) ; <2>. ROWNUM 按设定排序的行的序号 SELECT * FROM emp WHERE ROWNUM < 10 ; <3>. ROWID 返回行的物理地址 SELECT ROWID, ename FROM emp WHERE deptno = 20 ; 33、对CLOB字段进行全文检索 SELECT * FROM A WHERE dbms_lob.instr(a.a,\'K\',1,1)>0; 34. 特殊字符的插入,比如\"&\" insert into a values (translate (\'at{&}t\',\'at{}\',\'at\')); 35.表管理 <1>.create a table sql> create table table_name (column datatype,column datatype]....) sql> tablespace tablespace_name [pctfree integer] [pctused integer] sql> [initrans integer] [maxtrans integer] sql> storage(initial 200k next 200k pctincrease 0 maxextents 50) sql> [logging|nologging] [cache|nocache] <2>.copy an existing table sql> create table table_name [logging|nologging] as subquery <3> create table ... as 方式建表的时候,指定表参数 create table a storage( initial 1M /*第一次创建时分配空间*/ next 1M /*第一次分配的存储空间用完时在分配*/ ) as select * from b; <4>.创建临时表 sql> create global temporary table xay_temp as select * from xay; on commit preserve rows/on commit delete rows 在Oracle中,可以创建以下两种临时表: a 会话特有的临时表: create global temporary table () on commit preserve rows; 会话指定,当中断会话时ORACLE将截断表 b 事务特有的临时表: create global temporary table () on commit delete rows; 事务指定,每次提交后ORACLE将截断表(删除全部行) c 说明 临时表只在当前连接内有效   临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用   数据处理比较复杂的时候时表快,反之视图快点   在仅仅查询数据的时候建议用游标: open cursor for \'sql clause\'; <5> pctfree = (average row size - initial row size) *100 /average row size pctused = 100-pctfree- (average row size*100/available data space) <6>.change storage and block utilization parameter sql> alter table table_name pctfree=30 pctused=50 storage(next 500k sql> minextents 2 maxextents 100); <7>.manually allocating extents sql> alter table table_name allocate extent(size 500k datafile \'c:/oracle/data.dbf\'); <8>.move tablespace sql> alter table employee move tablespace users; <9>.deallocate of unused space sql> alter table table_name deallocate unused [keep integer] <10>.drop a column sql> alter table table_name drop column comments cascade constraints checkpoint 1000; alter table table_name drop columns continue; <11>.mark a column as unused sql> alter table table_name set unused column comments cascade constraints; alter table table_name drop unused columns checkpoint 1000; alter table orders drop columns continue checkpoint 1000 data_dictionary : dba_unused_col_tabs 37. 中文是如何排序的? Oracle9i之前,中文是按照二进制编码进行排序的。 在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序 SCHINESE_PINYIN_M 按照拼音排序 38. 数据表中的字段最大数: 表或视图中的最大列数为 1000 39. oracle中的裸设备: 裸设备就是绕过文件系统直接访问的储存空间 40. 在Oracle服务器上通过SQLPLUS查看本机IP地址 ? select sys_context(\'userenv\',\'ip_address\') from dual; 如果是登陆本机数据库,只能返回127.0.0.1 41. 在ORACLE中取毫秒? 9i之前不支持,9i开始有timestamp. 9i可以用select systimestamp from dual; 42. 将N秒转换为时分秒格式? set serverout on declare N number := 1000000; ret varchar2(100); begin ret := trunc(n/3600) || \'小时\' || to_char(to_date(mod(n,3600),\'sssss\'),\'fmmi\"分 \"ss\"秒\"\') ; dbms_output.put_line(ret); end; 43、在某个用户下找所有的索引 select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name from user_ind_columns, user_indexes where user_ind_columns.index_name = user_indexes.index_name and user_ind_columns.table_name = user_indexes.table_name order by user_indexes.table_type, user_indexes.table_name, user_indexes.index_name, column_position; 44. not in的替代。 一般not in的效率比较低。特别是数据量大的时候,几乎不能执行。 用下面几种方式可以替换写法 比如要查询在fee_rev_info表中已经销户的用户(不在cm_user中的)(不过下面的例子不是很好,因为bill_id是cm_user的唯一索引) select * from fee_rev_info where bill_id not in (select bill_id from cm_user) <1> 用not exists select * from fee_rev_info a where not exists (select \'p\' from cm_user b where b.bill_id = a.bill_id) <2> 用外连接(+) select a.* from fee_rev_info a,cm_user b where a.bill_id = b.bill_id (+) and b.bill_id is null <3> 用hash_aj select /*+HASH_AJ*/* from fee_rev_info where bill_id not in (select bill_id from cm_user) 45.怎么样查询特殊字符,如通配符%与_ 假如数据库中有表 STATIONTYPE,STATION_571 STATION_572 ... select * from tab where tname like \'STATION_%\' 会显示 STATIONTYPE,STATION_571 ... 可以用下面的语句 select * from tab where tname like \'STATION\\_%\' escape\'\\\' 46.如果存在就更新,不存在就插入可以用一个语句实现吗 9i已经支持了,是Merge,但是只支持select子查询, 如果是单条数据记录,可以写作select .... from dual的子查询。 语法为: MERGE INTO table USING data_source ON (condition) WHEN MATCHED THEN update_clause WHEN NOT MATCHED THEN insert_clause; 如 MERGE INTO cm_user_credit USING (select * from dual) ON (user_id =1302514690 ) when MATCHED then update set credit_value = 1000 when NOT MATCHED then insert (user_id,acc_id,bill_id,plan_id,region_code,credit_value) values(1302514690,1305032158,\'13857141218\',10070247,\'571\',1000); 47.怎么实现一条记录根据条件多表插入 9i以上可以通过Insert all语句完成,仅仅是一个语句,如: INSERT ALL WHEN (id=1) THEN INTO table_1 (id, name) values(id,name) WHEN (id=2) THEN INTO table_2 (id, name) values(id,name) ELSE INTO table_other (id, name) values(id, name) SELECT id,name FROM a; 如果没有条件的话,则完成每个表的插入,如 INSERT ALL INTO table_1 (id, name) values(id,name) INTO table_2 (id, name) values(id,name) INTO table_other (id, name) values(id, name) SELECT id,name FROM a; 48.如何实现行列转换 <1>、固定列数的行列转换 如 student subject grade --------------------------- student1 语文 80 student1 数学 70 student1 英语 60 student2 语文 90 student2 数学 80 student2 英语 100 ... 转换为 语文 数学 英语 student1 80 70 60 student2 90 80 100 ... 语句如下: select student,sum(decode(subject,\'语文\', grade,null)) \"语文\", sum(decode(subject,\'数学\', grade,null)) \"数学\", sum(decode(subject,\'英语\', grade,null)) \"英语\" from table group by student <2>、不定列行列转换 如 c1 c2 -------------- 1 我 1 是 1 谁 2 知 2 道 3 不 ... 转换为 1 我是谁 2 知道 3 不 这一类型的转换必须借助于PL/SQL来完成,这里给一个例子 CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER) RETURN VARCHAR2 IS Col_c2 VARCHAR2(4000); BEGIN FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP Col_c2 := Col_c2||cur.c2; END LOOP; Col_c2 := rtrim(Col_c2,1); RETURN Col_c2; END; / SQL> select distinct c1 ,get_c2(c1) cc2 from table;即可 --例子: create table okcai_1 ( user_id varchar2(10), user_number varchar2(10), user_num number(8) ) user_id user_number user_num --------------------- 1 123 2 1 456 5 1 789 6 2 11 2 2 22 3 2 33 4 2 44 5 2 55 6 2 66 7 2 77 8 3 1234 1 3 5678 2 方式一: create or replace function get_col( p_userId number, p_col number ) return varchar as v_tmp varchar2(255); begin select user_number||chr(9)||user_num into v_tmp from (select user_number,user_num,rownum row_id from okcai_1 where user_id = p_userId) a where row_id = p_col; return ltrim(v_tmp); --return v_tmp; end; 然后 select distinct user_id,get_col(user_id,1),get_col(user_id,2),get_col(user_id,3) .... from okcai_1 方式二: create or replace function get_col( p_userId number, p_col number ) return varchar as v_tmp varchar2(255); begin select user_number||chr(9)||user_num into v_tmp from (select user_number,user_num,rownum row_id from okcai_1 where user_id = p_userId) a where row_id = p_col; return ltrim(v_tmp); --return v_tmp; end; select distinct user_id,get_col_new(user_id) from okcai_1; 49.怎么设置存储过程的调用者权限 普通存储过程都是所有者权限,如果想设置调用者权限,请参考如下语句 create or replace procedure ...() AUTHID CURRENT_USER As begin ... end; 50.Oracle有哪些常见关键字 详细信息可以查看v$reserved_words视图 51.怎么查看数据库参数 <1> show parameter 参数名 如通过show parameter spfile可以查看9i是否使用spfile文件 其中参数名是可以匹配的。 比如show parameter cursor ,则会显示跟cursor相关的参数 <2> select * from v$parameter <3> 除了这部分参数,Oracle还有大量隐含参数,可以通过如下语句查看: SELECT NAME ,VALUE ,decode(isdefault, \'TRUE\',\'Y\',\'N\') as \"Default\" ,decode(ISEM,\'TRUE\',\'Y\',\'N\') as SesMod ,decode(ISYM,\'IMMEDIATE\', \'I\', \'DEFERRED\', \'D\', \'FALSE\', \'N\') as SysMod ,decode(IMOD,\'MODIFIED\',\'U\', \'SYS_MODIFIED\',\'S\',\'N\') as Modified ,decode(IADJ,\'TRUE\',\'Y\',\'N\') as Adjusted ,description FROM ( --GV$SYSTEM_PARAMETER SELECT x.inst_id as instance ,x.indx+1 ,ksppinm as NAME ,ksppity ,ksppstvl as VALUE ,ksppstdf as isdefault ,decode(bitand(ksppiflg/256,1),1,\'TRUE\',\'FALSE\') as ISEM ,decode(bitand(ksppiflg/65536,3), 1,\'IMMEDIATE\',2,\'DEFERRED\',\'FALSE\') as ISYM ,decode(bitand(ksppstvf,7),1,\'MODIFIED\',\'FALSE\') as IMOD ,decode(bitand(ksppstvf,2),2,\'TRUE\',\'FALSE\') as IADJ ,ksppdesc as DESCRIPTION FROM x$ksppi x ,x$ksppsv y WHERE x.indx = y.indx AND substr(ksppinm,1,1) = \'_\' AND x.inst_id = USERENV(\'Instance\') ) ORDER BY NAME 52.怎样建立基于函数索引 8i以上版本,确保 Query_rewrite_enabled=true Query_rewrite_integrity=trusted Compatible=8.1.0以上 Create index indexname on table (function(field)); 53.怎么样移动表或表分区 [A]移动表的语法 Alter table tablename move [Tablespace new_name Storage(initial 50M next 50M pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging] 移动分区的语法 alter table tablename move (partition partname) [update global indexes] 之后之后必须重建索引 Alter index indexname rebuild 如果表有Lob段,那么正常的Alter不能移动Lob段到别的表空间,而仅仅是移动了表段,可以采用如下的方法移动Lob段 alter table tablename move lob(lobsegname) store as (tablespace newts); 54.怎么样修改表的列名 [A]9i以上版本可以采用rname命令 ALTER TABLE UserName.TabName RENAME COLUMN SourceColumn TO DestColumn 9i以下版本可以采用create table …… as select * from SourceTable的方式。 另外,8i以上可以支持删除列了 ALTER TABLE UserName.TabName SET UNUSED (ColumnName) CASCADE CONSTRAINTS ALTER TABLE UserName.TabName DROP (ColumnName) CASCADE CONSTRAINTS 55.case的用法 在sql语句中 CASE test_value WHEN expression1 THEN value1 [[WHEN expression2 THEN value2] [...]] [ELSE default_value] END 比如1 SELECT last_name, job_id, salary CASE job_id WHEN \'IT_PROG\' THEN 1.10*salary WHEN \'ST_CLERK\' THEN 1.15*salary WHEN \'SA_REP\' THEN 1.20*salary ELSE salary END \"REVISED_SALARY\" FROM employees 比如2 select case when real_charge>=20000 and real_charge<30000 then 5000 when real_charge>=30000 and real_charge<40000 then 9000 when real_charge>=40000 and real_charge<50000 then 10000 when real_charge>=50000 and real_charge<60000 then 14000 when real_charge>=60000 and real_charge<70000 then 18000 when real_charge>=70000 and real_charge<80000 then 19000 when real_charge>=80000 and real_charge<90000 then 24000 when real_charge>=90000 and real_charge<100000 then 27000 when real_charge>=100000 and real_charge<110000 then 27000 when real_charge>=110000 and real_charge<120000 then 29000 when real_charge>=120000 then 36000 else 0 end ,acc_id,user_id,real_charge from okcai_jh_charge_200505 在存储过程中 case v_strGroupClassCode when \'1\' then v_nAttrNum := v_nAttrNum + 300; v_strAttrFlag := \'1\'||substr(v_strAttrFlag,2,7); when \'2\' then v_nAttrNum := v_nAttrNum + 200; v_strAttrFlag := \'2\'||substr(v_strAttrFlag,2,7); else NULL; end case; 注意的是存储过程和sql语句有的细微差别是用end case,而不是end。语句后面跟\";\"
21天学习SQL V1.0.pdf 66 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 2 日期/时间函数......................................................................................................... 66 ADD_MONTHS................................................................................................ 67 LAST_DAY...................................................................................................... 68 MONTHS_BETWEEN....................................................................................... 69 NEW_TIME...................................................................................................... 70 NEXT_DAY...................................................................................................... 71 SYSDATE......................................................................................................... 72 数学函数................................................................................................................. 72 ABS ................................................................................................................. 73 CEIL 和FLOOR ............................................................................................... 73 COS COSH SIN SINH TAN TANH........................................................ 73 EXP................................................................................................................. 75 LN and LOG..................................................................................................... 75 MOD................................................................................................................ 76 POWER............................................................................................................ 77 SIGN ............................................................................................................... 77 SQRT ............................................................................................................... 78 字符函数................................................................................................................. 79 CHR................................................................................................................. 79 CONCAT .......................................................................................................... 79 INITCAP.......................................................................................................... 80 LOWER 和UPPER ........................................................................................... 81 LPAD 与RPAD................................................................................................. 82 LTRIM 与RTRIM............................................................................................. 83 REPLACE ........................................................................................................ 84 SUBSTR........................................................................................................... 85 TRANSLATE.................................................................................................... 88 INSTR ............................................................................................................. 88 LENGTH.......................................................................................................... 89 转换函数................................................................................................................. 89 TO_CHAR........................................................................................................ 90 TO_NUMBER................................................................................................... 91 其它函数................................................................................................................. 91 GREATEST 与LEAST...................................................................................... 91 USER............................................................................................................... 92 总结........................................................................................................................ 92 问与答.................................................................................................................... 93 校练场.................................................................................................................... 93 练习........................................................................................................................ 94 第五天SQL 中的子句........................................................................................................... 95 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 3 目标.................................................................................................................... 95 WHERE 子句.......................................................................................................... 96 STARTING WITH子句............................................................................................ 98 ORDER BY 子句..................................................................................................... 99 GROUP BY 子句....................................................................................................104 HAVING 子句.........................................................................................................109 子句的综合应用.....................................................................................................112 总结.......................................................................................................................117 问与答...................................................................................................................117 校练场...................................................................................................................117 练习.......................................................................................................................118 第六天表的联合..................................................................................................................119 介绍.......................................................................................................................119 在一个SELECT 语句中使用多个表.........................................................................119 正确地找到列..................................................................................................123 等值联合................................................................................................................124 不等值联合............................................................................................................129 外部联合与内部联合..............................................................................................130 表的自我联合.........................................................................................................132 总结.......................................................................................................................134 问与答...................................................................................................................134 校练场...................................................................................................................134 练习.......................................................................................................................135 第七天子查询内嵌的SQL 子句........................................................................................136 目标...................................................................................................................136 建立一个子查询.....................................................................................................136 在子查询中使用汇总函数.......................................................................................140 子查询的嵌套.........................................................................................................141 相关子查询............................................................................................................144 EXISTS ANY ALL 的使用.................................................................................147 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 4 总结.......................................................................................................................151 问与答...................................................................................................................151 校练场...................................................................................................................152 练习...................................................................................................................153 第一周回顾............................................................................................................................154 预览.......................................................................................................................154 第二周概貌............................................................................................................................155 这一周都讲些什么..................................................................................................155 第八天操作数据..................................................................................................................156 目标.......................................................................................................................156 数据操作语句.........................................................................................................156 插入语句................................................................................................................157 INSERT VALUES 语句.....................................................................................157 INSERT SELECT 语句.....................................................................................161 UPDATE语句........................................................................................................163 DELETE 语句.........................................................................................................166 从外部数据源中导入和导出数据.............................................................................169 Microsoft Access ..............................................................................................170 Microsoft and Sybase SQL Server ......................................................................171 Personal Oracle7...............................................................................................171 总结.......................................................................................................................172 问与答...................................................................................................................172 校练场...................................................................................................................173 练习.......................................................................................................................173 第九天创建和操作表...........................................................................................................174 目标...................................................................................................................174 CREATE DATABASE 语句......................................................................................174 建立数据库时的选项.......................................................................................175 设计数据库.....................................................................................................176 建立数据字典..................................................................................................176 建立关键字段..................................................................................................177 CREATE TABLE 语句.............................................................................................178 表名................................................................................................................179 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 5 FIRST NAME..................................................................................................179 空值属性.........................................................................................................180 唯一属性.........................................................................................................181 表的存储与尺寸的调整....................................................................................183 用一个已经存在的表来建表.............................................................................184 ALTER TABLE 语句...............................................................................................185 DROP TABLE 语句.................................................................................................186 DROP DATABASE语句..........................................................................................187 总结.......................................................................................................................188 问与答...................................................................................................................188 校练场...................................................................................................................189 练习.......................................................................................................................190 第10 天创建视图和索引.......................................................................................................191 目标.......................................................................................................................191 使用视图................................................................................................................192 列的重命名.....................................................................................................196 SQL 对视图的处理过程...................................................................................197 在SELECT 语句使用约束................................................................................201 在视图中修改数据...........................................................................................201 在视图中修改数据的几个问题.........................................................................203 通用应用程序的视图.......................................................................................204 删除视图语句..................................................................................................207 使用索引................................................................................................................207 什么是索引..................................................................................................207 使用索引的技巧..............................................................................................212 对更多的字段进行索引....................................................................................212 在创建索引时使用UNIQUE 关键字.................................................................214 索引与归并.....................................................................................................216 群集簇的使用...........................................................................................217 总结.......................................................................................................................218 问与答................................................................................................................219 校练场...................................................................................................................219 练习...................................................................................................................220 第11 天事务处理控制.........................................................................................................221 目标...................................................................................................................221 事务控制................................................................................................................221 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 6 银行应用程序..................................................................................................222 开始事务处理..................................................................................................223 结束事务处理..................................................................................................225 取消事务处理..................................................................................................228 在事务中使用保存点.......................................................................................231 总结.......................................................................................................................234 问与答...................................................................................................................234 校练场...................................................................................................................235 练习.......................................................................................................................235 第12 天数据库安全............................................................................................................236 前提数据库管理员..............................................................................................236 流行的数据库产品与安全.......................................................................................237 如何让一个数据库变得安全....................................................................................237 Personal Oracle7 与安全..........................................................................................238 创建用户.........................................................................................................238 创建角色.........................................................................................................240 用户权限.........................................................................................................242 为安全的目的而使用视图................................................................................247 总结.......................................................................................................................251 问与答...................................................................................................................252 校练场...................................................................................................................252 练习.......................................................................................................................253 第13 天高级 SQL.................................................................................................................254 目标...................................................................................................................254 临时表...................................................................................................................254 Title ................................................................................................................257 游标.......................................................................................................................259 创建游标.........................................................................................................260 打开游标.........................................................................................................260 使用游标来进行翻阅.......................................................................................261 测试游标的状态..............................................................................................262 关闭游标.........................................................................................................263 游标的适用范围..............................................................................................264 创建和使用存贮过程..............................................................................................265 在存贮过程中使用参数....................................................................................267 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 7 删除一个存贮过程...........................................................................................269 存贮过程的嵌套..............................................................................................270 设计和使用触发机制..............................................................................................272 触发机制与事务处理.......................................................................................273 使用触发机制时的限制....................................................................................275 触发机制的嵌套..............................................................................................275 在选择语句中使用更新和删除................................................................................275 在执行前测试选择语句....................................................................................276 嵌入型SQL............................................................................................................277 静态SQL 与动态SQL.....................................................................................277 使用SQL 来编程....................................................................................................279 总结.......................................................................................................................280 问与答...................................................................................................................280 校练场...................................................................................................................280 练习.......................................................................................................................281 第14 天动态使用SQL ........................................................................................................282 目标.......................................................................................................................282 快速入门................................................................................................................282 ODBC .............................................................................................................282 Personal Oracle 7..............................................................................................283 InterBase SQL ISQL ...................................................................................283 Visual C++ ......................................................................................................284 Delphi.............................................................................................................284 设置.......................................................................................................................284 创建数据库............................................................................................................285 使用MS QUERY 来完成链接..................................................................................290 将VISUAL C++与SQL 结合使用...........................................................................292 将DELPHI 与SQL 结合使用..................................................................................296 总结.......................................................................................................................302 问与答...................................................................................................................303 校练场...................................................................................................................303 练习.......................................................................................................................303 第二周回顾............................................................................................................................304 第三周概貌............................................................................................................................305 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 8 应用你对SQL 的知识.............................................................................................305 第15 天对SQL 语句优化以提高其性能...............................................................................306 目标.......................................................................................................................306 让你的SQL 语句更易读.........................................................................................307 全表扫描................................................................................................................308 加入一个新的索引..................................................................................................309 在查询中各个元素的布局.......................................................................................309 过程................................................................................................................311 避免使用OR...................................................................................................311 OLAP 与OLTP 的比较...........................................................................................313 OLTP 的调试...................................................................................................313 OLAP 的调试..................................................................................................314 批量载入与事务处理进程.......................................................................................314 删除索引以优化数据的载入....................................................................................316 经常使用COMMIT 来让DBA 走开........................................................................316 在动态环境中重新生成表和索引.............................................................................317 数据库的调整.........................................................................................................319 性能的障碍............................................................................................................322 内置的调整工具.....................................................................................................323 总结.......................................................................................................................323 问与答...................................................................................................................324 校练场...................................................................................................................324 练习.......................................................................................................................324 第16 天用视图从数据字典中获得信息................................................................................326 目标.......................................................................................................................326 数据字典简介.........................................................................................................326 用户的数据字典.....................................................................................................327 数据字典中的内容..................................................................................................327 Oracle 的数据字典...........................................................................................328 Sybase 的数据字典..........................................................................................328 ORACLE 数据字典的内部结构...............................................................................328 用户视图.........................................................................................................328 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 9 系统数据库管理员视图....................................................................................336 数据库对象.....................................................................................................339 数据库的生长..................................................................................................343 动态执行视图..................................................................................................347 总结.......................................................................................................................349 问与答...................................................................................................................349 校练场...................................................................................................................350 练习.......................................................................................................................350 第17 天使用SQL 来生成SQL 语句....................................................................................351 目标.......................................................................................................................351 使用SQL 来生成SQL 语句的目的..........................................................................351 几个SQL*PLUS 命令.............................................................................................352 SET ECHO ON/OFF.........................................................................................353 SET FEEDBACK ON/OFF................................................................................353 SET HEADING ON/OFF ..................................................................................353 SPOOL FILENAME/OFF..................................................................................353 START FILENAME..........................................................................................354 ED FILENAME................................................................................................354 计算所有的表中的行数...........................................................................................354 为多个用户赋予系统权限.......................................................................................359 将你的表的权限赋予其它的用户.............................................................................361 在载入数据时解除对数的约束................................................................................363 一次创建多个同义字..............................................................................................364 为你的表创建视图..................................................................................................368 在一个计划中清除其所有的表的内容......................................................................369 使用SQL 来生成SHELL 脚本................................................................................371 再建表和索引.........................................................................................................372 总结.......................................................................................................................373 问与答...................................................................................................................373 校练场...................................................................................................................373 练习.......................................................................................................................374 第18 天PL/SQL 简介..........................................................................................................376 目标.......................................................................................................................376 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 10 入门.......................................................................................................................376 在PL/SQL 中的数据类型........................................................................................377 字符串类型.....................................................................................................377 数值数据类型..................................................................................................378 二进制数据类型.....................................................................................................378 日期数据类型.........................................................................................................378 逻辑数据类型.........................................................................................................378 ROWID...........................................................................................................379 PL/SQL 块的结构...................................................................................................379 注释.......................................................................................................................380 DECLARE 部分......................................................................................................380 变量声明.........................................................................................................380 常量定义.........................................................................................................381 指针定义.........................................................................................................381 %TYPE 属性...................................................................................................382 %ROWTYPE 属性...........................................................................................382 %ROWCOUNT 属性........................................................................................383 Procdure 部分.........................................................................................................383 BEGIN … … END..............................................................................................383 指针控制命令..................................................................................................384 条件语句.........................................................................................................386 LOOPS 循环....................................................................................................387 EXCEPTION 部分..................................................................................................390 激活EXCEPTION 异常.............................................................................390 异常的处理.....................................................................................................391 将输入返回给用户..................................................................................................392 在PL/SQL 中的事务控制........................................................................................393 让所有的事在一起工作....................................................................................394 示例表及数据..................................................................................................394 一个简单的PL/SQL 语句块.............................................................................395 又一个程序.....................................................................................................398 存储过程包和触发机制.......................................................................................403 总结.......................................................................................................................406 问与答...................................................................................................................407 校练场...................................................................................................................407 练习.......................................................................................................................407 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 11 第19 天TRANSACT-SQL 简介............................................................................................408 目标.......................................................................................................................408 TRANSACT-SQL 概貌............................................................................................408 对ANSI SQL 的扩展..............................................................................................408 谁需要使用TRANSACT-SQL..........................................................................409 TRANSACT-SQL 的基本组件..........................................................................409 数据类型................................................................................................................409 使用TRANSACT-SQL 来访问数据库......................................................................411 BASEBALL 数据库.........................................................................................411 定义局部变量..................................................................................................414 定义全局变量..................................................................................................414 使用变量.........................................................................................................415 PRINT 命令....................................................................................................417 流控制...................................................................................................................417 BEGIN … … END 语句......................................................................................418 IF … … ELSE 语句............................................................................................418 EXIST 条件.....................................................................................................421 WHILE 循环....................................................................................................422 使用WHILE 循环在表中翻阅..........................................................................424 TRANSACT-SQL 中的通配符.................................................................................426 使用COMPUTE 来生成摘要报告............................................................................426 日期转换................................................................................................................427 SQL SERVER 的诊断工具— — SET 命令..................................................................427 总结.......................................................................................................................428 问与答...................................................................................................................428 校练场...................................................................................................................429 练习.......................................................................................................................429 第20 天SQL*PLUS .............................................................................................................430 目标.......................................................................................................................430 简介.......................................................................................................................430 SQL*PLUS 缓存.....................................................................................................430 DESCRIBE 命令.....................................................................................................435 SHOW 命令............................................................................................................436 文件命令................................................................................................................438 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 12 SAVE GET EDIT 命令................................................................................438 运行一个文件..................................................................................................439 查询的假脱机输出...........................................................................................440 SET 命令...............................................................................................................442 LOGIN.SQL 文件...................................................................................................445 CLEAR 命令..........................................................................................................446 将你的输出格式化..................................................................................................446 TTITLE 与BTITLE..........................................................................................446 格式化列COLUMN HEADING FORMAT ..............................................447 报表与分类汇总.....................................................................................................449 BREAK ON.....................................................................................................449 COMPUTE......................................................................................................450 在SQL*PLUS 中使用变量......................................................................................453 DEFINE ..........................................................................................................454 ACCEPT .........................................................................................................455 NEW_VALUE..................................................................................................457 DUAL 表........................................................................................................458 DECODE 函数.................................................................................................459 日期转换................................................................................................................462 运行一系列的SQL 文件.........................................................................................465 在你的SQL 脚本中加入注释..................................................................................466 高级报表................................................................................................................467 总结.......................................................................................................................469 问与答...................................................................................................................469 校练场...................................................................................................................469 练习.......................................................................................................................470 第21 天常见的SQL 错误及解决方法..................................................................................471 目标...................................................................................................................471 介绍.......................................................................................................................471 常见的错误............................................................................................................471 Table or View Does Not Exist.............................................................................471 Invalid Username or Password ...........................................................................472 FROM Keyword Not Specified...........................................................................473 Group Function Is Not Allowed Here ..................................................................474 Invalid Column Name........................................................................................475 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 13 Missing Keyword .............................................................................................475 Missing Left Parenthesis ....................................................................................476 Missing Right Parenthesis ..................................................................................477 Missing Comma................................................................................................478 Column Ambiguously Defined ...........................................................................478 Not Enough Arguments for Function...................................................................480 Not Enough Values............................................................................................481 Integrity Constraint Violated--Parent Key Not Found ............................................482 Oracle Not Available .........................................................................................483 Inserted Value Too Large for Column ..................................................................483 TNS:listener Could Not Resolve SID Given in Connect Descriptor .........................484 Insufficient Privileges During Grants...................................................................484 Escape Character in Your Statement--Invalid Character .........................................485 Cannot Create Operating System File ..................................................................485 Common Logical Mistakes.................................................................................485 Using Reserved Words in Your SQL statement .....................................................486 The Use of DISTINCT When Selecting Multiple Columns.....................................487 Dropping an Unqualified Table ...........................................................................487 The Use of Public Synonyms in a Multischema Database.......................................488 The Dreaded Cartesian Product ..........................................................................488 Failure to Enforce File System Structure Conventions ...........................................489 Allowing Large Tables to Take Default Storage Parameters....................................489 Placing Objects in the System Tablespace............................................................490 Failure to Compress Large Backup Files ..............................................................491 Failure to Budget System Resources ...................................................................491 Preventing Problems with Your Data...................................................................491 Searching for Duplicate Records in Your Database................................................491 总结...................................................................................................................491 校练场...................................................................................................................492 练习.......................................................................................................................492 第三周回顾............................................................................................................................494 附件A 在SQL 中的常见术语...............................................................................................495 ALTER DATABASE.........................................................................................495 ALTER USER..................................................................................................495 BEGIN TRANSACTION ..................................................................................495 CLOSE CURSOR.............................................................................................495 COMMIT TRANSACTION...............................................................................496 CREATE DATABASE.......................................................................................496 CREATE INDEX..............................................................................................496 CREATE PROCEDURE....................................................................................496 CREATE TABLE..............................................................................................497 CREATE TRIGGER..........................................................................................497 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 14 CREATE USER................................................................................................497 CREATE VIEW................................................................................................497 DEALLOCATE CURSOR.................................................................................498 DROP DATABASE...........................................................................................498 DROP INDEX..................................................................................................498 DROP PROCEDURE........................................................................................498 DROP TABLE..................................................................................................498 DROP TRIGGER .............................................................................................499 DROP VIEW....................................................................................................499 EXECUTE.......................................................................................................499 FETCH............................................................................................................499 FROM.............................................................................................................499 GRANT...........................................................................................................500 GROUP BY.....................................................................................................500 HAVING..........................................................................................................500 INTERSECT....................................................................................................500 ORDER BY.....................................................................................................500 ROLLBACK TRANSACTION ..........................................................................500 REVOKE.........................................................................................................500 SELECT..........................................................................................................501 SET TRANSACTION.......................................................................................501 UNION............................................................................................................501 WHERE..........................................................................................................501 *.....................................................................................................................501 附件B 在第14 天中的C++源代码清单................................................................................502 附件 C 第14 天中的Delphi 源代码清单...............................................................................521 附件D 参考内容..................................................................................................................524 书..........................................................................................................................524 Developing Sybase Applications ..................................................................524 Sybase Developer's Guide ...........................................................................524 Microsoft SQL Server 6.5 Unleashed, 2E ......................................................524 Teach Yourself Delphi in 21 Days ................................................................524 Delphi Developer's Guide ...........................................................................524 Delphi Programming Unleashed ..................................................................525 Essential Oracle 7.2 ...................................................................................525 Developing Personal Oracle7 for Windows 95 Applications ............................525 Teach Yourself C++ Programming in 21 Days ...............................................525 Teach Yourself Tansact-SQL in 21 Days .......................................................525 Teach Yourself PL/SQL in 21 Days ............................................................525 杂志...................................................................................................................526 DBMS.............................................................................................................526 Oracle Magazine...............................................................................................526 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 15 SQL 的互联网资源.................................................................................................526 附件E ACSLL 码表.............................................................................................................527 附件F 问题与练习答案........................................................................................................533 第一天SQL 简介.................................................................................................533 问题答案.........................................................................................................533 练习答案.........................................................................................................533 第二天查询— — SELECT 语句的使用..................................................................533 问题答案.........................................................................................................533 练习答案.........................................................................................................534 第三天表达式条件语句与运算.........................................................................535 问题答案.........................................................................................................535 练习答案.........................................................................................................535 第四天函数对获得数据的进一步处理...............................................................536 问题答案.........................................................................................................536 练习答案.........................................................................................................537 第五天SQL 中的子句..........................................................................................538 问题答案.........................................................................................................538 练习答案.........................................................................................................538 第六天表的联接..................................................................................................540 问题答案.........................................................................................................540 练习答案.........................................................................................................541 第7 天子查询内嵌的SELECT 语句............................................................542 问题答案.........................................................................................................542 练习答案.........................................................................................................544 第八天操作数据..................................................................................................544 问题答案.........................................................................................................544 练习答案.........................................................................................................546 第九天创建和操作表...........................................................................................546 问题答案.........................................................................................................546 练习答案.........................................................................................................548 第10 天创建视图和索引.......................................................................................549 问题答案.........................................................................................................549 练习答案.....................................................................................................550 第11 天事务处理控制.........................................................................................550 问题答案.........................................................................................................550 练习答案.........................................................................................................551 第12 天数据库安全............................................................................................552 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 16 问题答案.........................................................................................................552 练习答案.........................................................................................................552 第13 天高级 SQL.................................................................................................553 问题答案.........................................................................................................553 练习答案.........................................................................................................553 第14 天动态使用SQL ........................................................................................554 问题答案.........................................................................................................554 练习答案.........................................................................................................554 第15 天对SQL 语句优化以提高其性能...............................................................555 问题答案.........................................................................................................555 练习答案.........................................................................................................555 第16 天用视图从数据字典中获得信息................................................................557 问题答案.........................................................................................................557 练习答案.........................................................................................................557 第17 天使用SQL 来生成SQL 语句....................................................................558 问题答案.........................................................................................................558 练习答案.........................................................................................................560 第18 天PL/SQL 简介..........................................................................................561 问题答案.........................................................................................................561 练习答案.........................................................................................................561 第19 天TRANSACT-SQL 简介............................................................................562 问题答案.........................................................................................................562 练习答案.........................................................................................................562 第20 天SQL*PLUS .............................................................................................563 问题答案.........................................................................................................563 练习答案.........................................................................................................563 第21 天常见的SQL 错误及解决方法..................................................................564 问题答案.........................................................................................................564 练习答案.........................................................................................................

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧