626
---多表查询
--Oracle定义的链接类型
1、等于链接
2、不等链接
3、外连接(可细分为左外连接、右外连接)
没有加号的一方是主表
4、自链接
--工业标准定义(SQL 1999)的链接类型
1、交叉连接(笛卡尔乘积)
2、自然链接(相当于Oracle的“等于连接”)
3、Using 子句
4、内连接
5、外连接(全外连接、左外连接、右外连接)
---分组计算函数和group by
--分组计算函数
1、求和(SUM)
2、求平均值(AVG)
3、计数(COUNT)
----------------------------------------------------------------
函数用法 意义
COUNT(*) 返回满足选择条件的所有行的行数,包括值为空的行和重复的行
COUNT(expr) 返回满足选择条件的且表达式不为空行数。
COUNT(DISTINCT expr) 返回满足选择条件的且表达式不为空,且不重复的行数。
-----------------------------------------------------------------
4、求标准差(STDDEV)
5、求方差(VARIANCE)
6、求最大值(MAX)
7、求最小值(MIN)
--使用GROUP BY 子句进行分组
▲SELECT 查询语句中同时选择分组计算函数表达式和其他独立字段时,其他字段必须出现在Group By子
句中,否则不合法。
▲不能在Where 条件中使用分组计算函数表达式,当出现这样的需求的时候,使用Having 子句。
▲分组计算函数也可嵌套使用
--子查询
①单行比较必须对应单行子查询(返回单一结果值的查询); 比如= , >
②多行比较必须对应多行子查询(返回一个数据集合的查询);比如IN , > ANY, > ALL 等
▲any 任意 小于最大,大于最小
▲all 所有 小于最小,大于最大
---DML数据操纵语言
--insert
INSERT INTOtable [(column [, column...])] VALUES (value [, value...]);
从另一个表中copy一行
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
--update
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];
▲当存在约束的时候,某些更新可能会失败
--delete
DELETE [FROM] table [WHERE condition];
▲TRUNCATE TABLE copy_emp 截断数据,无法回滚
▲当存在约束的时候,某些删除可能会失败
--merge 比较整合语句 用来合并UPDATE和INSERT语句
MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
col1 = col_val1,
col2 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list)
VALUES (column_values);
---事务控制(控制数据一致性)
--当如下事件发生是,会隐式的执行Commit动作:
1、数据定义语句被执行的时候,比如新建一张表:Create Table …
2、数据控制语句被执行的时候,比如赋权GRANT …( 或者DENY)
3、正常退出iSQL*Plus 或者PLSQL DEVELOPER, 而没有显式的执行COMMIT 或者ROLLBACK 语句。
--当如下事件发生时,会隐式执行Rollback 动作:
1、非正常退出iSQL*Plus , PLSQL DEVELOPER, 或者发生系统错误。
--在Commit 或者Rollback前后数据的状态:
1、在数据已经被更改,但没有Commit前,被更改记录处于被锁定状态,其他用户无法进行更改;
2、在数据已经被更改,但没有Commit前,只有当前Session的用户可以看到这种变更,其他Session的用户
看不到数据的变化。
3、在数据已经被更改,并且被Commit后,被更改记录自动解锁,其他用户可以进行更改;
4、在数据已经被更改,并且被Commit后,其他Session的用户再次访问这些数据时,看到的是变化后的数据。
---锁
防止并发事务对相同的资源(所谓资源是指表、行、共享的数据结构、数据字典行等)进行更改的时候,相互破坏。
---表
表名:1、必须以字母开头
2、长度不能超过30个字符
3、只能包含A–Z, a–z, 0–9, _, $, and #
4、不能与数据库中的已有对象重名
5、不能使用Oracle 数据库的保留字
-----------------------------------------------
数据类型 描述
VARCHAR2(size) 可变长字符串
CHAR(size) 定长字符串
NUMBER(p,s) 可变长数值
DATE 日期时间
LONG 可变长大字符串,最大可到2G
CLOB 可变长大字符串数据,最大可到4G
RAW and LONG RAW 二进制数据
BLOB 大二进制数据,最大可到4G
BFILE 存储于外部文件的二进制数据,最大可到4G
ROWID 64进制18位长度的数据,用以标识行的地址
TIMESTAMP 精确到分秒级的日期类型(9i以后提供的增强数据类型)
----------------------------------------------------------------------------------------
---数据库对象-约束
--NOT NULL (非空约束)
--UNIQUE (唯一性约束)
建表时:CONSTRAINT emp_email_uk UNIQUE(email)
--PRIMARY KEY (主键约束)
建表时:CONSTRAINT dept_id_pk PRIMARY KEY(department_id));
--FOREIGN KEY (外键约束)
建表时:CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id)
外键约束类型:
? REFERENCES: 表示列中的值必须在父表中存在
? ON DELETE CASCADE: 当父表记录删除的时候自动删除子表中的相应记录.
? ON DELETE SET NULL: 当父表记录删除的时候自动把子表中相应记录的值设为NULL
--CHECK (自定义约束)
--单独创建约束
ALTER TABLE tablename ADD CONSTRAINT constraintname constrainttype (column1,…);
--删除约束
1、ALTER TABLE employees DROP CONSTRAINT emp_manager_fk;
2、ALTER TABLE departments DROP PRIMARY KEY CASCADE;
--失效/生效约束
ALTER TABLE employees DISABLE(ENABLE) CONSTRAINT emp_emp_id_pk CASCADE;
--查看系统中的约束(user_constraints)
SELECT constraint_name, constraint_type,
search_condition
FROM user_constraints
WHERE table_name = 'EMPLOYEES';
---数据库对象-视图
--创建
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
CREATE VIEW empvu80
AS SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
--删除
DROP VIEW empvu80;
--TOP-N 查询
SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;
---数据库对象-序列、索引、同义词
--序列
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
从序列取值: CURRVAL 取当前值, NEXTVAL取下一个值
--索引
作用:加快查询
适合创建索引:查询条件中使用到这个列(或者这个列于其他列的组合),
且这个列(或者与其他列的组合)上的数字范围跨度很大
不适合创建索引:被查询的表本身就很小,即是是全表扫描也非常快; 或者基于这张表的查询,
大多数情况下需要获取的数据量都超过了总量的4%;或者这张表需要频繁的
被更新,建立索引的话会引起索引的频繁更新,从而反而降低数据库的整体效率。
CREATE INDEX emp_last_name_idx ON employees(last_name);
--同义词
作用:简化写法
CREATE SYNONYM Table1 for B.Table1
发表评论
-
plsql一些补充
2012-07-05 14:33 825704 一些补充 1、存储过程的参数 in:输入参数, ... -
plsql包、触发器和大对象操作
2012-07-05 14:32 1847703 ------------------------- ... -
plsql存储过程、函数
2012-07-05 14:30 6099629 ------------------------- ... -
sql trace与执行计划
2012-07-04 17:32 1893627 ----执行计划 oracle在执行一个SQL之前 ... -
plsql高级操作
2012-07-04 17:31 1266627 ---group by 子句的增强 --roll ... -
plsql权限、数据连接和集合操作
2012-07-04 17:30 1355627 ---控制用户权限 Oracle的权限主要包括角色 ... -
plsql简单操作
2012-07-04 16:59 2905626 1、pl/sql --NULL表示不可用、未赋值、不 ... -
oracle与jdbc的结合
2012-06-13 22:17 1246import java.sql.Connectio ... -
oracle 触发器、视图、自定义类型和数组
2012-06-13 22:11 31621:视图(view) 视图的作用: A:控制数据访问 ... -
oracle 存储过程和函数、程序包
2012-06-13 22:07 15391:存储过程 什么是存 ... -
oracle 游标管理
2012-06-13 22:04 876游标: 游标:逐行处理查询结果,以编程的方式访问数据。 游 ... -
oracle pl/sql编程
2012-06-13 22:01 9741:什么是PL/SQL 编程式的SQL语句 2:PL/SQ ... -
oracle单表查询与多表查询
2012-06-11 19:21 6142一、单表查询 1 基本查询 查询格式: ... -
oracle DDL、DML与TCL
2012-06-11 19:07 1439一、DDL 1、建表 建表语 ... -
oracle基础
2012-06-10 12:40 9671 oracle数据库基础 Oracle数据库简介 ...
相关推荐
使用PLSQL从数据库中读取BLOB对象
PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能,
例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...
oracle数据库里plsql游标、集合及对象的简单使用,适合初学者查看
pljson:PLJSON是用PLSQL编写的通用JSON对象。 用户使用PLSQL对象语法,实例化一个JSON对象,然后添加成员,数组和其他JSON对象。 此对象类型可以将JSON数据持久存储在Oracle中
PL/SQL Developer 是一款集成开发环境,用于开发、测试、调试和优化 ... PL/SQL Developer 的功能包括上下文相关帮助和数据库对象描述、语法加亮、数据查询和编辑、图形浏览器等,这些功能使开发人员的工作更为轻松。
• 使用 SQL*Plus 或另外的工具在你的数据库里查看或修改其它对象和数据。 这些任务 - 编辑、编译、纠正、测试、调试、优化和查询 - 在不离开 PL/SQL Developer IDE 的情况下都能被完成。此外,PL/SQL Developer 还...
例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...
• 使用 SQL*Plus 或其他工具在你的数据库中查看或修改其他对象和数据。 这些任务——编辑、编译、纠正、测试、调试、优化和查询——都可以在不离开 PL/SQL Developer IDE 的情况下被完成。此外,PL/SQL Developer ...
• 使用 SQL*Plus 或其他工具在你的数据库中查看或修改其他对象和数据。 这些任务——编辑、编译、纠正、测试、调试、优化和查询——都可以在不离开 PL/SQL Developer IDE 的情况下被完成。此外,PL/SQL Developer ...
PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型 . PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好...
4.6 包声明和 JAVA 会话声明 ........23 4.7 查看结果集 .......24 4.8 查看 DBMS_OUTPUT ...24 4.9 查看 HTP 输出 ....24 4.10 调试 .24 4.11 跟踪运行 .........28 4.12 回归测试 .........29 5. 优化...30 5.1 ...
8. 创建与修改非 PL/SQL 对象............................................................................................................51 8.1 表定义编辑器.................................................
• 使用 SQL*Plus 或其他工具在你的数据库中查看或修改其他对象和数据。 这些任务——编辑、编译、纠正、测试、调试、优化和查询——都可以在不离开 PL/SQL Developer IDE 的情况下被完成。此外,PL/SQL Developer ...
例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...
编辑器具有语法加强、SQL 和PL/SQL 帮助、对象描述、代码助手、编辑器提示、重新构建、PL/SQL完善、代码内容、代码层次、代码层叠、超链接导航、 宏程序库和其他先进的功能, Unicode 兼容编辑器可以满足用户最苛刻的...
8. 创建与修改非 PL/SQL 对象............................................................................................................51 8.1 表定义编辑器.................................................
8. 创建与修改非 PL/SQL 对象............................................................................................................51 8.1 表定义编辑器.................................................
PL/SQL Developer 是一款集成开发环境,用于开发、测试、调试和优化 ... PL/SQL Developer 的功能包括上下文相关帮助和数据库对象描述、语法加亮、数据查询和编辑、图形浏览器等,这些功能使开发人员的工作更为轻松。