在数据库的学习中,对于一个表的主键和外键的认识是非常重要的。

主键:在一个表中,能唯一的表示一个事物(或者一条记录)的字段,我们称之为主键

注意:

    主键的设置可以不只是用一个字段,也可以用若干个字段的组合,但主键必须是唯一的;

    主键一般情况下都用整数,在这里不建议用字符转当做主键。

    主键通常不允许修改,除非该表中的该条记录被删除,我们可以删除主键。

    对于主键的命名问题,不建议直接用ID来命名主键,建议用表名Id  或者  表名_Id来命名主键名

      不允许使用业务(表中有功能)字段来当做主键,我们要使用代理主键,即在表中创建一个没有业务功能的字段来当做主键,这样可以避免很多的问题,便于对表的维护。

外键:

    通俗的说法叫做“来自”,

    若一个表中的若干个字段是来自另外的(一个或者多个)表中的主键或者唯一键,则这个字段就是外键

注意:

    外键通常是来自另外的表中的主键,而不是唯一键,因为唯一键可能为NULL

    外键不一定来自另外的表,也可能来自这个表本身;

主键表 外键表

含有主键的表叫做主键表;

既含有主键也含有外键的表叫做外键表;

    

SQL学习:主键,外键,主键表,外键表,数据库的表与表之间的关系;的更多相关文章

  1. Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。

    题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...

  2. SQL Server中模式(schema)、数据库(database)、表(table)、用户(user)之间的关系

    数据库的初学者往往会对关系型数据库模式(schema).数据库(database).表(table).用户(user)之间感到迷惘,总感觉他们的关系千丝万缕,但又不知道他们的联系和区别在哪里,对一些问 ...

  3. Hadoop学习笔记(老版本,YARN之前),MapReduce任务Namenode DataNode Jobtracker Tasktracker之间的关系

    一.基本概念 在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出的运行于各个计算节点的工作单元称为“任务(task)”.此外,Hadoop提供的分布式文件系统 ...

  4. 【学习笔记】比特(bit)、字,字节(B)存储单位之间的关系+其与操作系统位数的关系+不同编译器编译方式下数据类型的表示范围

    1.在表示网络传输速度中与表示存储单位的不同: 表示存储单位时:1kB=1024B,但在网络中表示传输速度是1KB=1000B 2.下面介绍表示存储单位时的关系及其与操作系统位数的关系: 1B=8bi ...

  5. SQL学习笔记之 数据库基础(一)

    数据库基础 数据库系统的组成:由数据库,数据库管理软件,数据库管理员DBA,支持数据库系统的硬件和软件组成,其中数据库管理员是对数据库进行规划.设计.维护.和监视的专业管理人员,在数据库系统中起着非常 ...

  6. [SQL]复制数据库某一个表到另一个数据库中

    SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 表1 FROM 表2 --复制表2如果只复制结构而不复制内容或只复制某一列只要加WHERE条件就好了 例子:SELECT * I ...

  7. 通过SQL脚本来查询SQLServer 中主外键关系

    在SQLServer中主外键是什么,以及主外键如何创建,在这里就不说了,不懂的可以点击这里,这篇文章也是博客园的博友写的,我觉得总结的很好: 此篇文章主要介绍通过SQL脚本来查看Sqlserver中主 ...

  8. 三、Sql Server 基础培训《进度3-是否使用外键(知识点学习)》

    学习作业3: 问题1:你觉得外键有哪些适用情况?哪些不适用情况?   问题2:本次实战案例,由你来架构,你觉得有必要建立外键吗? 说明你的理由?     ======================= ...

  9. Oracle存储过程update受外键约束的主键值时完整性冲突解决方式

    1.问题背景 尽管在数据库操作中我们并不提倡改动主键,可是确实在实际生活中有这种业务需求: 表A有主键KA,表B中声明了一个references A(KA)的外键约束.我们须要改动A中某条目KA的值而 ...

随机推荐

  1. zabbix3.0配置邮件报警

    我们部署一套监控软件,报警这一块自然不可或缺,接下来我们看看zabbix如何实现邮件报警.   1.编写发送邮件的脚本 zabbix通脚本发送邮件,遵循的传参格式为: 脚本   收件人  标题  邮件 ...

  2. MVC批量导出数据方法

    近段时间做了个数据平台,其中涉及到批量导出CSV格式数据的业务,主要使用了部分视图和视图之间传值等知识点,今天做了下整理,特此分享下: 主要分为四步: 1:要打印的数据格式陈列View: 2:自定义导 ...

  3. ubuntu下安装maven

    下载maven http://maven.apache.org/download.cgi 解压 tar -xzvf apache-maven-3.0.5-bin.tar.gz 配置环境变量 sudo ...

  4. .net 码农转战 iOS - 初探

    好久没写博客了,之前还打算把毕业设计中涉及到的两个算法拿出来说说(脸型分析 + 声音分析),博文都写了一半了,后来实在太忙了,那篇随笔也就沉在草稿列表中没动过. 我原先是专职 .net 开发的,在公司 ...

  5. mysql 备份与还原

    http://dev.yesky.com/281/35291281.shtml 每一种逻辑错误发生的概率都极低,但是当多种可能性叠加的时候,小概率事件就 放大成很大的安全隐患,这时候备份的必要性就凸显 ...

  6. cocos2d-x 2.1.4 使用create_project.py脚本创建项目+ant打包项目

    1.创建项目:执行create_project.py脚本,进入Doc界面输入下面的命令: cd D:\cocos2d-x-2.1.4\cocos2d-x-2.1.4\tools\project-cre ...

  7. AX2012服务器配置--Windows Server 2012 如何实现多个用户远程桌面登陆?

    Windows Server 2012 如何实现多个用户远程桌面登陆?说明:Windows Server 2012默认情况下,只运行2个用户远程桌面登陆,这里我们可以通过安装远程桌面会话主机配置来实现 ...

  8. onethink对二维数组结果集进行排序

    <?php /** * 对查询结果集进行排序 * @access public * @param array $list 查询结果 * @param string $field 排序的字段名 * ...

  9. 仿写自己的一个加载语言包的L函数

    <?php /** * [L 加载语言的L的方法] * @param [string] $key [语言键的名称] * @return [string] $value [取到的语言值] */ f ...

  10. iOS新建项目基本配置

    项目整体同xib+代码的方式 1.调整项目文件结构 2.将资源图片导入工程 General->LaunchScreen 修改 3.App名称修改 info->Bundle name 4.删 ...