精华内容
下载资源
问答
  • mysql联合主键

    万次阅读 2018-03-27 13:48:58
    1、hibernate配置联合主键1.1 联合主键的好处:联合主键的好处是不需要因为需要主键而增加一个无用的主键列1.2 联合主键的建表语句CREATE TABLE `HTTP_TERMINAL_DETAIL_STATISTICS` ( `TIME` CHAR(14) NOT NULL ...

    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数据类型

    数字类型

    类型大小范围(有符号)范围(无符号)用途
    TINYINT1 字节(-128,127)(0,255)小整数值
    SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值
    MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值
    INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
    BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
    FLOAT4 字节(-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)单精度
    浮点数值
    DOUBLE8 字节(-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的值小数值
    日期类型

    类型大小
    (字节)
    范围格式用途
    DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
    TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
    YEAR11901/2155YYYY年份值
    DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
    TIMESTAMP4

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

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

    YYYYMMDD HHMMSS混合日期和时间值,时间戳
    字符串类型
    类型大小用途
    CHAR0-255字节定长字符串
    VARCHAR0-65535 字节变长字符串
    TINYBLOB0-255字节不超过 255 个字符的二进制字符串
    TINYTEXT0-255字节短文本字符串
    BLOB0-65 535字节二进制形式的长文本数据
    TEXT0-65 535字节长文本数据
    MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据
    MEDIUMTEXT0-16 777 215字节中等长度文本数据
    LONGBLOB0-4 294 967 295字节二进制形式的极大文本数据
    LONGTEXT0-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 = '库名';


    展开全文
  • mysql联合主键及用法

    万次阅读 2019-05-31 13:41:46
    所谓的一张表多个主键,我们称之为联合主键联合主键就是用多个字段一起作为一张表的主键。主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。 创建联合主键: 1、GUI中同时选中...

    数据库的每张表只能有一个主键,不可能有多个主键。所谓的一张表多个主键,我们称之为联合主键。联合主键就是用多个字段一起作为一张表的主键。主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

    创建联合主键:

    1、GUI中同时选中多列,点击设置为主键。

    2、sql语句将多列设置为主键:

          一种是在建表时就写出,语句如下:

    Create Table 表名 (字段名1 Int Not Null,
                       字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
                        字段名3…………
                        字段名N………… )

          另一种是在建表后更改,语句如下:

    ALTER TABLE 表名 WITH NOCHECK ADD 
    CONSTRAINT [PK_表名] PRIMARY KEY  NONCLUSTERED 
    (
      [字段名1],
      [字段名2]
    )
    展开全文
  • MYSQL联合主键

    2020-05-09 16:15:31
    图一所示id和name不是两个主键,而是一个联合主键 明确了这一点,就很好解释了,给id和name都设为主键,只能保证 id和name联合起来非空且唯一,并不能保证单个字段的唯一性。 解决方法:id为主键,name加一个唯一...

    已知:有一张表aa_mytest
    目的:id非空且唯一,name非空且唯一,那么给个这两个字段都加上主键能满足我的目的吗?

    在这里插入图片描述
    看数据,id和name都有重复,并未达到我的目的
    在这里插入图片描述
    这里要明确一点,mysql表是不允许多个主键的,
    图一所示id和name不是两个主键,而是一个联合主键

    明确了这一点,就很好解释了,给id和name都设为主键,只能保证 id和name联合起来非空且唯一,并不能保证单个字段的唯一性。
    解决方法:id为主键,name加一个唯一索引

    展开全文
  • 请问一下account list表中的acc_id和acc_bankNum设置为联合主键,怎么将该表acc_bankNum和user list中的acc_bankNum设置为外键 ![用户表](https://img-ask.csdn.net/upload/201903/06/1551872995_866154.png) !...
  • 百度到的内容都是关于单个主键的大小写问题,由于自己的数据库出问题的表的主键是由id和name字段组成的联合主键,所以解决方法稍微有些不一样。在此记录一下这个问题及解决方法。 通过百度知道解决的基本方法是在...

            今天在做项目的过程中遇到了一个问题,mysql主键的大小写敏感问题。百度到的内容都是关于单个主键的大小写问题,由于自己的数据库出问题的表的主键是由id和name字段组成的联合主键,所以解决方法稍微有些不一样。在此记录一下这个问题及解决方法。

            通过百度知道解决的基本方法是在设计表的时候添加binary。一开始想到的解决方法是在PRIMARY KEY (`app_id`, `name`)前面加上binary,但是这样行不通,出现语法错误。

        解决方法:在相应字段的声明处增加binary,在使用PRIMARY KEY (`app_id`, `name`)声明联合主键就可以了。

        例如:CREATE TABLE `NewTable` (
                    `app_id`  int(11) NOT NULL AUTO_INCREMENT ,
                    `name`  varchar(500) BINARY CHARACTER SET utf8 COLLATE utf8_bin NOT NULL ,
                    PRIMARY KEY (`app_id`, `name`),

                    )

    已经创建存在的表可以通过语句修改:

    ALTER TABLE 'haha' MODIFY COLUMN 'name' varchar(500) BINARY CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;

    展开全文
  • mysql 联合主键的作用

    千次阅读 2018-05-03 17:01:14
    联合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。 可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以...
  • 一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。例如: SELECT t.Name FROM mytable t LEFT JOIN mytable m ON t....
  • mysql 联合主键的作用 索引的作用

    千次阅读 2018-05-03 17:03:49
    联合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。 可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以...
  • MySQL联合主键自增分别产生递增id

    千次阅读 2018-11-10 19:30:11
    user_no表是先把dept,id设为联合主键,然后把id设为自增长, 那么插入该表时,每插入一条财务部的数据,id就会自增长一次,每插入研发部数据,id也会分别增长一次, 也就是说,id的自增长是按dept分组的。 ...
  • 前言 一. 联合主键自增问题 今天上午闲来无事翻看了下...当多列组成联合主键时、auto_increment属性的列并不是自顾自得一味的增长,而是配合其他主键的列 从而得到唯一约束;如上图2所示 当siteId值不同时cate...
  • 1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名); 2.创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列]...
  • Mysql 联合主键的查询速度

    千次阅读 2016-06-14 15:11:00
    mysql一个表中用a,b做联合主键,那么where条件中a的查询走索引,速度快,b的查询不走索引,速度慢。   论证: 先创建表 CREATE TABLE `ab` ( `a` int NOT NULL , `b` varchar(255) NOT ...
  • MySQL联合主键解释

    2020-07-10 21:42:42
    最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢? 其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为...
  • https://blog.csdn.net/change_any_time/article/details/79623305联合主键:当两个数据表形成的是多对多的关系,那么需要通过两个数据表的主键来组成联合主键,就可以确定每个数据表的其中一条记录了例:学生表:...
  • mysql添加联合主键

    2021-02-25 18:42:16
    创建表的同时创建联合主键2.针对已经存在表,添加联合主键3.删除主键约束格式: 首先解释一下什么是联合主键 联合主键,指的是把两个列看成是一个整体,这个整体是不为空,唯一,不重复 1.创建表的同时创建联合主键 ...
  • mysql联合主键的自增问题

    千次阅读 2013-07-22 08:41:17
    网上查看资料的时候,偶然看到一篇文章谈到mysql联合主键自增长的问题,该文章提到:   当多列被设为联合主键时,auto_increment属性得列并不是自顾自得一味的增长。 而是配合其他主键的列。 例如:id和vid为...
  • 一个数据表,需要两个字段联合起来一块做主键的时候。举例如下: 直接用sql语句的话如下 ALTER TABLE `表名` ADD PRIMARY KEY ( `表中字段名1` , `表中字段名2` ) ; 或者在phpmyadmin中操作,如下图: ...
  • mysql设置联合主键

    千次阅读 2019-12-13 12:28:51
    联合主键: 用2个字段(或者多个字段组合)来确定一条记录,说明:这2个字段可以分别重复,但不能两个同时重复。 设置: 新建查询输入如下语句: alter table tb_name add primary key (字段1,字段2,字段3); 运行后...
  • MySQL查询之 联合主键

    千次阅读 2020-03-05 14:04:17
    我们知道MySQL主键是一个非空的,且唯一的键,如果我们需要两个或者多个呢 create table stu( id int, name varchar(20), score int, primary key(id, name) ); 这样我们创建了一个有两个主键的表 我们来插入...
  • mysql联合主键与复合主键区别

    千次阅读 2018-10-30 15:53:50
    复合主键就是指你表的主键含有一个以上的字段组成 。 例如; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的id和name字段组合起来就是你test表的复合主键 ...
  • Mysql联合主键

    2020-08-21 10:12:06
    简介:mysql联合主键:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。...
  • 2. 查询mysql版本信息(运用mysql语句) Show variables like ‘version’; 3. 查询原数据: 一般是本身数据库就有的,比如可以查看其版本信息等;(meta data) Show variables; 4. Sql语句支持运算符及表达式的,...
  • MySQL联合主键、索引

    千次阅读 2017-11-18 18:26:36
    MySQL数据库用联合主键。用两张表测试。 # 1分钟数据表 CREATE TABLE md_1min2( `d_1min` DATETIME(3), `code` CHAR(16), `open` FLOAT, `high` FLOAT, `low` FLOAT, `close` FLOAT, `volume` FLOAT, PRIMARY ...
  • MySql:复合主键与联合主键

    千次阅读 2019-10-22 17:44:00
    一、复合主键 复合主键:数据库表的主键由两个及以上的字段组成。 CREATE TABLE `asm_device_config_info` ( `asmModel` varchar(32) NOT NULL COMMENT '自助机型号', `deviceType` varchar(32) NOT NULL ...
  • 问题综述 : mysql 出现联合主键过多 在通过主键选择更新或添加时 不能很好起到重复数据过滤 解决方式:重修表结构 删掉不用联合主键(删掉时可能因为历史原因产生重复数据不能修改联合主键) 解决方式: 删除表中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,233
精华内容 19,693
关键字:

mysql联合主键

mysql 订阅