数据库(DB)
预见未来to50
不忘初心,方得始终!
展开
-
学以致用——命令行中使用Java模块化技术编译、打包、运行iKb知识库应用
这个问题随JDK版本和Eclipse版本时隐时现,让人抓狂。在学习Java核心技术(高阶)的过程中,正好学到了相关知识,现决定在CMD命令行中编译、打包、运行该程序,来解决上述问题。说明:编译、打包、运行均有两段代码,第一段适用于JDK8至JDK11,第二段适用于JDK17。也就是说,我的iKb程序目前最高可运行于JDK17中。原创 2023-02-11 00:17:57 · 953 阅读 · 0 评论 -
Mysql两种安装方式比较
Mysql有两种安装方式:方式1. 安装程序方式2. 压缩包(.zip)两种方式我都试过,总结经验如下:1. 方式1省时省力,只需到Mysql官网下载对应的installer,直接运行即可 (10分钟搞定)2. 方式2,下载zip包,解压缩,在cmd中安装Mysql服务,启动服务,遇到了一系列的技术问题。花了两个小时,还没有成功启动Mysql服务。真累!原创 2016-06-02 15:21:37 · 2180 阅读 · 0 评论 -
Mysql常用命令
和Mysql打交道也有些时日了,期间遇到过大大小小各种问题,收集到以下一些常用命令:ItemDescription安装Mysql service(.zip下载Mysql)mysqld -install查看记录select * from insterm;查看数据库状态status查找非冗余数据sele原创 2016-06-28 00:21:03 · 2345 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十四章-包-Part 1
调试经验:1. 编译包时,如果出现编译错误(PL/SQL developer中包名出现红叉),可通过以下语句查看:SELECT name,line, POSITION, text FROM user_errors WHERE NAME = 'INITTEST'ORDER BY SEQUENCE;2. 上述语句中,引号中的包名(如,INITTEST)一定要大写,原创 2016-07-22 17:58:45 · 1575 阅读 · 0 评论 -
使用命令行将Excel数据表导入Mysql中的方法小结
从Excel数据表导入Mysql,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间为了提高效率,是时候指定一个数据导入的SOP了:1.准备.txt文件 1.1 将要导入的数据(不含表头)从工作表复制、粘贴到一个新建的Excel数据表中(避免污染源数据) 1原创 2016-06-30 12:13:27 · 14892 阅读 · 0 评论 -
Mysql导入中文数据表注意事项
手头有一张含800多条数据的门店销售数据表(含中文字符),想将其导入Mysql数据库进行数据分析。然而,看似简单的问题,实际操作起来,却出现各种问题,最终花了我近3个小时才算解决,汗!好记性不如烂笔头,赶快把血泪教训写下来,免得哪一天又重蹈覆辙。1.检查Mysql安装文件夹根目录下的配置文件(my-default.ini)中是否添加了“default-character-set=utf8”这一项。UTF8兼容世界所有语言。原创 2016-06-05 01:50:24 · 1424 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 2
随书光盘中的源码没有序号,部分找不到或者有bug,调试过程中一并更正。其中,还有两个彩蛋:“双十九”乘法口诀表和“双九九”加法口诀表的输出(PL/SQL实现),以及一个附加(加薪函数的调用)代码如下:--代码2.9 使用嵌套块更新和插入部门表/*说明:1.随书源代码中v_deptno前缺少&符号,导致异常处理模块报错“ORA-01400: 无法将 NULL 插入”。本人调试了原创 2016-07-13 16:20:55 · 3419 阅读 · 0 评论 -
源码-印度式乘法口诀表(“双十九”)的PL/SQL实现
感觉所谓的写程序,更多的时候是“改”程序。不过,好的程序应该具有很好的扩展性,改改参数、常数、运算符什么的,就可以产生新的功能。代码如下:--使用FOR循环打印“双十九”乘法口诀表(印度乘法口诀表)DECLARE v_Number1 NUMBER(3); --外层循环变量 v_Number2 NUMBER(3); --内存循环变量BEGIN FOR v_原创 2016-07-13 16:44:41 · 1157 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第三章-变量和类型-Part 1
代码如下:--第三章开始--代码3.1 变量定义示例DECLARE v_empname VARCHAR2 (20); --定义员工名称变量 v_deptname VARCHAR2 (20); --定义部门名称变量 v_hiredate DATE NOT NULL := SYSDATE; --定义入职日期变量 v_empno原创 2016-07-14 12:10:40 · 738 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十四章-包-Part 2
作为PL/SQL的进阶内容,本章(包)的干货还是挺多的,如,纯度级别、管道、作业、报警等,基本都是初次接触,感觉Oracle的功能的确强大。在调试管道相关的示例时,由于教材中的说明不够详细、代码中存在错误、疏漏,我只能边调试边在万能的网上查找一些自己解决不掉的问题,最终,耗时1个多小时后,调试成功。--代码14.11 定义包中函数的纯度级别CREATE OR REPLACE PA原创 2016-07-25 16:51:10 · 755 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十五章-触发器-Part 1
学习PL/SQL到现在,发现触发器还是最好玩的,让我大开眼界。原来使用触发器可以实现很多功能:日志、审计记录、逻辑校验、数据备份,都是很重要的功能。需要搞清楚的是,在实际的生产环境中,上述功能是否真的是通过触发器来实现的?--第15章开始--代码15.1 触发器定义示例CREATE OR REPLACE TRIGGER t_verifysalary BEFORE UPDATE原创 2016-07-26 11:10:00 · 1030 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十五章-触发器-Part 2
触发器的功能主要有:1. 完成表的变更校验(当表的数据发生增、删、改时,提供验证逻辑)2. 自动数据库维护3.控制数据库管理活动通过调试代码,可以增强对各知识点的理解。--代码15.14 在触发器中使用自治事务CREATE OR REPLACE TRIGGER t_emp_comm BEFORE UPDATE ON emp --触发器作用的表对象以及触发的条件和原创 2016-07-26 14:26:28 · 866 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十六章-动态SQL语句-Part 1
学到后面几章,发现实用性大大提高。心得:1. 代码尽量放到集成开发环境(PL/SQL)中查看,效率要比在书本上看高多了。2. 卖油翁言“我亦无他,唯手熟尔”,软件开发不是纸上谈兵,必须在开发环境中不断实践才行!--第16章开始--代码16.1 动态SQL语句使用示例 CREATE OR REPLACE FUNCTION get_tablecount (table_name I原创 2016-07-26 15:41:21 · 1028 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 1
随书附带的源码没有序号,部分有bug,调试过程中一并更正。--代码2.1 使用书序结构计算员工薪资DECLARE v_sal1 NUMBER; v_sal2 NUMBER; v_sumsal NUMBER;BEGIN SELECT sal INTO v_sal1 FROM emp WHERE empno = &empno1; SELECT原创 2016-07-13 12:21:50 · 3329 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十六章-动态SQL语句-Part 2
--代码16.10 定义并打开动态SQL语句游标DECLARE TYPE emp_cur_type IS REF CURSOR; --定义游标类型 emp_cur emp_cur_type; --定义游标变量 v_deptno NUMBER(4) := '&deptno'; --定义部门编号绑定变量 v_empno NU原创 2016-07-26 16:22:25 · 850 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十七章-面向对象编程-Part 1
原来PL/SQL也支持面向对象编程,有了Java基础,这章不难理解。有个问题:对象定义真不支持布尔类型? 我的Java程序中布尔型可是很常用的啊。不过肯定有其他的替代解决方案吧--第17章开始--代码17.1 定义employee_obj对象类型规范--定义对象类型规范employee_objCREATE OR REPLACE TYPE employee_obj AS OBJECT原创 2016-07-26 17:13:49 · 1399 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 3
接上篇。代码如下:--代码2.16 为emp表定义触发器代码drop table raisesalarylog;CREATE TABLE Scott.RaiseSalaryLog( --员工编号 EmpNo NUMBER(10) NOT NULL PRIMARY KEY, --加薪日期 RaisedDate DATE,原创 2016-07-14 10:43:23 · 471 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第三章-变量和类型-Part 3
~接上篇。代码如下:--代码3.21 子类型定义使用示例DECLARE TYPE empnamelist IS TABLE OF VARCHAR2 (20); --定义表类型 --定义表类型的子类型 SUBTYPE namelist IS empnamelist; --定义员工记录 TYPE emprec IS RECORD ( empno原创 2016-07-15 13:37:10 · 655 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第四章-PL/SQL控制语句
控制语句对任何一门语言、任何一个程序员而言,都是基础中的基础。学了PL/SQL,才体会到Java语法的简洁,简直不是一个时代的东西;当然,他们的定位本来就不一样,不能以己之长比之他人之短。--第4章开始--代码4.1 最简单的IF语句使用示例DECLARE v_count NUMBER(10) := 0; --定义计数器变量 v_empno NUMBER(4) := 7原创 2016-07-15 14:37:17 · 3979 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十七章-面向对象编程-Part 2
--代码17.14 定义地址对象类型--定义地址对象类型规范CREATE OR REPLACE TYPE address_type AS OBJECT(street_addr1 VARCHAR2(25), --街道地址1 street_addr2 VARCHAR2(25), --街道地址2 city VARCHAR2(30), --城市原创 2016-07-27 14:05:28 · 1135 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十八章-PL/SQL性能优化建议-Part 1
数据库性能调优,在所参与的项目中,这个词向来都是很底层(高大上)的概念,如今,咱也接触到了。嘿嘿。--第18章 PL/SQL性能优化建议--代码18.1 使用Nocopy提升性能DECLARE TYPE test_tbl_type IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER; --原创 2016-07-27 14:46:19 · 645 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十八章-PL/SQL性能优化建议-Part 2
--18.1.3 使用DBMS_Trace包--配置与使用dbms_trace--使用DBA权限,执行tracetab.sqlconn /as sysdba@?/rdbms/admin/tracetab.sql--创建同义词并分配可访问的权限CREATE OR REPLACE PUBLIC SYNONYM plsql_trace_runs FOR SYS.plsql_trace_ru原创 2016-07-27 16:23:37 · 574 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第五章-管理数据表(创建数据表)(Create table)
--第5章开始--代码5.1 使用DDL语句创建数据库CREATE TABLE company_emp( empno NUMBER(4) PRIMARY KEY NOT NULL, --员工工号 ename VARCHAR2(10 BYTE), --员工名称 job VARCHAR2(9 BYTE),原创 2016-07-18 14:23:59 · 765 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第六章-查询数据表-Part 1
--第六章开始--查询特定的列数据SELECT view_name, text FROM user_views; --查询所有列数据select * from emp;--使用distinct查询唯一列数据select distinct job from emp;--造数据_部门表dept6create table dept6 as select * from dept原创 2016-07-18 16:02:41 · 559 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第六章-查询数据表-Part 2
这部分的代码还是有些干货的,如,rowid, rownum等功能都是首次使用,而且Mysql数据库中并没有这些功能。--6.1.2 指定查询条件--简单where子句SELECT * FROM emp6 WHERE deptno = 20;SELECT * FROM emp;--使用范围操作符SELECT empno, ename, job, mgr, hireda原创 2016-07-18 17:14:00 · 489 阅读 · 0 评论 -
Oracle学习笔记-第一章-认识关系型数据库
第一次接触数据库是大二时学的FoxPro,在一个小机房里操作着Windows3.1系统下的数据库,感觉还是很高端的。那时就认为数据库很重要,一定要学好。考试时考了79分,在班里算高分了。不过,这已是十几年前的事情了,回头看看这些年在计算机技术上崎岖不平的道路,确实细思极恐。通过这些年的项目经验,我开始坚信:要在IT行业里“混”,必须要持续学习,“哪里不会点哪里”。前一段时间原创 2016-07-29 11:17:49 · 714 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第六章-查询数据表-Part 3
层次化查询为首次接触,还没有吃透。--6.2复杂查询--6.2.1多表连接查询--内连接(Oracle 特有语法)select emp.empno,emp.ename,emp.job,emp.hiredate,emp.sal,dept.dnamefrom emp,deptwhere emp.deptno=dept.deptno; --内连接(ANSI SQL语法),与上述SQL语原创 2016-07-19 11:18:16 · 480 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第七章-操作数据表
除了序列(Sequence)和同义词(Synonym)外,其他语句基本上都在自己创建的iTerm数据中用过了,所以这章感觉不难。--第7章开始--7.1.2 插入单行记录SELECT * FROM emp;INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, dep原创 2016-07-19 12:11:30 · 4530 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第八章-记录与集合-Part 1
--第8章开始--代码8.1 不使用记录的PL/SQL语句块示例DECLARE --定义保存字段值的变量 v_empno NUMBER; v_ename VARCHAR2(20); v_job VARCHAR2(9); v_mgr NUMBER(4); v_hiredate DATE; v_sal NUMBER(7, 2)原创 2016-07-19 13:30:21 · 734 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第八章-记录与集合-Part 2
--代码8.8 使用select语句为记录赋值DECLARE TYPE emp_rec IS RECORD( empno NUMBER(10), ename VARCHAR2(30), job VARCHAR2(30)); --声明记录类型的变量 emp_info emp_rec;BEGIN --为记录类型赋值 SELECT empno, en原创 2016-07-19 14:24:44 · 2601 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第八章-记录与集合-Part 3
索引表、嵌套表、可变数组、FORALL、BULK COLLECT...,这一章的新概念真够多的,不过,相比Java的集合类,其用法感觉不那么复杂。--代码8.18 在数据表中使用嵌套表示例DROP TYPE empname_type;CREATE TYPE empname_type_02 IS TABLE OF VARCHAR2(20);--1.创建嵌套表类型CREATE TYPE e原创 2016-07-19 15:34:11 · 2755 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第九章-SQL内置函数-Part 1
Oracle内置函数还是很丰富的,即使对Excel函数比较熟悉,看到这么多的Oracle内置函数还是有点头大的。要全部记住不太现实,如果有一张函数表可随时查询就方便多了。也可以在Oracle官网提供的SQL参考文档上检索, 链接:http://docs.oracle.com/cd/E11882_01/server.112/e41084/toc.htm--第9章开始--9.1原创 2016-07-19 16:53:32 · 701 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第九章-SQL内置函数-Part 2
有些函数如果没有实际的使用需求,光看简单的示例也很难理解。--NVL函数(如exp1为空,则返回exp2的值,否则返回exp1?)SELECT last_name 英文名, salary 薪资, NVL(commission_pct, 0) 提成比率, (salary * 12) + (salary * 12 * NVL(commission_pct原创 2016-07-20 12:11:01 · 712 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第九章-SQL内置函数-Part 3
这一章的SQL语句比较长,第一次接触,感觉用不习惯,可能需要在用到的时候查资料了。不管怎样,先把源码备在这里。--排序子句(Order by)--未指定排序时,AVG值相同SELECT ename, sal, AVG(sal) OVER()FROM empWHERE ROWNUM <= 3;--指定排序后,计算累计平均值SELECT ename, sal, AVG(sal)原创 2016-07-20 14:06:13 · 2904 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十章-使用游标-Part 1
心得:在PL/SQL Developer中调试代码时,不能准确提示行号,此时,可将代码段复制到sqlplus界面,能准确提示出错的行数,帮助发现问题所在。第一次接触Oracle时,感觉游标是个很高大上的概念。最近才发现游标和C语言中的指针类似,不是什么高深的概念。正所谓,“难者不会,会者不难”基本概念:When Oracle Database executes a SQL statem...原创 2016-07-20 15:20:15 · 2922 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十章-使用游标-Part 2
虽说下个项目中要用到PL/SQL,但还不清楚需要用到哪些具体的知识点?估计游标是不可或缺了,如果能在现有代码的基础上改一改就能满足项目要求,现在的工作也就更有价值了。--代码10.14 基本的Loop循环结构DECLARE dept_row dept%ROWTYPE; --定义游标结果记录变量 CURSOR dept_cursor IS原创 2016-07-20 16:10:25 · 2343 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十一章-事务处理和锁定
随笔:基本概念早就知道,重点不在于会不会,而在于:会多少?做过什么?怎么做?我的需求你什么时候能实现?...表锁定模式:row share, row exclusive, share lock, share row exclusive, exclusive,暂时不懂,还需继续努力。--第11章开始--代码11.1 使用Commit语句提交事务DECLARE dept_no原创 2016-07-20 16:52:06 · 459 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十二章-异常处理机制-Part 2
异常处理可以让程序更“健壮”,品质更高,所以很重要!好在PL/SQL的程序结构挺清晰,都是程式化的东西,没什么难理解的。--代码12.11 Exception_int使用示例DECLARE e_missingnull EXCEPTION; --先声明一个异常--PRAGMA时编译指令的声明,表示Exception_init编译原创 2016-07-21 12:22:41 · 1626 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十三章-子程序-Part 1
对于PL/SQL这种基本上时面向过程的语言来讲,子程序(过程和函数)就是其核心所在了。整个解决方案可通过组织、调用由过程和函数构成的模块来实现。在“Divide and conquer”(分而治之)的编程世界中,子程序就是程序员手中的兵器,用的越熟练越好。--代码 13.1 创建过程示例CREATE OR REPLACE PROCEDURE newdept ( p_deptn原创 2016-07-21 15:04:43 · 1828 阅读 · 0 评论 -
源码-PL/SQL从入门到精通-第十三章-子程序-Part 2
调试nocopy功能时,为了看到实际效果,设置了一个比较大的循环次数,结果悲剧了:运行了近1个小时没出结果,电脑死机(任务管理器都打不开);无奈只能强行关机,开机时间又特别长,一度让我以为系统崩溃。看来,PL/SQL developer下调试这种暴力计算的程序风险很高啊,我在Eclipse下调试Java程序时从来没碰到过这种造成电脑死机的情况。不过,这章的内容实用性很强,死机也原创 2016-07-21 18:35:20 · 2569 阅读 · 0 评论