mysql联合主键

mysql联合主键1、hibernate配置联合主键1.1联合主键的好处:联合主键的好处是不需要因为需要主键而增加一个无用的主键列1.2联合主键的建表语句CREATETABLE`HTTP_TERMINAL_DETAIL_STATISTICS`( `TIME`CHAR(14)NOTNULLCOMMENT’时间’, `TERMINAL_TYPE`VARCHAR(128)NOTNULLCO…

大家好,又见面了,我是你们的朋友全栈君。

1、hibernate配置联合主键

1.1 联合主键的好处:

联合主键的好处是不需要因为需要主键而增加一个无用的主键列

1.2 联合主键的建表语句

CREATE TABLE `HTTP_TERMINAL_DETAIL_STATISTICS` (
	`TIME` CHAR(14) NOT NULL COMMENT '时间',
	`TERMINAL_TYPE` VARCHAR(128) NOT NULL COMMENT '终端类型',
	`TERMINAL_ID` VARCHAR(128) NOT NULL COMMENT '终端标识',
	`QUANTITY` INT(11) DEFAULT NULL COMMENT '请求数量',
	`CREATE_TIME` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
	`UPDATE_TIME` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
	`IS_DELETE` TINYINT(1) NULL DEFAULT NULL COMMENT '是否删除',
	`VERSION` INT(11) DEFAULT NULL COMMENT '乐观锁',
	`HOUR_NAME` VARCHAR(128) NULL DEFAULT NULL COMMENT '小时标识',
	`DAY_NAME` VARCHAR(128) NULL DEFAULT NULL COMMENT '天数标识',
	`MONTH_NAME` VARCHAR(128) NULL DEFAULT NULL COMMENT '月份标识',
	`YEAR_NAME` VARCHAR(128) NULL DEFAULT NULL COMMENT '年份标识',
	PRIMARY KEY (`TIME`,`TERMINAL_TYPE`,`TERMINAL_ID`)
) DEFAULT CHARSET=utf8;

1.3 联合主键的hibernate配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.sinovoice.hcicloud.daoorm.report">
	
	<class name="HttpTerminalDetail" table="HTTP_TERMINAL_DETAIL_STATISTICS">
            <!-- 联合主键 -->
	    <composite-id>
                <key-property name="time" type="java.lang.String" column="TIME" />
                <key-property name="terminalType" type="java.lang.String" column="TERMINAL_TYPE" />
                <key-property name="terminalId" type="java.lang.String" column="TERMINAL_ID" />
            </composite-id>
        
                <!-- 乐观锁配置 version元素必须紧挨着id后面-->
		<version name="version" column="VERSION" type="java.lang.Integer"></version>
		
		<property name="quantity" type="java.lang.Integer" column="QUANTITY"/>
		<property name="createTime" column="CREATE_TIME"/>
		<property name="updateTime" column="UPDATE_TIME"/>		
		<property name="isDelete" type="java.lang.Integer" column="IS_DELETE"/>
		
		<property name="hourName" type="java.lang.String" column="HOUR_NAME"/>
		<property name="dayName" type="java.lang.String" column="DAY_NAME"/>
		<property name="monthName" type="java.lang.String" column="MONTH_NAME"/>		
		<property name="yearName" type="java.lang.String" column="YEAR_NAME"/>
	</class>
</hibernate-mapping>

2、乐观锁

2.1 什么是乐观锁

使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即为数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加一。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与第一次取出来的version值进行比对,如果数据库表当前版本号与第一次取出来的version值相等,则予以更新,否则认为是过期数据

2.2 乐观锁的配置方式

<!-- 乐观锁配置 version元素必须紧挨着id后面-->
<version name="version" column="VERSION" type="java.lang.Integer"></version>

3、mysql数据类型

数字类型

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
浮点数值
DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值
日期类型

类型 大小
(字节)
范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/’838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4

1970-01-01 00:00:00/2038

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS 混合日期和时间值,时间戳
字符串类型
类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

4、mysql数据库聚合查询语句

SELECT TERMINAL_TYPE,TIME,SUM(QUANTITY) FROM HTTP_TERMINAL_DETAIL_STATISTICS GROUP BY TIME;

这个查询语句在聚合某个字段的基础上实现将当前字段进行求和计算。

5、查询mysql指定数据库的表个数:

SELECT COUNT( * ) FROM information_schema.tables WHERE TABLE_SCHEMA = ‘库名’;


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148211.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat15.0.23激活码【注册码】

    navicat15.0.23激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    181
  • 解决win10开机内存占用大,内存持续升高的方法[通俗易懂]

    解决win10开机内存占用大,内存持续升高的方法[通俗易懂]背景:i5,双核四线程,8G内存,系统盘是固态硬盘,版本是win10企业版。关闭几个不常用但是常驻内存的服务,就能迅速降低占用,让你的电脑飞起来。

    2022年6月28日
    117
  • Map和Set的区别_list与set的区别

    Map和Set的区别_list与set的区别目录一、简述二、Map三、Set四、Set和Map区别一、简述Set和Map主要的应用场景在于数据重组和数据储存。Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构。集合(Set):ES6新增的一种新的数据结构,类似于数组,成员唯一(内部元素没有重复的值)。且使用键对数据排序即顺序存储。Set本身是一种构造函数,用来生成Set数据结构。Set对象允许你储存任何类型的唯一值,无论是原始值或者是对象引用。二、Ma…

    2022年9月6日
    2
  • 101DIY_inoty9

    101DIY_inoty9前言:Indy在2006年已经开始移植到FPC下,但是由于各种原因一直更新得比较缓慢,现在官网上的最新版本发布时间是2007年底。随着Delphi2009(Tiburn)的发布,Indy团队已经将f

    2022年8月3日
    5
  • Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    2021年12月17日
    65
  • Nginx和Apache和Tomcat的区别及优缺点「建议收藏」

    Nginx和Apache和Tomcat的区别及优缺点「建议收藏」Nginx和Apache和Tomcat的区别及优缺点1、定义:1)ApacheApacheHTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。(Apche可以支持PHPcgiperl,但是要使用Java的话,你需…

    2022年4月26日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号