
数据库技术
文章平均质量分 61
zdp072
Jim的IT专栏
展开
-
关于Oracle修改IP地址引起的问题
分析:1. 安装Oracle的时候,Oracle默认会在F:\oracle\product\10.2.0\db_1下面创建一个名为“当前IP_orcl”的目录,该目录存储的是oracle实例名为orcl的数据库的配置等信息2. 同时Oracle默认在F:\oracle\product\10.2.0\db_1\oc4j\j2ee目录下创建一个名为“OC4J_DBConsole_当前IP_or原创 2011-12-12 20:18:25 · 1136 阅读 · 0 评论 -
powerDesigner生成Html及Word
1:点击Reports2:点击New Reports3:定义名字,选择简体中文,点击OK4:选择左侧Table,并将它移动到右侧Section_1的下方5:打开Table6:只保留下面选项,其它都删除7:点击右侧生成Htm 或 RTF8:选择保存9:选择确定10:查看表11:原创 2016-07-13 19:30:56 · 3510 阅读 · 0 评论 -
powerDesigner逆向工程导出oracle表结构
今天刚安装的powerDesigner12.5 开始学习,目前有一个项目已经基本完成,想使用PD把数据库反向工程一下,查了一下网络有点乱,不过根据网络上帖子自己也摸索出来了。在这里记录一下,1,增加数据源, Database->Configure Connections ->新建数据源,根据提示一步一步走(如图) 填写数据库的账号,和数据名字原创 2016-07-13 18:11:50 · 4345 阅读 · 0 评论 -
MySQL的varchar长度问题
mysql中varchar(50)最多能存多少个汉字?首先要确定mysql版本4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节) 5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个其实最好的办法是在自己数据库中建个表试试可以放多少汉字,现在my原创 2016-06-15 12:25:29 · 1011 阅读 · 0 评论 -
数据库优化
1. 分表通过对记录ID取模或时间维度的规则进行分表2. 分区3. 中间表4. 查询缓存sql语句作为key,结果作为value的缓存方式,当数据表发生改变时相应cache就会失效适用场合:对数据不经常更新,查询方式比较固定5. 建索引对于复杂的sql,对大表进行查询时,对涉及到的查询条件字段可采用建索引的方式,以提高查询速度。原创 2016-04-24 21:44:35 · 781 阅读 · 0 评论 -
oracle事务的隔离级别和锁
1. 事务的ACID特性:(1) 原子性 Atomicity: 事务所包含的数据库操作要么都做,要么都不做(2) 一致性 Consistency: 数据库中只包含执行成功的结果,每个用户看到的数据是一致的(3) 隔离性 Isolation: 事务对数据的操作不能够受到其他事务的影响(4) 持续性 Durability: 数据库事务一旦提交,其对数据库中数据的改变应该是永久性的原创 2016-04-08 23:29:18 · 13612 阅读 · 0 评论 -
浅谈oracle数据库索引
[什么是索引]在关系型数据库中,索引是一种和表有关的数据结构,它可以使查询的sql语句执行的更快。其实索引就如同图书的目录,我们可以根据目录中的页码快速的找到所需的内容。编写一本书,只有章节内容定好之后再设置目录;数据库索引也是一样,只有先插入好数据,再建立索引。[如何创建索引]创建表:create table person (id int, sex char(1), na原创 2015-03-11 20:39:28 · 9290 阅读 · 0 评论 -
plsql客户端乱码的解决方案
1. 查询数据库服务端的字符集select * from nls_database_parameters 可以分别查出字符集各组成部分的值或用 select userenv('language') from dual 可以整体查出也可以用 select * from nls_instance_parameters 查看你客户端的字符集客户端的字符集要求与服务器一致,才能正确显原创 2016-07-05 14:25:21 · 10862 阅读 · 0 评论 -
关于PL/SQL Developer中文乱码的解决
1.查看数据库服务器端编码: select * from v$nls_parameters;2.解决办法:重新设置本地客户端的编码: 进入 我的电脑-->属性-->高级-->环境变量,添加2项: 1.LANG=zh_CN.GBK 2.NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"3.重启plsql developer,查询原创 2016-10-31 18:36:15 · 669 阅读 · 0 评论 -
记录两个工作中用到的存储过程
使用存储过程批量删除数据按天删除目标表中xxx_no重复的数据, 只保留最近的一条。declare pragma autonomous_transaction; n_delete number := 0;begin while 1 = 1 loop EXECUTE IMMEDIATE 'delete from xxx_log t where t.rowid not in ...原创 2019-03-29 10:53:50 · 584 阅读 · 0 评论 -
mysql5.6性能优化
数据库性能参数使用show status语句查看mysql数据库的性能参数 show status like ‘value’ 常见的参数: slow_queries 慢查询次数查询优化EXPLAIN在MySQL中可以使用EXPLAIN查看SQL执行计划 用法:EXPLAIN SELECT * FROM tb_itemidSELECT识别符。这是SELECT查询序列号。这个不重要。selec原创 2017-10-02 10:44:18 · 784 阅读 · 0 评论 -
关于索引的使用技巧
(1)负向条件查询不能使用索引select * from order where status!=0 and stauts!=1 not in/not exists都不是好习惯 可以优化为in查询: select * from order where status in(2,3)(2)前导模糊查询不能使用索引select * from order where desc like ‘%XX’转载 2017-08-06 17:55:30 · 902 阅读 · 0 评论 -
oracle中按时间统计次数的语句
按天统计SELECT TO_CHAR(T.create_time, 'YYYY-MM-DD') TIME, COUNT(*) COUNT FROM test T GROUP BY TO_CHAR(T.create_time, 'YYYY-MM-DD') ORDER BY TO_CHAR(T.create_time, 'YYYY-MM-DD') ASC NULLS LAST按周统计SELECT转载 2017-08-03 08:52:06 · 4910 阅读 · 0 评论 -
Oracle指定某些值排最前或最后
项目中有这样一个需求:有个字段(ID)值为 1,2,3,4,5,现在要把这个字段第四个‘4’排到最后于是可以这样:select * from testorder by decode(id,4,100,id)或者select * from testorder by replace(id,4,100)当然不止这两种了,语句中的‘100’保证是你这些值中最大或最小值就行,排序根据需要升序降序转载 2017-08-08 17:51:37 · 7256 阅读 · 1 评论 -
windows安装oracle instantclient和plsql developer
一、下载Oracle官方精简绿色版http://www.oracle.com/technetwork/topics/winsoft-085727.html 特别注意,要下载32位的,因为PL/SQL Developer目前只有32位的版本二、安装配置instantclient下载后,解压到D:\oracle\instantclient_11_2(特别注意,此目录只能是字母数字下划线的组合,不然可能转载 2017-08-07 20:36:06 · 2217 阅读 · 0 评论 -
oracle语句中把一列的值合并为一个值
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2017-07-31 16:34:24 · 1011 阅读 · 0 评论 -
RPM方式安装MySQL5.6
RPM方式安装MySQL5.6a. 检查MySQL及相关RPM包,是否安装,如果有安装,则移除(rpm –e 名称)1[root@localhost ~]# rpm -qa | grep -i mysql2mysql-libs-5.1.66-2.el6_3.x86_64原创 2017-04-23 18:55:54 · 342 阅读 · 0 评论 -
高级sql优化详解
1. 什么时候使用索引?(1) 如果检索全表,不必要建索引,因为索引会带来额外的IO操作(2) 如果检索的记录数占全部表记录的10%以下,可以考虑建索引(大 )(3) 表之间的关联字段可以考虑建索引,特别是一张大表和一张小表的关联(4) 索引是把双刃剑,在查询和DML之间寻求平衡2. 改写sql使用索引(1) 普通索引列a is not null 按逻辑改为a原创 2016-04-08 11:33:12 · 3195 阅读 · 0 评论 -
oracle 表空间和schema
[什么是schema?]schema就是数据库对象的集合为了区分各个集合,我们需要给这个集合起个名字,这个名字就是schema举例说明:访问scott用户下的emp表,通过select from emp,其实这条sql语句的完整写法为:select from scott.emp对于数据库来说,不同的用户有不同的schema,实际在使用上,schema和user完全一样,没有什么区别原创 2016-04-08 14:45:20 · 9877 阅读 · 0 评论 -
用存储过程批量更新表
最近做了一个需求,需要批量更新数据库表,但是因为涉及到的数据较多(千万条),如果直接用sql更新,估计会把pl/sql弄垮sql如下:update online_product set online_flag = '0' where status = 'ON'所以,写了一个存储过程,以备忘:declare cursor product_id_list is select p原创 2015-01-29 09:28:06 · 4708 阅读 · 3 评论 -
sql内连接、外连接和自连接查询
一. 前言:通常在项目中对表的查询都是关联多张表,多表查询就涉及到sql的内连接、外连接和自连接查询。本篇文章将简单的介绍这些sql连接的使用,希望对大家有所帮助。二. 数据准备:先准备两张表:1. 学生表:studentselect * from student;2. 教师表:teacherselect * from teacher;原创 2015-01-06 14:20:04 · 27577 阅读 · 4 评论 -
oracle树操作(select .. start with .. connect by .. prior)
oracle中的递归查询可以使用:select .. start with .. connect by .. prior下面将会讲述oracle中树形查询的常用方式,只涉及到一张表。原创 2014-11-06 13:55:18 · 1506 阅读 · 0 评论 -
oracle中with as语句的使用
一. with as 简介:with as其实就是一个子查询, 使用它可以增强sql的可读性,同时因为该查询只执行一次,并将结果存储在用户临时表空间中,可以多次引用,增强性能。原创 2014-11-06 12:52:06 · 11328 阅读 · 0 评论 -
oracle中union和union all区别与性能分析
[ 概要 ]经常写sql的同学可能会用到union和union all这两个关键词, 可能你知道使用它们可以将两个查询的结果集进行合并,那么二者有什么区别呢? 下面我们就简单的分析下.[ 比较 ]union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序;union all: 对两个结果集进行原创 2014-05-13 23:34:47 · 32984 阅读 · 2 评论 -
浅谈oracle中rowid和rownum
[ 概要 ]刚刚接触oracle的同学可能常常会被rowid和rownum这两个词弄混, 弄清楚这两个家伙对于我们写sql会有很大的帮助, 下面偶就抛砖引玉, 简单地谈谈他们之间的区别吧.[ 比较 ]rowid和rownum都是oracle中的伪列, 但他们还是存在本质区别:rowid: 是物理地址, 用于定位数据表中数据的位置, 它是唯一的且不原创 2014-05-09 14:04:22 · 3774 阅读 · 0 评论 -
如何删除数据库中的重复记录?
一、题外篇今天很悲催啊,给用户数据做datapatch的时候,每个月的数据多导入了一份,瞬间惊出一身冷汗...这可是产品环境,要是被老板知道了可就死定了,赶紧去掉重复的记录,同时写下下面的文章以备后用。二、准备篇1. 先创建一张学生表student:create table student( id varchar(10) not n原创 2014-05-09 12:11:05 · 3041 阅读 · 4 评论 -
关于oracle触发器的两个小例子
今天接到一个任务,需要修改触发器,因为好久都没有看过关于oracle触发器的东东了,所以这里通过两个简单的小例子复习下触发器,以备忘。1. 案例一需求:建立触发器,判断员工工资,如果小于0,则改为0;如果大于10000,则改为10000建表:create table emp1( e_id number primary key not null, e_no number,原创 2015-01-30 16:25:56 · 1123 阅读 · 0 评论 -
oracle的乐观锁和悲观锁
一、问题引出 ① 假设当当网上用户下单买了本书,这时数据库中有条订单号为001的订单,其中有个status字段是’有效’,表示该订单是有效的; ② 后台管理人员查询到这条001的订单,并且看到状态是有效的; ③ 用户发现下单的时候下错了,于是撤销订单,假设运行这样一条SQL: update order_table set status = ‘取消’ whe原创 2014-05-05 00:37:01 · 7086 阅读 · 0 评论 -
oracle中rank() over, dense_rank(), row_number() 的区别
假设现在有一张学生表student,学生表中有姓名、分数、课程编号,现在我需要按照课程对学生的成绩进行排序。select * from student1. rank over ()可以实现对学生排名,特点是成绩相同的两名是并列,如下1 2 2 4 52. dense_rank()和rank over()很像,但学生成绩并列后并不会空出并列所占的名次,如下1 2 2原创 2015-04-16 15:01:03 · 10492 阅读 · 0 评论 -
oracle中case when的使用
http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html1. case when表达式的两种形式:--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASEWHEN sex原创 2015-05-04 15:16:17 · 2455 阅读 · 0 评论 -
关于order by的一些用法
1. order by 中关于null的处理缺省处理:oracle在order by时认为null是最大值, 所以如果是asc升序则排在最后, desc降序则排在最前.我们可以使用nulls first或者nulls last来控制null的位置将null放在最前:select * from student order by name asc nulls first将nul原创 2015-04-16 13:47:16 · 9053 阅读 · 0 评论 -
select into 与 insert into select
一. 区别:insert into select: 用于将select出来的结果集复制到一个新表中, 它是标准的sql语句select into: 将结果保存到一个变量中, 它是plsql的赋值语句二. 例子:insert into select:insert into test select * from t_source where id = 1; co原创 2015-04-22 21:20:36 · 3180 阅读 · 1 评论 -
oracle存储过程的使用
一. 使用for循环游标:1. 定义游标(游标就是一个小集合)2. 定义游标变量3. 使用for循环游标declare -- 定义游标c_job cursor c_job is select empno, ename, job, sal from emp where job = 'MANAGER'; -- 定义游标变量c_row c_row c_j原创 2015-03-16 22:50:29 · 1346 阅读 · 0 评论 -
oralce中in和exists性能分析
在我们平常写sql的时候,in和exists这两个关键词会经常用到,所以我们有必要对它们的性能作一个分析。[in和exists性能分析] 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,即数据量T1 2) select * from T1 where T原创 2015-03-11 10:09:42 · 2504 阅读 · 0 评论 -
在oracle存储过程中创建临时表
在oracle的存储过程中,不能直接使用DDL语句,比如create、alter、drop、truncate等。那如果我们想在存储过程中建立一张临时表就只能使用动态sql语句了:create or replace procedure pro as str_sql varchar2(100);begin -- 创建临时表 str_sql := 'create global te原创 2015-03-16 21:14:29 · 34419 阅读 · 2 评论 -
oracle日期时间函数总结
经常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 例如: 财务软件或者人力资源软件需要按照每年, 每季度, 每月, 甚至每个星期来进行统计.今天闲来没事, 特意从网上整理了一些资料, 以备日后查阅. 一、常用日期数据格式1. 获取年的最后一位, 两位, 三位, 四位原创 2014-05-20 23:10:42 · 1552 阅读 · 0 评论 -
实现mysql的sequence
背景因为做oracle迁移mysql的工作,mysql并不具有sequence语法,所以需要自己想办法模拟实现一个sequence。步骤建一张表e_sys_sequence用来记录序列名称和值CREATE TABLE `e_sys_sequence` ( `sequence_name` varchar(64) NOT NULL COMMENT '序列名称' , `va...原创 2019-04-18 14:49:26 · 3612 阅读 · 0 评论