Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1466782
  • 博文数量: 416
  • 博客积分: 13005
  • 博客等级: 上将
  • 技术积分: 3297
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 16:26
文章分类

全部博文(416)

文章存档

2014年(1)

2013年(4)

2012年(46)

2011年(64)

2010年(12)

2009年(4)

2008年(40)

2007年(187)

2006年(58)

分类: Oracle

2007-02-02 09:43:17

编写子查询 
子查询中不能使用GROUP BY 子句 
如果子
查询返回的数据超过一行,则必须使用多行比较运算符(IN, NOT IN) 
子
查询不能用与INSERT语句的VALUES子句中,能用于WHERE, HAVING, FROM, CREATE VIEW,                        
CREATE TABLE 
语法, INSERT 语句的INTO子句中 和UPDATE语句的SET子句中 
多列子
查询 
如果子查询返回数据包括空值,整个查询将不返回数据,为避免这种情况,可在子查询中使用NVL函数。 
!=ALL
作用跟NOT IN 一
样 
在FROM子句里使用子查询等于定义了数据源,免除使用视图的必要。 
使用SQL*PLUS产生可读输出 
SQL*PLUS 
命令中的START命令用于运行一个已存文件,用符号@可实现同样的功能。 
SQL
命令ACCEPT的典型用法 
ACCEPT id PROMPT 'Please enter the student id: 
注意不要漏了PRMOPT。 
SET LINESIZE 50 
这个语句的作用是把每行显示的字符值设置为50。 
要指定
每页显示的行的数值,用关键字PAGESIZE;要设置LONG类型数据显示的最大宽度, 
用关键字LONG ;要设置查询返回记录的最大值,用关键字FEEDBACK。 
&
的用法 
COLUMN product_name HEADING 'Product Name' FORMAT A20 
这是编辑格式命令语句,实现了两项功能:1 把 PRODUCT_NAME 列设置为以 'Product Name'开头;2 把该列的显示宽度设置为20。 
操
纵数据 
DCL 
和DDL命令的执行会导致一次隐式提交,之前未提交的操作(包括DML 命令)都会提交 
写入数据文件。 
UPDATE table SET column 
语句中使用子查询的典型用法: 
UPDATE inventory SET price = 
(SELECT price * 1.10 FROM inventory WHERE description = 'Cable') 
WHERE description IN('Copper Wire', 'Cable'); 
注意由于使用了单行运算符“=”,这时子查询返回的数据必须为一行,否则会返回错误。 
INSERT INTO table
(column1,column2.......) VALUES value 
该语句执行后,只会在表中插入一行数据。 
在表中插入数据时要注意几项:1 表中带 NOT NULL约束的列,这些列必须在目标列中。 
2 
插入数据的数据类型必须跟表中的对应列相同。 
3 
数据长度不能超过对应列限定的最大值。 
QUIT 
是SQL*PLUS命令,用以结束一个SQL*PLUS的对话。 
EXIT 
是PL/SQL命令,用以结束一个循环。 
DELETE
命令会删除表中的行,是DML语句,提交后会永久删除,但表的结构会保留。 
但你对一表执行了DML语句的INSERT操作时,但没有提交,别人可以同时访问该表,但看不到你所作的修改,由于对象被加锁,所以别人不能作同样的修改。 
数据库崩溃会导致一次自动回滚。 
如果A表中的a列在B表中拥有一个外键约束,在你删除B表记录之前,你必须先删除A表中的所有子记录。如果你尝试在A表中插入一个记录,而B表中不存在它的副记录的会得到一个违反约束的错误。 
阅读(1807) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~