首页 > 数据库 >软件测试|SQL分类大概有几种?SQL中什么是主键和外键,它们之间的区别是什么?

软件测试|SQL分类大概有几种?SQL中什么是主键和外键,它们之间的区别是什么?

时间:2023-06-15 15:57:58浏览次数:59  
标签:一个 SQL 外键 表中 NULL 主键 软件测试

在这里插入图片描述

前言

之前一个朋友面试测试开发岗位,面试官问了这个问题,朋友觉得自己没有很好回答这个问题,面试结束之后找到我,我只能帮他总结成这样了,希望能够帮助到那位朋友。

获取更多技术资料,请点击!

SQL语言分为五大类:

DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。
DQL(数据查询语言) - Select 查询语句不存在提交问题。
DML(数据操纵语言) - Insert、Update、Delete 这些语句需要Commit才能提交。
DTL(事务控制语言) - Commit、Rollback 事务提交与回滚语句。
DCL(数据控制语言) - Grant、Revoke 授予权限与回收权限语句。

SQL主键和外键:结论

主键和外键是数据库设计中的重要概念,因为它们有助于建立表之间的关系并帮助确保数据的完整性。
一个主键可以唯一地识别一个表中的行,而一个外键则是通过引用相关表的主键将两个表联系在一起。
这里你应该注意的最重要的区别是,主键不能有NULL值,而外键可以接受NULL值。

什么是主键

主键是表中的一个列(或一组列),用于唯一地识别表中的每一行。它不能包含空值,并且在表中的所有行中必须是唯一的。一个表中只允许有一个主键。
一个主键基本上是 “UNIQUE “和 “Not Null “约束的组合。因此,它不能是一个NULL值。关于主键需要注意的另一点是,它的值不能从父表中删除。

什么是外键

外键是一个表中的一个列(或一组列),指的是另一个表中的主键。它被用来在两个表之间建立联系,并被用来在数据库中执行参考完整性。外键基本上是一个表中的字段/列,类似于其他表的主键。
与主键不同,一个表可以有一个以上的外键。而且,在关系数据库中,外键可以包含重复值和空值。一个外键的值可以从子表中删除。

数据库中主键和外键的重要区别

下表强调了主键和外键之间的所有重要区别

Key 主键 外键
Basic 它用于唯一地识别表中的数据。 它用于维护表之间的关系。
Null 它不可能是NULL。 它可以接受NULL值。
重复的 两条或多条记录不能有相同的主键。 它可以为一个外键属性携带重复的值。
Index Primary有聚类索引。 默认情况下,它不是聚类索引。
Tables 可以在临时表上定义主键约束。 它不能被定义在临时表上。

总结

本文主要是对SQL分类,以及主键外键的区别进行了描述,这是一个基本的面试题,希望能够帮助大家解决这一类的面试问题。

获取更多技术资料,请点击!

标签:一个,SQL,外键,表中,NULL,主键,软件测试
From: https://www.cnblogs.com/hogwarts/p/17483108.html

相关文章

  • PostgreSql: 安装与链接
    环境介绍使用宝塔面板,在阿里云中安装PostgreSql,并使用DataGrip在本地进行链接postgresql配置安装postgresql在宝塔中安装postgresql管理器在此处点击安装postgresql,我安装的是14.2。各位可以自行选择之后等待安装完成即可修改配置文件修改postgresql.conf修改pg_h......
  • 软件测试|数据分析神器pandas教程(三)
    前言前面我们介绍了pandasSeries数据结构,本篇文章我们来介绍另外一种pandas数据结构——DataFrame。获取更多技术资料,请点击!DataFrameDataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可......
  • mysql面试常见问题
    mysql面试常见问题以下是MySQL面试中常见的问题:什么是索引?MySQL中有哪些类型的索引?InnoDB和MyISAM存储引擎的区别是什么?MySQL的锁机制有哪些?如何避免死锁?什么是事务?MySQL中如何回滚一个事务?如何进行SQL性能优化?你了解的常用优化技巧有哪些?请简述MyS......
  • 软件测试|数据分析神器pandas教程(一)
    前言Python是非常适合用于数据分析的,除了Python代码简单以外,Python还有非常多的第三方库,对于数据分析有很大帮助,今天我们就介绍一下Python进行数据分析的神器——pandas。获取更多技术资料,请点击!安装从2019年1月1号开始,新发布的pandas将只支持Python3版本,所以我们的教程也以p......
  • docker 安装 mysql5
    version:'3'services:mysql57:#容器名(以后的控制都通过这个)container_name:mysql57#重启策略restart:alwaysimage:mysql:5.7ports:-"3307:3306"volumes:#挂载配置文件#-./mysql/db/:/docker-en......
  • Windows Server 2022 安装配置 MYSQL 及远程连接
    官方下载地址:https://dev.mysql.com/downloads/mysql/解压后新建my.ini放在解压目录下。配置环境变量:此电脑->属性->高级系统设置->环境变量->系统变量。找到path,新建D:\ProgramFiles\mysql-8.0.33-winx64\bin[mysqld]#设置3306端口port=3306#设置mysql的安装目录based......
  • sql server 计算两个时间相差(年月日时分秒)(收藏)
    selectdatediff(year,开始日期,结束日期);--两日期间隔年selectdatediff(quarter,开始日期,结束日期);--两日期间隔季selectdatediff(month,开始日期,结束日期);--两日期间隔月selectdatediff(day,开始日期,结束日期);--两日期间隔天selectdatediff(week,开始日期,......
  • 软件测试|教你用matplotlib绘制热力图
    前言热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。当然,只要我们提供数据,Python就能够绘制出热力图。下面我们就来介绍一下如何......
  • 解决mysql数据库 ‘ MySQL server has gone away’
    参考:https://www.jianshu.com/p/8c8086c11cae原因:查询的结果集超过max_allowed_packet查看执行SQL执行文件大小是否超过max_allowed_packet,如果超过则需要调整参数,或者优化语句。解决:修改参数,max_allowed_packet,比如调整为28M。要大于执行的SQL文件大小setglobalmax_a......
  • MySQL如何初始化常量Item?
    MySQL中的一切表达式都是继承自Item类,常量也不外乎如此。以Item_float为例子说明MySQL如何初始化常量Item。首先在Parser里面:NUM_literal:NUM{interror;$$=new(YYTHD->mem_root)Item_int($1,......