随笔分类 -  database&sql

摘要:当怀疑是sql语句执行存在错误时,可以用一下关键字检索日志文件: 检索关键字: Cause: SQLException sql原始报错内容: [DEBUG] [2016-05-03 09:37:05 908] [JSF-BZ-22000-9-T-1] (SQLErrorCodeSQLExceptio 阅读全文
posted @ 2016-05-03 10:17 沐风山 阅读(501) 评论(0) 推荐(0)
摘要:INSERTintoexception_report_total(waitFillOrders,waitSendOrders,changeOrders,changeTotal,waitProduceOrders,wmsStockOrders,erpStockOrders,waitReserveOrd... 阅读全文
posted @ 2016-01-20 12:14 沐风山 阅读(350) 评论(0) 推荐(0)
摘要:MySQL为什么要分库分表可以用说用到MySQL的地方,只要数据量一大, 马上就会遇到一个问题,要分库分表.这里引用一个问题为什么要分库分表呢?MySQL处理不了大的表吗?其实是可以处理的大表的.我所经历的项目中单表物理上文件大小在80G多,单表记录数在5亿以上,而且这个表属于一个非常核用的表:朋友... 阅读全文
posted @ 2015-09-17 16:45 沐风山 阅读(310) 评论(0) 推荐(0)
摘要:前言有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧。注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础。优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中... 阅读全文
posted @ 2015-09-15 01:03 沐风山 阅读(251) 评论(0) 推荐(0)
摘要:sql优化分析通过slow_log等方式可以捕获慢查询sql,然后就是减少其对io和cpu的使用(不合理的索引、不必要的数据访问和排序)当我们面对具体的sql时,首先查看其执行计划A.看其是否使用索引B.查看其查询的记录数C.确定索引的代价是否过高D.是否可以使用复合索引E.是否有“using te... 阅读全文
posted @ 2015-09-15 00:59 沐风山 阅读(269) 评论(0) 推荐(0)
摘要:为什么需要索引(Why is it needed)?当数据保存在磁盘类存储介质上时,它是作为数据块存放。这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性。硬盘数据块存储结构类似于链表,都包含数据部分,以及一个指向下一个节点(或数据块)的指针,不需要连续存储。记录集只能在某个关键字段上进行... 阅读全文
posted @ 2015-09-15 00:10 沐风山 阅读(427) 评论(0) 推荐(0)
摘要:临时表方式实现多条记录遍历declare @oper_cart_item_id bigint; declare @oper_cart_id bigint; declare @the_last_changed_date datetime; declare @oper_cust_id int; ... 阅读全文
posted @ 2014-05-28 20:10 沐风山 阅读(392) 评论(0) 推荐(0)
摘要:/*** 游标的使用 讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。 使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。 1.3.1声明游标 最简单游标声明:DECLARE CURSOR FOR; 其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查... 阅读全文
posted @ 2014-05-26 18:49 沐风山 阅读(339) 评论(0) 推荐(0)
摘要:介绍:datediff(datepart,startdate,enddate) 返回间隔datepart 的数SELECT datediff(yy,'2010-06-1 10:10',GETDATE()) --计算多少年SELECT datediff(q,'2011-01-1 10:10',GETD... 阅读全文
posted @ 2014-04-16 17:54 沐风山 阅读(2777) 评论(0) 推荐(0)
摘要:0Feb 22 2006 4:26PMCONVERT(CHAR(19), CURRENT_TIMESTAMP, 0)102/22/06CONVERT(CHAR(8), CURRENT_TIMESTAMP, 1)206.02.22CONVERT(CHAR(8), CURRENT_TIMESTAMP, 2)322/02/06CONVERT(CHAR(8), CURRENT_TIMESTAMP, 3)422.02.06CONVERT(CHAR(8), CURRENT_TIMESTAMP, 4)522-02-06CONVERT(CHAR(8), CURRENT_TIMESTAMP, 5)622 Feb 阅读全文
posted @ 2014-04-09 19:39 沐风山 阅读(224) 评论(0) 推荐(0)
摘要:--root用户创建其他用户CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';--删除用户Delete FROM user Where User='admin' and Host='host';--当前用户的授权信息show grants;--为用户授权GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION 阅读全文
posted @ 2014-04-02 20:41 沐风山 阅读(111) 评论(0) 推荐(0)
摘要:--增加备份字段alter Table tableName add columnNameBak bigint ;--将主键自增字段 赋值到备份字段update tableNameset columnNameBak = columnName;--删除主键备份字段约束ALTER TABLE tableNameDROP CONSTRAINT PK_shoppingcart--删除主键自增字段alter Table tableName drop column columnName ;--修改备份字段名称--ALTER TABLE tableNameRENAME COLUMN columnNam... 阅读全文
posted @ 2014-04-02 15:51 沐风山 阅读(1882) 评论(0) 推荐(0)
摘要:1、重命名表将表OLD重命名为NEW:EXEC sp_rename 'OLD','NEW'2、重命名列将表table1中的列old重命名为new:EXEC sp_rename 'table1.old','new','COLUMN'3、删除主键:Declare @Pk varChar(100);Select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('tableName') and xtype='PK';if @Pk is 阅读全文
posted @ 2014-04-02 15:15 沐风山 阅读(185) 评论(0) 推荐(0)
摘要:1. select max(id) from tablename2.SELECT LAST_INSERT_ID() 函数LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update 操作生成 阅读全文
posted @ 2014-04-01 12:23 沐风山 阅读(210) 评论(0) 推荐(0)
摘要:1.关键字auto_increment2.自增用法例:CREATE TABLE animals ( id mediumint not null auto_increment,name char(30) not null,primary key (id));3.关于自增Q:怎么获得当前的自增的最大值?Q:怎么获得table的当前自增最大值?A:select @@identityA:select max(id) from tableQ:对自增的理解?A: 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。LAST_INSERT_ID 是与table 阅读全文
posted @ 2014-04-01 12:11 沐风山 阅读(605) 评论(0) 推荐(0)
摘要:JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等。我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试方法一,使用PreparedStatement加批量的方法try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(o_url, userName, password); conn.setAutoCommit(false); String sql = "INSERT adlogs... 阅读全文
posted @ 2014-03-31 19:19 沐风山 阅读(312) 评论(0) 推荐(0)
摘要:C3P0在最近的demo中也用了(我用的是0.9.2.1版本),因为单例很难应付大量并发。用法详见文档:http://www.mchange.com/projects/c3p0/基本的用法在http://www.mchange.com/projects/c3p0/#quickstart,以及http://www.mchange.com/projects/c3p0/#using_c3p0中。在项目中更为方便的做法是将配置写在配置文件中。C0P0的配置文件名为c3p0-config.xml,详见http://www.mchange.com/projects/c3p0/#configuration_ 阅读全文
posted @ 2014-03-30 00:19 沐风山 阅读(290) 评论(0) 推荐(0)
摘要:import java.sql.Connection;import java.sql.SQLException;import java.beans.PropertyVetoException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class Dafa { private static DBPool dbPool; private ComboPooledDataSource dataSource; static { dbPool = new DBPool(); } public ... 阅读全文
posted @ 2014-03-30 00:13 沐风山 阅读(1032) 评论(0) 推荐(0)
摘要:一、key与primary key区别CREATE TABLE wh_logrecord ( logrecord_id int(11) NOT NULL auto_increment, user_name varchar(100) default NULL, operation_time datetime default NULL, logrecord_operation varchar(100) default NULL, PRIMARY KEY (logrecord_id), KEY wh_logrecord_user_name (user_name) ) 解析:KEY wh_logrec 阅读全文
posted @ 2014-03-20 18:44 沐风山 阅读(684) 评论(0) 推荐(0)
摘要:由于对mysql了解不够透彻,导致对definer问题查了好久才解决问题记录自己的一些理解!问题描述:在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程;由公司写的一个c程序自动往该表写入数据,通过触发器转换成业务相关数据;同过root@localhost连接数据库,但提示192.168.2.%不存在问题查找:登录数据库,show procedure status\G 发现procedure的definer都是root@192.168.2.%问题解决:方法一:修改存储过程的definer update mysql.proc set definer='root@localhos 阅读全文
posted @ 2014-03-20 16:34 沐风山 阅读(797) 评论(0) 推荐(1)