数据库|基于T-SQL添加默认约束、外键约束、内连接查询

news2024/7/6 19:38:53

哈喽,你好啊,我是雷工!
前边学习了基于T-SQL48_47.基于T-SQL添加数据、CRUD操作、标识列详解:《数据库|基于T-SQL向数据库数据表中添加、修改、删除数据》
接下来接着学习基于T-SQL添加默认约束、外键约束、内连接查询,以下为学习笔记。

01 默认约束

默认约束是用于指定列在插入数据时的默认值。
当向数据表中插入一行数据时,如果没有为某个列指定具体的值,那么该列将使用其默认约束定义的默认值。

在创建表时定义默认约束:

CREATE TABLE 表名(1 数据类型 DEFAUL 默认值,
    ……
)

例如:在作者表中为地址添加默认值“地址不详”
代码:

create table Author
(
       AuthorId int identity(10001,1) primary key,--作者编号,主键
       LoginAccount nvarchar(50)not null,--登录账号
       LoginPwd varchar(18)check(len(LoginPwd)>=8 and len(LoginPwd)<=18) not null,--登录密码
       AuthorName varchar(20)not null,--作者名字
       Phonenumber char(11)not null,--手机
       NowAddress nvarchar(100)default('地址不详')--地址
)
go

然后再次向数据表中添加数据时,如果有地址信息替换为对应地址信息,没有指定地址信息则显示“地址不详”。

测试结果如下:
在这里插入图片描述

02 外键约束

外键约束是数据库设计中的概念,用于确保有关系的两个表数据的一致性和完整性。
在关系数据库中,外键是一个列或列集合,它指向另一个关联表中的主键或唯一键。

作用:当我们在外键表中,添加数据的时候,如果和主表建立引用关系,则会自动的从主表中对应的字段中查询数据是否一致,不一致的话会拒绝插入。
保证数据一致。
示例:

2.1、创建账号类型表:

代码如下:

--账号类型表
if exists(select*from sysobjects where name='AccountType')
drop table AccountType
go
create table AccountType
(
       TypeId int identity(10,1)primary key,--类型编号
       TypeName varchar(20)not null--类型名称
)
go

2.2、添加类型

向账号类型表中添加【科技】、【美食】、【综合】三个类型
代码如下:

--添加账号分类
insert into AccountType(TypeName)values('科技'),('美食'),('综合')

查询账号类型表的信息
代码如下:

select*from AccountType

2.3、查询结果:

在这里插入图片描述

2.4、创建账号表

创建账号表,其中TypeId列为外键,指向账号分类表的TypeId列
代码如下:

--账号表
if exists(select*from sysobjects where name='Account')
drop table Account
go
create table Account
(
       AccountId int identity(10001,1) primary key,--账号编号
       AccountName varchar(20)not null,--账号名称
       AccountContent nvarchar(500)not null,--账号简介
       originality int not null,--原创数
       TypeId int references AccountType(TypeId) not null--外键约束
)
go

2.5、向账号表添加信息

当添加的信息中TypeId值(9)在账号类型表中不存在时,插入报错。
代码及执行结果如下:

在这里插入图片描述
当添加的信息中TypeId值为11,在账号类型表中存在时,则可正常插入。
代码及执行结果:

在这里插入图片描述

查询插入结果为:
在这里插入图片描述

03 内连接查询

通过inner join连很查询两个表的信息。
代码示例:

select AccountName,AccountContent,originality,Account.TypeId,AccountType.TypeName from Account
inner join AccountType on Account.TypeId=AccountType.TypeId

查询结果:
在这里插入图片描述

04、后记

以上为基于T-SQL添加默认约束、外键约束、内连接查询相关的基础内容,
有对相关内容感兴趣的小伙伴,欢迎点个关注,我们一起学习进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1710016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多个文本如何一键导出二维码?在线批量生码的制作方法

当存在多条文本数据并且需要将每条数据生成单独的二维码来使用&#xff0c;很多小伙伴可能还在用一个一个来制作的方法&#xff0c;在二维码生成器上将文本转二维码。这种方式操作起来比较的繁琐&#xff0c;需要浪费大量的时间&#xff0c;那么有什么方法可以简化这个过程吗&a…

【Python】 如何将列表转换为字符串

基本原理 在Python中&#xff0c;列表&#xff08;list&#xff09;和字符串&#xff08;string&#xff09;是两种不同的数据类型。列表是一个有序的元素集合&#xff0c;可以包含不同类型的元素&#xff0c;而字符串则是一个字符序列。有时&#xff0c;我们可能需要将列表中…

记录一次cnvd事件型证书漏洞挖掘

事件起因是因为要搞毕设了&#xff0c;在为这个苦恼&#xff0c;突然负责毕设的老师说得到cnvd下发的证书结合你的漏洞挖掘的过程是可以当成毕设的&#xff0c;当时又学习了一段时间的web渗透方面的知识&#xff0c;于是踏上了废寝忘食的cnvd证书漏洞挖掘的日子。 前言&#x…

卷径计算(PID输出补偿法 SCL源代码)

卷径计算有很多方法,这里我们提供另一个思路,这里我们采用的是通过速度控制间接控制张力通过线速度和系统卷径我们可以计算出我们的速度前馈量(主速度)。具体收放卷前馈量计算可以参考下面文章链接: 收放卷前馈量计算FC(梯形图+SCL代码)-CSDN博客文章浏览阅读584次。这篇博…

Hexo最新实战:(一)Hexo7.0+GitHub Pages博客搭建

前言 很多平台都能写博客还有创作激励&#xff0c;为什么我又要搭一个&#xff1f;为什么这次要选择用Hexo框架&#xff1f; 对应的原因是流量自由和省钱&#xff0c;第一个&#xff0c;很多平台能写但不是都有收益&#xff0c;而且平台有自身的规则&#xff0c;比如会屏蔽一…

鸿蒙大厂目前政策变现沉淀思考

鸿蒙引擎定制优化 鸿蒙端hotfix&#xff1a; 技术栈太大了&#xff0c;但是鸿蒙需要学习什么呢&#xff1f; 什么最有价值&#xff1f; 这就是接下来需要表达下我的观点&#xff1a; 1、APP开发 2、应用市场技术专员 【游戏、电商重型APP性能的处理 SmartPerf、构建自己的工…

如果一个开发初学者从今天开始,他们应该学习什么?

What should a beginner developer learn if they were to start today? by Scott Hanselman 如果从今天才开始学习&#xff0c;新手开发者要学习什么&#xff1f; 新的开发人员今天应该从哪里开始&#xff1f; 他们应该学习什么来为自己的职业生涯做好准备&#xff1f;Sco…

做微火全域运营服务商要注意的风险有哪些?

随着全域运营赛道日渐兴起&#xff0c;微火全域运营服务商申请人不断增多&#xff0c;逐渐成为众多新兴职业中的一大热门。 所谓微火全域运营服务商&#xff0c;顾名思义&#xff0c;就是通过操作微火全域运营系统做全域运营的一类群体&#xff0c;其业务范围为公域和私域内所有…

IC开发——Verilator

1. 简介 Verilator 是一个开源的 Verilog 和 SystemVerilog 硬件描述语言 (HDL) 仿真器。它是一个高性能的仿真器,可以将 Verilog 和 SystemVerilog 代码转换为 C/SystemC 代码,并生成可执行的仿真模型。 Verilator 的主要特点包括: 高性能:Verilator 生成的仿真模型具有非常…

Bootstrap 3.x 版本基础引入指南

Bootstrap 是一款广受欢迎的前端框架&#xff0c;它简化了网页设计与开发流程&#xff0c;帮助开发者快速创建响应式布局和美观的网页界面。本文将向您介绍如何在项目中引入 Bootstrap 3.x 版本的基本步骤&#xff0c;包括 CSS 和 JavaScript 文件的引用&#xff0c;以及必要的…

关于Java Agent的使用、工作原理、及hotspot源码 解析

说明&#xff1a; 本文很长&#xff0c;长到超出了掘金编辑器的限制字符数 10万&#xff0c;所以我在最后边只是图解&#xff0c;没有更多的文字和代码描述了&#xff0c;本文知识点较多&#xff0c;如果没接触过agent那必然大概率会懵&#xff08;大部分知识点讲解完后&#x…

瑞_Windows环境下使用bat重启jar包等服务

文章目录 命令示例重启ray-project.jar重启redis服务 &#x1f64a; 前言&#xff1a;经验分享——Windows环境下使用.bat批处理文件重启 jar 包等服务。在学习或者工作日常中&#xff0c;有时候会需要在 Windows 系统环境下去启动 jar 包或其它服务&#xff0c;此时如果使用关…

百世慧入选第七届数字中国建设峰会“2024企业数字化转型典型应用案例”

5月24日-25日&#xff0c;第七届数字中国建设峰会在福州举行。本届峰会是国家数据工作体系优化调整后首次举办的数字中国建设峰会&#xff0c;主题为“释放数据要素价值&#xff0c;发展新质生产力”。 为了全方位展示各领域数字化最新成果&#xff0c;共创数字中国美好未来&a…

mail发送调用接口如何与三方服务无缝对接?

mail发送调用接口的性能怎么样&#xff1f;调用邮件接口的技巧&#xff1f; 为了提高效率和自动化水平&#xff0c;企业通常会选择使用mail发送调用接口。然而&#xff0c;仅仅使用这些接口还不够&#xff0c;如何与各种第三方服务无缝对接同样至关重要。AokSend将探讨如何有效…

Golang性能分析工具pprof--远程分析时无法定位源代码行数问题解决方案

场景 通过命令行模式的list命令&#xff0c;为了查看指标消耗在具体哪一行&#xff0c;需要源代码。但实际程序是部署在线上或者程序的源代码目录变了&#xff0c;则pprof从默认路径找不到代码&#xff0c;无法显示是哪一行的问题。 通过浏览器模式的source页面&#xff0c;有…

Linux java jni调用C++封装动态库

由于项目中java需要调用第三方提供的C动态库&#xff1b;由于第三方动态库传入的参数较多&#xff0c;还伴随着指针传入操作&#xff0c;导致java调用极为不便&#xff01;因此催生出对于第三方的C动态库进行二次封装。java调用只需按结构传入一个结构化的string即可。话不多说…

狂暴少帅短视频:成都科成博通文化传媒公司

狂暴少帅短视频&#xff1a;热血与激情的碰撞 在当下这个信息爆炸的时代&#xff0c;短视频以其独特的魅力迅速占领了人们的视线。而在众多短视频创作者中&#xff0c;一位名为“狂暴少帅”的创作者以其独特的风格和引人入胜的内容&#xff0c;赢得了广大网友的喜爱和追捧。今…

关于pdfbox读取pdf

最近&#xff0c;想着将pdf的文件进行读取其内容&#xff0c;发现了一个比较好用的依赖pdfbox。目前使用这个依赖&#xff0c;进行实现一个简单实例&#xff0c;如果之后需要使用到更深的了解&#xff0c;会进行更新。这里提醒一下&#xff1a;jdk8尽量采用pdfbox3.x版本。 对…

怎样查看JavaScript中没有输出结果的数组值?

在JavaScript中&#xff0c;可以方便地定义和使用数组&#xff0c;对于已经定义的数组&#xff0c;怎样查看其值呢&#xff1f; 看下面的示例&#xff0c;并运行它。 上面的示例中&#xff0c;标签不完整&#xff0c;请补充完整再试运行。你知道少了什么标签么&#xff1f; 注…

react ant 表格实现 拖拽排序和多选

项目背景 : react ant 要实现 : 有多选功能(实现批量删除 , 也可以全选) 可以拖拽(可以复制 , 方便顶部的搜索功能) 要实现效果如下 1 这是最初的拖拽功能实现 , 不能复制表格里的内容 , 不符合要求 2 更改了ROW的内容 , 实现了可以复制表格内容 代码 //控制是否可以选中表格…