随笔分类 - 数据库
摘要:1 使用原则 1)单表数据量达到5000万以上,考虑使用分库分表方案分表 2)读写分离可以考虑使用 2 列设计规范 1)主键使用bigint类型,使用雪花算法生成 2)禁止使用外键 3)禁止使用null字段 4)使用int存储ip地址 5)添加字段要慎重,可以考虑第三方存储,比如mongo,redi
阅读全文
摘要:说明:只返回了where后面的语句,没有select,用于单表查询/** * sql查询操作符枚举类 * */public enum SqlOpEnum { EQUAL("equal"),NOT_EQUAL("notEqual"), GE("ge"),GTE("gte"),LE("le"),LTE(
阅读全文
摘要:某大型互联网公司mysql设计规范 总体原则: I: 反第三范式-->第三范式仅仅是在大学里用的,出来后,不能随便用; II: 数据冗余 --> 一张表几百万甚至上千万数据,你不搞数据冗余,以后数据量上来了,查询肯定很慢。 具体原则: 1 字段设计:最短最小原则,够用即可,可以用varchar(10
阅读全文
摘要:一、JDBC连接DB2Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");String url="jdbc:db2://dburl:port/DBname"cn = DriverManager.getConnection( url, sUsr, sPwd );二、JDBC连接Microsoft SQLServer(microsoft)Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );cn = DriverManag
阅读全文
摘要:select * from (select * from tablename order by dbms_random.value) where rownum < N;例:select * from (select * from tablename order by dbms_random.value) where rownum < 3;注:dbms_random包需要手工安装,位于$ORACLE_HOME/rdbms/admin/dbmsrand.sqldbms_random.value(100,200)可以产生100到200范围的随机数按概率抽取:select * from t
阅读全文
摘要:相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。常用日期型函数1。Sysdate当前日期和时间SQL>Selectsysdatefromdual;SYSDATE----------21-6月-052。Last_day本月最后一天SQL>Selectlast_day(sysdate)fromdual;LAST_DAY(S----------30-6月-053。Add_months(d,n)当前日期d后推n个月用于从一个日期值增加或
阅读全文
摘要:描述:有一个会员表,有个birthday字段,值为'YYYY-MM-DD'格式,现在要查询一个时间段内过生日的会员,比如'06-03'到'07-08'这个时间段内所有过生日的会员。SQL语句:Select *From user Where DATE_FORMAT(birthday,'%m-%d') >= '06-03' and DATE_FORMAT(birthday,'%m-%d') selectDAYOFWEEK('1998-02-03'); ->3 2、WEEKDA
阅读全文
摘要:SELECT col1, col2, CASE WHEN col3 > 1 AND col3 2 AND col3 3 AND col3 , ) FROM table select decode(col1,'330165737758262',nsrsbh,'330106745808709',nsrsbh,0) from tableselect decode(col1,'330165737758262','6','9') from table
阅读全文
摘要:jdbc批量插入,关键代码:StringsqlInsert= " insert into USER (id,name,password) values(?,?,?) ";conn = getConnection(); //得到连接conn.setAutoCommit(false);pstmt = conn.prepareStatement(sqlInsert);while(...){pstmt.setXxx(index,value);pstmt.addBatch();}pstmt.executeBatch();conn.commit();
阅读全文
摘要:1.调用存储过程首先建立名为pro_query_dept的存储过程Java代码 CREATE OR REPLACE PROCEDURE pro_query_dept ( p_deptno IN dept.deptno%TYPE, p_dname OUT dept.dname%TYPE ) --声明区 AS --执行区 BEGIN SELECT dname INTO p_dname FROM dept WHERE deptno = p_deptno; IF p_dname = 'SALES' THEN p_dname := '销售部门'; ELSE p_dname
阅读全文
摘要:一、数学函数ABS(x) 返回x的绝对值BIN(x)返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x)返回值e(自然对数的底)的x次方FLOOR(x)返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,...,xn) 返回集合中最小的值LN(x) 返回x的自然对数LOG(x,y)返回x的以y为底的对数MOD(x,y) 返回x/y的模(余数)PI()返回pi的值(圆周率)RAND()返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。ROU
阅读全文