`

plsql查询和数据对象

阅读更多


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从数据库中读取BLOB对象

    使用PLSQL从数据库中读取BLOB对象

    PLSQL Developer

    PLSQL Developer是Oracle数据库开发工具,很牛也很好用,PLSQL Developer功能很强大,可以做为集成调试器,有SQL窗口,命令窗口,对象浏览器和性能优化等功能,

    PLSQL Developer 10.0.4.1708〖附中文补丁和注册机〗

    例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...

    PLSQLDeveloper下载

    它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的...

    plsql游标、集合简单使用

    oracle数据库里plsql游标、集合及对象的简单使用,适合初学者查看

    pljson:PLJSON是用PLSQL编写的通用JSON对象。 用户使用PLSQL对象语法,实例化一个JSON对象,然后添加成员,数组和其他JSON对象。 此对象类型可以将JSON数据持久存储在Oracle中

    pljson:PLJSON是用PLSQL编写的通用JSON对象。 用户使用PLSQL对象语法,实例化一个JSON对象,然后添加成员,数组和其他JSON对象。 此对象类型可以将JSON数据持久存储在Oracle中

    PLSQL Developer 15.0.0.2050

    PL/SQL Developer 是一款集成开发环境,用于开发、测试、调试和优化 ... PL/SQL Developer 的功能包括上下文相关帮助和数据库对象描述、语法加亮、数据查询和编辑、图形浏览器等,这些功能使开发人员的工作更为轻松。

    PLSQL Developer 使用指南

    • 使用 SQL*Plus 或另外的工具在你的数据库里查看或修改其它对象和数据。 这些任务 - 编辑、编译、纠正、测试、调试、优化和查询 - 在不离开 PL/SQL Developer IDE 的情况下都能被完成。此外,PL/SQL Developer 还...

    PLSQL Developer 10.0.5.1710〖附中文补丁和注册机〗

    例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...

    PLSQL804比以前的版本又好一些

    • 使用 SQL*Plus 或其他工具在你的数据库中查看或修改其他对象和数据。 这些任务——编辑、编译、纠正、测试、调试、优化和查询——都可以在不离开 PL/SQL Developer IDE 的情况下被完成。此外,PL/SQL Developer ...

    PLSQL803破解汉化补丁

    • 使用 SQL*Plus 或其他工具在你的数据库中查看或修改其他对象和数据。 这些任务——编辑、编译、纠正、测试、调试、优化和查询——都可以在不离开 PL/SQL Developer IDE 的情况下被完成。此外,PL/SQL Developer ...

    plsql免安装

    PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型 . PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好...

    PLSQL Developer用户指南

    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 ...

    plsql developer 中文使用手册 最新 7.0 plsql developer 使用手册(中文)

    8. 创建与修改非 PL/SQL 对象............................................................................................................51 8.1 表定义编辑器.................................................

    plsqldev803 1/2

    • 使用 SQL*Plus 或其他工具在你的数据库中查看或修改其他对象和数据。 这些任务——编辑、编译、纠正、测试、调试、优化和查询——都可以在不离开 PL/SQL Developer IDE 的情况下被完成。此外,PL/SQL Developer ...

    PLSQL Developer(免安装、汉化版,很好用的) 8.0.3.1510.rar

    例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...

    PLSQLDeveloper_解压版

    编辑器具有语法加强、SQL 和PL/SQL 帮助、对象描述、代码助手、编辑器提示、重新构建、PL/SQL完善、代码内容、代码层次、代码层叠、超链接导航、 宏程序库和其他先进的功能, Unicode 兼容编辑器可以满足用户最苛刻的...

    plsql中文使用说明

    8. 创建与修改非 PL/SQL 对象............................................................................................................51 8.1 表定义编辑器.................................................

    PLSQL中文手册(相当全面)

    8. 创建与修改非 PL/SQL 对象............................................................................................................51 8.1 表定义编辑器.................................................

    PLSQLDeveloper14.rar

    PL/SQL Developer 是一款集成开发环境,用于开发、测试、调试和优化 ... PL/SQL Developer 的功能包括上下文相关帮助和数据库对象描述、语法加亮、数据查询和编辑、图形浏览器等,这些功能使开发人员的工作更为轻松。

Global site tag (gtag.js) - Google Analytics