编写子查询
子查询中不能使用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表中不存在它的副记录的会得到一个违反约束的错误。
阅读(1636) | 评论(0) | 转发(0) |