上海网站制作哪家奿,河北建设工程信息网官方网站,商田科技网站,小程序api是什么意思执行计划中牢记几句话:-- 尽量避免是*代替所有列,编写查询语句时使用具体列名代替*,可以防止全表扫描-- 尽可能少的使用like关键字进行模糊查询-- 建立适当的索引可以提高查询效率十三. 执行计划--通过PL/SQL Developer查看查询的1 执行计划是一条查询语句在Oracle中的执行过程…执行计划中牢记几句话:-- 尽量避免是*代替所有列,编写查询语句时使用具体列名代替*,可以防止全表扫描-- 尽可能少的使用like关键字进行模糊查询-- 建立适当的索引可以提高查询效率十三. 执行计划--通过PL/SQL Developer查看查询的1 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述.2 配置执行计划需要显示的项3 执行计划的常用列字段解释基数CardinalityOracle 估计的当前操作的返回结果集行数字节Bytes执行该步骤后返回的字节数耗费COST、CPU 耗费Oracle 估计的该步骤的执行成本用于说明 SQL 执行的代价理论上越小越好该值可能与实际有出入时间TimeOracle 估计的当前操作所需的时间4 使用执行计划通过工具启动执行计划。选中需要查看执行计划的查询语句在工具栏中选择Tools---Explain Plan或者是选择需要查看执行计划的查询语句按 F5。5 查看执行计划5.1执行顺序缩进最多的最先执行缩进相同时最上面的最先执行。5.2表访问的几种常见方式非全部 (1) TABLE ACCESS FULL全表扫描: --建议数据小的表使用扫描所有表,并检查每一行是否满足where限制条件 (2) TABLE ACCESS BY INDEX ROWID通过 ROWID 的表存取(****注意:rowid在这里也是伪列(和rownum一样) ,是由 Oracle 自动加在表中每行最后的一列伪列,是在该行生命周期内不会发生改变的列.)行的 ROWID 指出了该行所在的数据文件、数据块以及行在该块中的位置所以通过ROWID 可以快速定位到目标数据上这也是 Oracle 中存取单行数据最快的方法 (3) TABLE ACCESS BY INDEX SCAN索引扫描在索引块中既存储每个索引的键值也存储具有该键值的行的 ROWID索引扫描分为两步:1 扫描索引得到对应的 ROWID。2 通过 ROWID 定位到具体的行读取数据。索引扫描常用五种类型:INDEX UNIQUE SCAN索引唯一扫描针对唯一性索引UNIQUE INDEX的扫描每次至多只返回一条记录表中某字段存在 UNIQUE、PRIMARY KEY 约束时Oracle 常实现唯一性扫描INDEX RANGE SCAN索引范围扫描使用一个索引存取多行数据发生索引范围扫描的三种情况1 在唯一索引列上使用了范围操作符如 between2 在组合索引上只使用部分列进行查询查询时必须包含前导列否则会走全表扫描3 对非唯一索引列上进行的任何查询INDEX FULL SCAN索引全扫描进行全索引扫描时查询出的数据都必须从索引中可以直接得到INDEX FAST FULL SCAN索引快速扫描扫描索引中的所有的数据块与 INDEX FULL SCAN 类似但是一个显著的区别是它不对查询出的数据进行排序即数据不是以排序顺序被返回INDEX SKIP SCAN索引跳跃扫描表有一个复合索引且在查询时有除了前导列索引中第一列外的其他列作为条件6 Oracle的优化器Oracle 的优化器种类RBORule-Based Optimization 基于规则的优化器 --已经被抛弃,过时了CBOCost-Based Optimization 基于代价的优化器CBO比RBO更加合理可靠,是通过计算各种可能的执行计划的“代价”即 COST从中选用 COST 最低的执行方案作为实际运行方案7 执行计划的使用7.1单表中使用7.1.1分析查询表中的所有数据7.1.1.1 示例查询 employees 表中的所有数据7.1.2分析主键作为条件的查询7.1.2.1 示例查询 employees 表中 employees_id 为 100 的雇员7.1.3分析非主键列作为查询条件7.1.3.1 示例查询雇员名字为 Tarloy 的雇员7.1.4分析 like 条件7.1.4.1 示例查询雇员名字中含有 a 的雇员7.1.5分析非唯一性索引列作为条件的查询7.1.5.1 示例一将 last_name 创建索引create index emp_name on employees(last_name);7.1.5.2 示例二查询雇员名字为 Taylor 的雇员。7.1.6分析非唯一性索引中、、 、条件7.1.6.1 示例一对雇员薪水列做、、、条件判断。 7.1.6.2 示例二对薪水创建索引使用薪水列做、、、条件判断。7.2多表7.2.1内连接7.2.1.1 示例一使用等值连接查询所有部门以及所有部门下的雇员。7.2.1.2 示例二使用子查询查询所有部门以及所有部门下的雇员(代价值为3,性能提升一般)7.2.2外连接7.2.2.1 示例一查询所有雇员与雇员的部门名称包含那些没有部门的雇员。7.2.2.2 示例二查询所有部门以及雇员包含哪些没有雇员的部门。十四、 Oracle 的数据导入与导出做数据备份--导出做数据恢复时--导入数据迁移--导入导出1 数据库导入导出需要注意1).目标数据库要与源数据库有着名称相同的表空间。2).目标数据在进行导入时用户名尽量相同(这样保证用户的权限级别相同)。3).目标数据库每次在进行数据导入前应做好数据备份。4).目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表。5).确定目标数据库磁盘空间是否足够容纳新数据是否需要扩充表空间。6).导入导出时注意字符集是否相同一般 Oracle 数据库的字符集只有一个并且固定一般不改变。7).确定操作者的账号权限。2 导出数据格式:Dmp 格式.dmp 是二进制文件可跨平台还能包含权限效率好。Sql 格式.sql 格式的文件可以文本编辑器查看,通用性比较好效率不如第一种适合小数据量导入导出。尤其注意的是表中不能有大字段 blob,clob,long如果有会报错。Pde 格式.pde 格式的文件.pde 为 PL/SQL Developer 自有的文件格式只能用 PL/SQLDeveloper 工具导入导出不能用文本编辑器查看。3 传统方式 exp(导出)和(imp)导入3.1命令执行方式该命令需要在操作系统的命令窗口执行而非 sql/plus3.2命令格式exp|imp 用 户 名 / 密 码 连 接 地 址 : 端 口 / 服 务 名 file 路 径 / 文 件 名 .dmp fully|tabels(tablename,tablename...)|owner(username1,username2,username3)exp:导出命令导出时必写。imp:导入命令导入时必写,每次操作二者只能选择一个执行。username:导出数据的用户名必写;password:导出数据的密码必写;:地址符号必写;SERVICENAME:Oracle 的服务名必写;---比如:orcl就是服务名1521:端口号1521 是默认的可以不写,非默认要写;file文件名.dmp : 文件存放路径地址必写;fully :表示全库导出。可以不写则默认为 no,则只导出用户下的对象;tables:表示只导出哪些表;owner:导出该用户下对象;full|tables|owner:只能使用一种(不能同时出现 );3.3导出数据exp 用户名/密码oracle 的连接地址:端口/需要导出的服务名 file路径/文件名.dmp3.3.1示例将 HR 用户下的对象导出。exp hr/oraclelocalhost:1521/orcl filed:/1.dmp3.4导入数据imp 用户名/密码oracle 的连接地址:端口/需要导出的服务名 file路径/文件名.dmp3.4.1示例将导出的 dmp 文件导入到数据库中。imp hr/oraclelocalhost:1521/orcl filed:/1.dmp4 使用 PL/SQL Developer 实现数据的导入与导出4.1导出与导入表对象有 DMP, SQL, PDE 三种格式,他们的导出导入方法都是大同小异总体方法如下:1. 在PL/SQLDeveloper 的tools 工具栏中,有两个选项 Export Tables/Inport Tables导出/导入表2. 点击之后会出现所有表格,选择自己想要导出的表格,然后在下面栏中会有Oracle Eeport(dmp格式)和SQL Inserts(sql格式),选择之后3. 再在下 面的 Output file /Input选择自己想要导出的位置,再点击旁边 Export/Inport即可4.2数据中其他对象的导入与导出---视图,索引,序列注意: 当使用Export User Objects 导出到结构都是SQL结构多种不同类型的对象时,表中导出的结果只是表结构,并不会包含任何数据.要想导出包含表数据,那就只能使用Export导出导入还是使用Inport 中的SQL insert 方法 在用户中删除导出的内容之后,也可直接将导出的sql内容用笔记本打开之后赋值,再在新打开的command Windows 中粘贴运行,也同样可以导入到处的内容第三章 MySQL 数据库的使用一、 MySQL 简介1 什么是 MySQLMySQL 是一个关系型数据库管理系统关系型数据库将数据保存在不同的表中而不是将所有数据放在一个大仓库内这样就增加了速度并提高了灵活性。2 MySQL 特点MySQL 是开源的所以你不需要支付额外的费用。MySQL 支持大型系统的数据库。可以处理拥有上千万条记录的大型数据库。MySQL 使用标准的 SQL 数据语言形式。二、 MySQL 的安装与卸载安装步骤:license Agreement--Next--Sever Only Next--Excute--Tnstallation Next--Product Configuration Next--Type and Networking Next--设密 码 Next--Windows Service Next--Plugins and Extensions Next--Apply Server Configuration Execute--Finish 卸载步骤1停止 MySQL 服务2卸载 mysql server3MySQL 安装目录4删除注册表中信息5删除 MySQL 数据库目录6删除服务中的 MySQL7重启系统三、 MySQL 的客户端工具1 MySQL 自带的客户端端工具2 第三方客户端工具 Navicat四、 MySQL 与 Oracle 的区别1 实例区别MySQL 是轻量型数据库开源免费。Oracle 是收费的而且价格非常高。MySQL 一个实例可以操作多个库而 Oracle 一个实例只能对应一个库。MySQL 安装完后 300M 而 Oracle 有 3G 左右。2 操作区别主键 MySQL 一般使用自动增长类型而 Oracle 则需要使用序列对象。单引号的处理 MySQL 里可以用双引号包起字符串ORACLE 里只可以用单引号包起字符串。分页的 SQL 语句 MYSQL 用 LIMIT而 Oracle 需要使用内建视图和 rownum 伪列。事务处理MySQL 默认是自动提交而 Oracle 默认不自动提交需要用户 CTL 语言进行事务提交。这里个人见解: MySQL和Oracle对于数据物理隔离机制上的区别Oracle装好后会有一个实例和一个库 库中可以创建多个不同的表空间,每个表空间对应一个数据文件.可以创建不同的用户分配不同的表空间,再通过表空间实现物理隔离.所以在Oracle中有一个库就够了.MySQL是一个实例可以对对应多个不同的库 在MySQL中没有表空间这个概念我们可以创建不同的库,每个库用不同的用户来操作.库和库之间放的是不同的数据文件,所以MySQL是通过不同的库之间实现物理隔离.所以MySQL要先创建库 五 操作 MySQL1 创建数据库:CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码;1.1 示例创建一个 test 的数据库并查看该数据库以及该数据库的编码。创建数据库create database test default character set utf8;查看数据库show databases;查看数据库编码select schema_name,default_character_set_name from information_schema.schemata where schema_name test;删除数据库:Drop database 数据库名称2 选择数据库需要在哪个库中创建表需要先选择该数据库。Use 需要选择的库的名称。2.1示例一创建一个名称为 zzsxt 的数据库编码为 utf8。create database zzsxt default character set utf8;2.2示例二选择该数据库use bjsxt;3 MySQL 中的数据类型1)数值类型 数值类型中的长度 m 是指显示长度并不表示存储长度只有字段指定 zerofill 时有用例如int(3)如果实际值是 2如果列指定了 zerofill查询结果就是 002左边用 0 来填充 2)浮点型3)字符串类型 4)日期类型二进制数据(BLOB)1)BLOB 和 TEXT 存储方式不同TEXT 以文本方式存储英文存储区分大小写而 Blob是以二进制方式存储不分大小写。2)BLOB 存储的数据只能整体读出。3)TEXT 可以指定字符集BLOB 不用指定字符集。4 创建表与删除表4.1创建表4.1.1通过 DDL 语句创建表4.1.1.1 示例创建一个 employees 表包含雇员 ID雇员名字雇员薪水。create table employees(employee_id int,last_name varchar(30),salary float(8,2));查看已创建的表Show tables;5 修改表5.1使用 DDL 语句修改表名ALTER TABLE 旧表名 RENAME 新表名5.1.1示例一创建一个 employees 表包含雇员 ID雇员名字雇员薪水。create table employees(employee_id int,last_name varchar(30),salary float(8,2));5.1.2示例二将 employees 表名修改为 emp。alter table employees rename emp;5.2使用 DDL 修改列名ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型ALTER TABLE 旧表名 RENAME 新表名5.2.1示例将 emp 表中的 last_name 修改为 namealter table emp change column last_name name varchar(30);5.3使用 DDL 语句修改列类型ALTER TABLE 表名 MODIFY 列名 新类型5.3.1示例将 emp 表中的 name 的长度指定为 40alter table emp modify name varchar(40);5.4使用 DDL 语句添加列ALTER TABLE 表名 ADD COLUMN 新列名 类型5.4.1示例在 emp 表中添加一个新的列为 commission_pctalter table emp add column commission_pct float(4,2);5.5使用 DDL 语句删除列ALTER TABLE 表名 DROP COLUMN 列名5.5.1示例删除 emp 表中的 commission_pctalter table emp drop column commission_pct;