【Mysql】复合主键和联合主键的区别

复合主键:

create table index_test
(
    a int not null,
    b int not null,
    c int not null,
    d int null,
    primary key (c, a, b)
);

即一个表的主键同时由多个字段共同组成,复合主键索引见【Mysql】复合主键的索引。

联合主键:

create table index_test_a
(
    id int not null,
    a int not null
    primary key (id)
);
create table index_test_b
(
    id int not null,
    b int not null
    primary key (id)
);
create table index_test_a_b
(
    id int not null,
    a_id int not null,
    b_id int not null,
    primary key (id)
);
index_test_a_b表的id为表index_test_a和表index_test_b的联合主键,就是个逻辑概念
本文转载于网络 如有侵权请联系删除

相关文章

  • Java:要抢我的位置?再等“500年”!

    前言/2022.7.11终于,万众期待的TIOBE编程社区指数7月份额它来了!该指数每月更新一次,评级基于世界各地的熟练工程师、课程和第三方供应商,包括各大流行搜索引擎等均被用来计算数据。01前20名编程语言前20排名浮动上个月,TIOBE指数排名没有太大变化。目前排名前4位的语言Python、C、Java和C++的市场份额合计接近50%。Fortran和Matlab再次进入前20名(Lua和Prolog跌出前20)。Java相较于上月-1.07%的下跌,这个月有了0.40%的增长,如此保持的话,看起来它第三名的宝座短时间内还是很难交接出去。而Python和C势如破竹,指数持续上涨,都已达到了13%以上。排名预测今年已经过半,到目前为止,TIOBE2022年度语言的最大候选者是Python、C、Java、C++和C#。据估计,Rust、Dart、Kotlin或TypeScript等任何相对较新的语言都暂时不会进入前20名。02其他编程语言排名第21-50名下面列出了完整的21-50名,因为是非官方发布的,所以可能存在遗漏:第51-100名第51-100名如下,由于它们之间的数值差异较小

  • java对象转换map

    大家好,又见面了,我是你们的朋友全栈君。背景介绍原理说明反射概念功能作用实现方式方法介绍实例展示对象转MAP背景介绍  今天在项目研发的过程中遇到这样一个需求,在一个统一处理类的入口要将所有后面处理流程需要用到的值统一塞进上下文的MAP对象中,这其中就包括了一持久层的DO对象。   如果对于对象进行逐个遍历是可以实现这个需求,但代码量比较大,所以一直在寻求一种比较合理的处理方式。后来发现可以通过反射的方式实现这个功能。原理说明反射概念反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法和属性; 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。功能作用在运行时可以动态获取一个对象属于哪个类 在运行时可以动态创建一个类的对象 在运行时可以获取类的属性和方法 在运行时可以调用对象的任何方法 可以实现动态代理 实现方式通过Object类的getClass方法Classcla=obj.getClass复制通过对象实例方法获取对象Classcla=String.class复制通过Class.forName

  • 软件的分类

    计算机的软件系统由系统软件与应用软件组成。系统软件系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具),是支持计算机系统正常运行并实现用户操作的那部分软件。应用软件应用软件是指用户利用电脑及其提供的系统软件为解决各种实际问题而编制的电脑程序。应用软件是面向应用领域、面向用户的软件,它主要包括科学计算软件包、字处理软件、辅助软件、辅助工程软件、图形软件、工具软件等。如:OFFICE、WPS、Photoshop等。软件包软件包(SoftWarePackage)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类。应用软件包与特定的应用领域有关,又可分为通用包及专用包两类

  • 在目标检测中如何解决小目标的问题?

    导读本文介绍了一些小目标物体检测的方法和思路。在深度学习目标检测中,特别是人脸检测中,由于分辨率低、图像模糊、信息少、噪声多,小目标和小人脸的检测一直是一个实用和常见的难点问题。然而,在过去几年的发展中,也出现了一些提高小目标检测性能的解决方案。本文将对这些方法进行分析、整理和总结。图像金字塔和多尺度滑动窗口检测一开始,在深学习方法成为流行之前,对于不同尺度的目标,通常是从原始图像开始,使用不同的分辨率构建图像金字塔,然后使用分类器对金字塔的每一层进行滑动窗口的目标检测。在著名的人脸检测器MTCNN中,使用图像金字塔法检测不同分辨率的人脸目标。然而,这种方法通常是缓慢的,虽然构建图像金字塔可以使用卷积核分离加速或简单粗暴地缩放,但仍需要做多个特征提取,后来有人借其想法想出一个特征金字塔网络FPN,在不同层融合特征,只需要一次正向计算,不需要缩放图片。它也被应用于小目标检测,这将在后面的文章中讨论。 简单,粗暴和可靠的数据增强通过增加训练集中小目标样本的种类和数量,也可以提高小目标检测的性能。有两种简单而粗糙的方法:针对COCO数据集中含有小目标的图片数量较少的问题,使用过采样策略:不

  • 安防互联网无插件直播如何将支持Ehome协议的设备接入新版安防视频云服务平台EasyCVR?

    EasyCVR是由TSINGSEE青犀视频团队研发的一套安防视频云服务融合平台。它主要适合多品牌、多协议、多通道的安防网络设备的接入,可以将RTSP协议、RTMP协议、GB28181国标协议、海康SDK,ehome协议等网络设备/平台统一接入与管理,实现一种视频融合,统一输出的大平台架构。今天主要为大家介绍,用户在使用EasyCVR时,如何正确将支持Ehome协议的设备接入EasyCVR平台?如何将支持Ehome协议的设备接入EasyCVR平台?新版EasyCVR支持将Ehome协议设备接入平台中,需要进行以下设置: 1、使用管理员身份登录EasyCVR平台,进入“平台接入”-“EHOME协议平台接入”中。点击“开启”图标,将所有IP地址修改为实际的IP地址,并保存。2、进入设备web管理页面中,进入“配置”-“网络”-“高级配置”-“平台接入”中,按下图进行配置后,并保存。3、登录EasyCVR平台,即可查看到该设备,表明接入Ehome协议的设备已经成功接入。更多关于EasyCVR:EasyCVR是一个集视频联网共享、存储、流媒体转发、视频转码、视频上云、智能分析统一等多种功能为一体

  • 小蛇学python(21)Python中的if __name__ == '__main__'

    在具体说明ifname=='main'功能前,先从一个简单的实例直观上感受一下。#const.py PI=3.14 deftrain(): print("PI:",PI) train()复制#area.py fromconstimportPI defcalc_round_area(radius): returnPI*(radius**2) defcalculate(): print("roundarea:",calc_round_area(2)) calculate()复制现在运行area.py文件。运行结果后可以看见,const.py中的train()也被运行了,实际上我们是不希望它被运行,只是想把const.py中PI变量导入到area.py。现在把const.py改一下:PI=3.14 deftrain(): print("PI:",PI) if__name__=="__main__": train()复制运行area.py文件发现没有执行const.py中trai

  • 套接字

    版权声明:本文为博主原创文章,转载请注明博客地址:https://blog.csdn.net/zy010101/article/details/88673990套接字当初设计的目的就是为了统一同一台计算机中进程之间的通信以及不同计算机进程之间的通信所设计的一个统一的接口。套接字最早是UCBerkeley为BSD操作系统设计的。现在POSIX标准化了套接字。在Linux和Unix下的套接字是一致的。但是在Windows下,微软为Windows操作系统的应用层和传输层设计了自己独有的一套机制,同时微软也扩展了POSIX标准制定的套接字,形成了Windows独有的WinSocket。套接字是通信端点的一种抽象。在Linux下socket是文件的一种。也就是说可以使用read和write函数去处理套接字。POSIX标准支持的套接字类型如下表所示:类型功能SOCK_DGRAM长度固定,无连接,不可靠的报文传递。默认协议UDPSOCK_STREAM有序,可靠,面向连接,全双工的字节流。默认协议TCPSOCK_RAWIP协议的数据包接口(IP层接口)SOCK_SEQPACKET和SOCK_STREA

  • 网站被劫持攻击以及流量攻击如何解决

    目前越来越多的服务器被DDOS流量攻击,尤其近几年的DNS流量攻击呈现快速增长的趋势,DNS受众较广,存在漏洞,容易遭受到攻击者的利用,关于DNS流量攻击的详情,我们来大体的分析一下,通过我们SINE安全这几年的安全监控大数据来看清DNS的攻击。一种是DNS路由劫持攻击,一种是DNS流量放大攻击。DNS缓存攻击以及劫持路由分析服务器的攻击者会劫持路由进行DNS缓存攻击,当发送一个请求包或者是打开一个网站的时候就会去找就近的路由,简单来说就是网站劫持,打个比方当一个访问者去请求SINE安全官网的时候,中专路由如果被劫持,那么就会把一个不是SINE安全的IP,返回给你,这个IP可以是攻击者恶意构造的,当你不小心访问了,并且输入了用户名以及密码,这些信息都会被攻击者所掌握。也就是密码信息被劫持了。那么如何来检测这种DNS路由劫持的攻击呢?在正常的一些情况下,我们的DNS服务器与我们网站域名的解析IP,都是保持同步的,都会一致,当你访问一个网站或者其他域名的时候,发现打开的都是一个页面或者是解析到了一个IP上,基本上就可以断定DNS被劫持了,可以使用域名解析工具来检查问题。DNS服务器也会有漏

  • 统计学中抽样调查和一些常用的方法

    抽样调查的领域涉及如何用有效的方式得到样本。这些调查都利用了问卷,而问卷的设计则很有学问。它设计如何用词、问题的次序和问题的选择与组合等等。涉及包括心理学、社会学等知识。问题的语言应该和被调查者的文化水平相适应。那么抽样调查的设计的目的之一是确保样本对总体的代表性,以保证后续推断的可靠性。然而每个个体可能的简单随机抽样是一个理想情况。概率抽样方法假定每个个体出现在样本中的概率是已知的。这种概率相抽样方法使得数据能够进行合理的统计推断。非概率抽样方法对从非概率抽样得到的数据进行推断,它依赖于具体的抽样方案是如何设计的,也依赖于它是如何实施的。那么概率抽样方法有哪些呢:1、系统抽样 也成为每N个名字选择方法(n-thnameselectiontechnique),这是先把总体中的每个单元编号,然后随机选取其中之一作为抽样的开始点进行抽样。根据预定的样本量决定"距离"→N,在选取开始点之后,通常从开始点开始按照编号进行所谓等距抽样。比如起始点为5,"距离"N=10,则下面的抽查对象为15号、25号等等。如果编号是随机选取的,则这和简单随机抽样就是等价的

  • 机器学习如何训练出最终模型

    JasonBrownlee2017年3月17日我们用于对新数据进行预测的机器学习模型称为最终模型。在应用机器学习时,如何训练出一个最终模型这可能是大家的一个疑惑。初学者通常会问以下问题:如何用交叉验证进行预测?根据交叉验证应该选择哪种模型?在训练数据集上要建立模型吗?这个帖子会消除大家的疑惑。在这篇文章中,您将会了解如何确定您的机器学习模型,以便对新数据进行预测。现在让我们开始吧。PhotobyCameraEyePhotography什么是最终模型?最终机器学习模型是用于对新数据进行预测的模型。也就是说,给出新输入数据的例子,然后使用该模型预测输出的值。这可能是一个分类(分配标签)或回归(估实际值)模型。例如,不管是判断猫还是狗的照片,还是明天的估计销售数量;机器学习项目的目标是获得最佳的最终模型,其中“最佳”由以下因素决定:数据:可用的历史数据。时间:在项目上花费的时间。程序:数据准备步骤,一个或多个算法,以及算法配置的选择。在整个项目中,收集数据,花费大量时间;要使用数据准备程序,要使用的算法以及如何对其进行配置。最终的模型是这个过程的巅峰之作,最后你会发现实际上就是要做预测。训练

  • Python多种方法实现句子中单词倒置(好未来2017笔试题)

    问题描述:将一句话的单词进行倒置,标点不倒置。比如Ilikebeijing.经过函数后变为:beijing.likeI代码:defrev1(s): return''.join(reversed(s.split()))defrev2(s): t=s.split() t.reverse() return''.join(t)defrev3(s): '''考虑开头或结束有空格的情况''' importre t=re.split('\s+',s.strip()) t.reverse() return''.join(t)defrev4(s): '''考虑开头或结束有空格的情况''' importre t=re.split('\s+',s.strip()) return''.join(reversed(t))defrev5(s): ''

  • 大数据如何改变 NBA ?

    大数据,正在给体育产业带来巨大的变革。NBA已经走在了其他商业性运动联盟的前面,领先的大数据分析让伟大的运动传奇更具商业价值。能否有效利用数据这项战略资产,正逐渐将领导者和落伍者划分开来。数字游戏在历史,或许从来没有一本书像《点球成金》(Moneyball)这样对体育行业产生了如此重大的影响。在这本书之后,大家开始对体育运动赛事中的数字趋之若鹜并越来越重视。 一场NBA比赛共四节,常规时间计48分钟。一只NBA球队一赛季要进行82场常规赛,主客场各41场,而后东西部的各前8名进入季后赛,在7战赛制下,经过至少3轮12场比赛进入决赛。NBA现在共有30只球队,一个完整的正式赛季约持续5个月,共有超过1200场比赛。 这些数字定义了NBA的一部分,还有更多的数据使得NBA之所以成为一项越来越受大众欢迎的赛事。从某个角度而言,它的本质就是数字,很少有赛事像它一样有如此繁复庞杂的数据——不仅是球迷、媒体看得到的得分、助攻、篮板、命中率等,还有专栏作家们津津乐道的PER(ThePlayerEfficiencyRating,球员效率值,将场上球员的各项表现通过算法公式转化为综合的数值,现在已经

  • 高并发服务优化篇:详解一次由读写锁引起的内存泄漏

    JVM相关的异常,一直是一线研发比较头疼的问题。因为对于业务代码,JVM的运行基本算是黑盒,当异常发生时,较难直观的看到和找到问题所在,这也是我们一直要研究其内部逻辑的原因。本篇就由一个近期线上JVM内存泄漏的例子,带大家强行分析一波~Part1线上服务器报警了某天,同事来找我帮忙,原来是某系统毫无征兆的来了一连串报警,一波机器的老年代内存占用率超过阈值~1.1先看表现老年代内存占用可以看到,在7月中旬之前,内存占用还是比较正常的,每次GC都可以回收掉很大一部分的老年代对象。而中旬之后,老年代内存一直缓慢增长而无法释放。很明显,应该是对象没法被正常回收导致。内存泄漏了~1.2怎么办呢如果是刚上线的项目爆出了此类问题,因为影响面比较小,可以直接先回滚代码,止血为第一要务。不过,这个项目明显已经上线N多天,中间还不知道上过多少需求,而且,既然流量近期有上涨导致问题出现,说明,已经对客开流量了。回滚是不可能了,抓紧时间定位问题,上线修复吧。Part2定位问题一般的步骤:拿到dump文件用MAT等工具,找出内存占用过多的异常对象,以及引用关系分析异常对象关联代码的可能问题不过,因为这次dump

  • SQL注入实例学习待整理

    注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。[TOC]宽字节注入原理:产生原因:由于nbb在部署MySQL时候错误在/etc/my.cnf配置,如下这样会导致编码转换从而导致注入的漏洞 character-set-cient=gbk #或者执行 setcharacter_set_client=gbk复制1.正常情况下当PHP的GPC开启或使用addslashes函数和iconv过滤GET或POST提交的参数时候,我们使用的单引号’就会被转义成为:\'; 2.这个时候由于存在宽字节注入,我们就可以利用该漏洞我们输入%df%27时候首先经过上面提到的单引号转义变成%df%5c%27(MySQL内部变化)而%5c代表的反斜杠\是转义函数添加; 3.实际是因为在数据库查询前由于使用GBK多字节编码,即在汉字编码的范围内两个字节会被编码成为一个汉字,然后在MySQL服务器会对查询的语句进行GBK编码即%df%5c转换成汉字’運’,从而单引号逃逸了出来导致了注入漏洞;比如: 请求1:http://127.0.0

  • charles

    Charles是在PC端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调试端口外,Charles也可以用于分析第三方应用的通讯协议。配合Charles的SSL功能,Charles还可以分析Https协议。 Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。 Charles主要的功能包括: 截取Http和Https网络封包。 支持重发网络请求,方便后端调试。 支持修改网络请求参数。 支持网络请求的截获并动态修改。 支持模拟慢速网络。   工具导航栏中提供了几种常用工具:    :清除捕获到的所有请求  :红点状态说明正在捕获请求,灰色状态说明目前没有捕获请求。  :灰色状态说明是没有开启网速节流,绿色状态说明开启了网速节流。  :灰色状态说明是没有开启断点,绿色状态说明开启了断点。  :编辑修改请求,点击之后可以修改请求的内容。  :重复发送请求,点击

  • shell读取文档中的命令并逐行执行

      1)如果我使用readline逐行读取打印   whilereadline;doecho$line;done<filaname复制   2)如果我使用readline逐行读取并执行(不使用eval的话,一些特殊的符号会报错) whileread-rline;doeval$line;done<filaname复制   注: 1)whilereadline读取不到最后一行的话,加上||[-n"$line"] 2)读取命令打印的时候,可能一条占了多行,需加参数-r,读取完整的一条 作者:李先生 出处:https://www.cnblogs.com/lemon-le/ ------------------------------------------- 个性签名:在平凡中坚持前行,总有一天会遇见不一样的自己! 如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢! 万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾

  • Axure RP 注册表关联

    ;把D:\\Apps\\AxureRP8\\替换为实际目录 WindowsRegistryEditorVersion5.00 [HKEY_CURRENT_USER\SOFTWARE\Classes\.RP] @="AxureRPProjectFile" [HKEY_CURRENT_USER\SOFTWARE\Classes\.RPLIB] @="AxureRPWidgetLibraryFile" [HKEY_CURRENT_USER\SOFTWARE\Classes\.RPLIBPRJ] @="AxureRPLibraryTeamProjectFile" [HKEY_CURRENT_USER\SOFTWARE\Classes\.RPPRJ] @="AxureRPTeamProjectFile" [HKEY_CURRENT_USER\SOFTWARE\Classes\AxureRPLibraryTeamProjectFile] @="AxureRP8LibraryTeamProjectFile" [HKEY_CURRENT_USER\SOFTWARE\Classes\Axu

  • Hypermesh多次旋转复制扇区的单元

    #多次旋转复制单元 #先手动选中要复制的单元 setnSection40 seta09 for{seta1}{$a<$nSection}{incra}{ *duplicatemarkelements11 #创建一个平面,面号为1,法线在z轴分量为1(垂直z轴),过点(0,0,0) *createplane1001000 *rotatemarkelements11$a0 }复制   本文来自博客园,作者:xdd1997 转载请注明:https://www.cnblogs.com/xdd1997/p/14887218.html

  • 每日scrum(5)

    进入冲刺第五天,软件的界面设计成为主打,收集学校的很多美图是我们组的任务; 问题在于软件已很难有很大的改进,大方向也都是变不了的 任务看板: 燃尽图:

  • rem动态适配问题

    <!--rem实现适配--> <scripttype="text/javascript"> //页面打开立即计算 document.querySelector('html').style.fontSize=window.screen.width/20+'px'; //尺寸更改也会重新计算 //这里写这个事件的目的是是为了让我们在桌面端测试时可以自动计算移动端 window.onresize=function(){ document.querySelector('html').style.fontSize=window.screen.width/20+'px'; } </script> 复制   

  • HDU 3410【单调栈】

    思路: 单调栈。 鄙人的记忆:按当前为最大值的两边延伸就是维护单调递减栈。 //#include<bits/stdc++.h> #include<iostream> #include<stack> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<queue> #include<vector> #include<map> usingnamespacestd; typedeflonglongLL; typedefpair<int,int>PII; constintN=50000+10; structasd{ intid; intleft,right,w; }; intn,a[N]; intans[N][2]; stack<asd>q; intmain() { while(!q.empty()) q.pop(); intT,cas=1; s

相关推荐

推荐阅读