当前位置: 首页 > news >正文

【ZZULI】数据库第二次实验

在这里插入图片描述

【ZZULI】数据库第二次实验

  • 创建学生信息管理系统的数据库
  • 通过T-SQL语句创建学生表、课程表、选课表
    • 创建学生表
    • 创建课程表
    • 创建选课表
  • 修改表结构。
    • 为SC表添加写的列,列名为备注
    • 修改备注列的数据长度。
    • 删除SC表的备注列。
  • 通过T-SQL语句对表的列添加约束,选两种约束,每个约束做一个例题
    • 例子1:为SC表的Grade列添加CHECK约束
    • 例子2:为Course表的Cname列添加UNIQUE约束
    • 不同约束的比较

前言:本实验使用的语句是T-SQL

创建学生信息管理系统的数据库

可以图形化形式添加,也可以通过T-SQL语句添加。

CREATE DATABASE StudentManagementSystem;

命令执行结果:

在这里插入图片描述

通过T-SQL语句创建学生表、课程表、选课表

注意这个语句的执行首先要加一条:

USE StudentManagementSystem;

这条语句选择 StudentManagementSystem 数据库作为当前操作的数据库。

也可以手动选择:

在这里插入图片描述

创建学生表

USE StudentManagementSystem;CREATE TABLE Student (Sno     char ( 7 )  PRIMARY KEY,Sname char ( 10 ) NOT NULL,Ssex    char (2), Sage    tinyint ,Sdept   char (20)
)

命令执行结果:

在这里插入图片描述

表的相关属性也可以看见:

  1. 主页点查看,打开对象资源管理器。
    在这里插入图片描述

  2. 打开数据库里面的StudentManagementSystem
    在这里插入图片描述

  3. 打开表中的Students表,前面的dbo.是软件自己加的,右键点开设计,可以看到我们表的属性:
    在这里插入图片描述

创建课程表

USE StudentManagementSystem;CREATE TABLE Course (  Cno         char(10)  NOT NULL  -- 课程编号,主键  , Cname       char(20)  NOT NULL  -- 课程名称  , Ccredit     tinyint              -- 学分,表示课程的学分值  , Semester    tinyint              -- 学期,表示课程开设的学期  , PRIMARY KEY (Cno)                -- 主键约束,确保每个课程编号都是唯一的  
);

命令执行结果:

在这里插入图片描述

课程表的相关属性:

在这里插入图片描述

创建选课表

USE StudentManagementSystem;CREATE TABLE SC (  Sno      char(7)  NOT NULL,  -- 学号,主键的一部分  Cno      char(10) NOT NULL,  -- 课程编号,主键的一部分,外键引用Course表的Cno  Grade    tinyint,            -- 成绩  XKLB     char(4),            -- 选课类别(这个字段的用途可能需要进一步明确)  -- 主键约束,确保学号和课程编号的组合是唯一的  PRIMARY KEY (Sno, Cno),  -- 外键约束,确保学号在Student表中存在  FOREIGN KEY (Sno) REFERENCES Student(Sno),  -- 外键约束,确保课程编号在Course表中存在  FOREIGN KEY (Cno) REFERENCES Course(Cno)  
);

命令执行结果:

在这里插入图片描述

选课表属性:

在这里插入图片描述

修改表结构。

为SC表添加写的列,列名为备注

USE StudentManagementSystem;ALTER TABLE SC  
ADD 备注 varchar(255); -- 新增一个名为“备注”的列,数据类型设为varchar(255)

命令执行结果:
在这里插入图片描述

SC的各个列的情况:

在这里插入图片描述

修改备注列的数据长度。

USE StudentManagementSystem;ALTER TABLE SC  
ALTER COLUMN 备注 varchar(500); -- 将“备注”列的数据类型修改为varchar(500)

命令执行结果:

在这里插入图片描述

SC的各个列的情况:

在这里插入图片描述

删除SC表的备注列。

USE StudentManagementSystem;ALTER TABLE SC  
DROP COLUMN 备注; -- 从SC表中删除名为“备注”的列

命令执行结果:

在这里插入图片描述

成功删除:

在这里插入图片描述

通过T-SQL语句对表的列添加约束,选两种约束,每个约束做一个例题

例子1:为SC表的Grade列添加CHECK约束

假设SC表存储了学生选课及成绩信息,我们希望确保Grade列(代表成绩)中的值在0到100之间(包含0和100)。为此,我们可以添加一个CHECK约束。

T-SQL代码:

USE StudentManagementSystem;-- 添加CHECK约束到Grade列  
ALTER TABLE SC  
ADD CONSTRAINT CK_SC_Grade CHECK (Grade BETWEEN 0 AND 100);

命令执行结果:

在这里插入图片描述

表各个列的情况:

  • 有时候可能没有及时刷新,需要我们刷新一下。

在这里插入图片描述

例子2:为Course表的Cname列添加UNIQUE约束

我们可以确保每门课程的名称(Cname)在数据库中也是唯一的(尽管这在现实世界中可能并不总是合理的,因为可能存在名称相似或相同的课程)。

T-SQL代码:

USE StudentManagementSystem;  ALTER TABLE Course  
ADD CONSTRAINT UQ_Course_Cname UNIQUE (Cname);

命令执行结果:

在这里插入图片描述

在这里插入图片描述

不同约束的比较

以下是主键约束(PRIMARY KEY)、唯一约束(UNIQUE)和检查约束(CHECK)之间的简单比较,以表格的形式呈现:

约束类型主键约束(PRIMARY KEY)唯一约束(UNIQUE)检查约束(CHECK)
唯一性必须唯一,且不允许为空(NULL)必须唯一,但允许一个或多个空值(NULL),具体取决于数据库系统不涉及唯一性,但用于限制列中的值必须满足特定条件
标识性可以作为表的唯一标识,用于唯一地确定表中的一行记录不能作为表的唯一标识,仅用于确保列中的值唯一不能作为表的唯一标识,仅用于数据验证
数量限制每个表只能有一个主键每个表可以有多个唯一约束每个表可以有多个检查约束
自动索引通常会自动创建一个唯一索引也会创建一个唯一索引不一定会自动创建索引,但可以根据需要创建
条件表达式无特定条件表达式,仅要求唯一性和非空性无特定条件表达式,仅要求唯一性可以包含复杂的条件表达式,用于限制列中的值
默认值不能设置默认值(因为主键必须唯一,且不允许为空,所以设置默认值没有意义)可以设置默认值,但需要注意唯一性可以设置默认值,但需要满足检查约束的条件
数据完整性强制数据完整性,确保每条记录都有一个唯一的标识符确保特定列或列组合中的值唯一,有助于维护数据完整性确保列中的值满足特定的业务规则或条件,维护数据的一致性和准确性
应用场景用于唯一标识表中的记录用于确保特定列或列组合中的值唯一用于限制列中的值,以满足特定的业务规则或条件
  • 本人知识、能力有限,若有错漏,烦请指正,非常非常感谢!!!
  • 转发或者引用需标明来源。

相关文章:

【ZZULI】数据库第二次实验

【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列,列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束,…...

Javaee---多线程(一)

文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止&…...

Java后端面试内容总结

先讲项目背景,再讲技术栈模块划分, 讲业务的时候可以先讲一般再特殊 为什么用这个,好处是什么,应用场景 Debug发现问题/日志发现问题. QPS TPS 项目单元测试,代码的变更覆盖率达到80%,项目的复用性高…...

DC-1渗透测试

DC1 五个flag的拿取(截图是五个flag里面的内容) 注意事项:kali的用户名:root 密码:kali 注意:DC1 只要开机服务就起来了 思路:信息收集—> 寻找漏洞—> 利用漏洞(sql注入,文件上传漏洞…...

深度剖析:电商 API 接口如何成就卓越用户体验

在电商领域的激烈竞争中,提供卓越的用户体验已成为企业脱颖而出的关键。而电商 API 接口在其中扮演着举足轻重的角色,它如同电商平台的神经系统,连接着各个关键环节,为用户带来无缝、高效且个性化的购物之旅。 一、极速响应&#…...

C++调试经验:Ubuntu下CMake链接常见库的方式(持续更新)

目录 1. CMake链接OpenCV库 2. CMake链接VTK库 3. CMake链接Qt库 4. CMake链接PCL库 5. CMake链接Gstreamer 6. CMake链接json-cpp库 7. CMake链接yaml-cpp库 8. CMake链接breakpad库 9. CMake链接Eigen3库 1. CMake链接OpenCV库 find_package (OpenCV 4 REQUIRED)…...

【HarmonyOS】应用实现APP国际化多语言切换

【HarmonyOS】应用实现APP国际化多语言切换 前言 在鸿蒙中应用国际化处理,与Android和IOS基本一致,都是通过JSON配置不同的语言文本内容。在UI展示时,使用JSON配置的字段key进行调用,系统选择对应语言文本内容。 跟随系统多语言…...

使用pandas进行数据分析

文章目录 1.pandas的特点2.Series2.1新建Seriws2.2使用标签来选择数据2.3 通过指定位置选择数据2.4 使用布尔值选择数据2.5 其他操作2.5.1 修改数据2.5.2 统计操作2.5.3 缺失数据处理 3.DataFrame3.1 新建 DataFrame3.2 选择数据3.2.1 使用标签选择数据3.2.2 使用 iloc 选择数据…...

用于无监督域适应的提示分布对齐

论文探讨了视觉语言模型(VLMs)及其在无监督域适应(UDA)中的应用,并引入了一种名为提示分布对齐(Prompt-based Distribution Alignment,PDA)的方法,该方法采用双分支训练策…...

Rust整合Elasticsearch

Elasticsearch是什么 Lucene:Java实现的搜索引擎类库 易扩展高性能仅限Java开发不支持水平扩展 Elasticsearch:基于Lucene开发的分布式搜索和分析引擎 支持分布式、水平扩展提高RestfulAPI,可被任何语言调用 Elastic Stack是什么 ELK&a…...

Linux 文件权限管理:chown、chgrp 和 chmod 的使用及权限掩码规则

目录 文件权限的基本概念 chown:更改文件的拥有者 使用方法 示例 选项 chgrp:更改文件的所属组 使用方法 示例 chmod:更改文件的权限 使用方法 权限表示 选项 权限掩码(umask)规则 如何查看和设置 umask…...

简单记录ios打包流程

1、点击这里获取UDID 2、xcode登录开发者账户、确定唯一id(Bundle ID) 3、去这里注册appid 4、在这里这里创建app 5、之后xcode中打包...

右键以vscode打开目录的时候出现找不到应用程序

出现这个问题的主要原因,大概率可能是因为你移动了vscode的安装路径导致的。 解决办法 打开注册表:通过cmd 打开regedit 然后搜索:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell 这个两个参数可以自己比对一下,主要需要检…...

【Go-Taskflow:一个类似任务流的有向无环图(DAG)任务执行框架,集成了可视化和性能分析工具,旨在简化并行任务的复杂依赖管理】

Go-Taskflow是一个静态有向无环图(DAG)任务计算框架,它受到taskflow-cpp的启发,结合了Go语言的原生能力和简洁性,特别适合于并发任务中复杂的依赖管理。 Go-Taskflow的主要特点包括: 高可扩展性&#xff1…...

排查PHP服务器CPU占用率高的问题

排查PHP服务器CPU占用率高的问题通常可以通过以下步骤进行: 使用top或htop命令:这些命令可以实时显示服务器上各个进程的CPU和内存使用情况。找到CPU使用率高的进程。 查看进程日志:如果PHP-FPM或Apache等服务器进程的日志记录了具体的请求…...

【学术会议论文投稿】“从零到一:使用IntelliJ IDEA打造你的梦幻HTML项目“

【JPCS独立出版】2024年工业机器人与先进制造技术国际学术会议(IRAMT 2024)_艾思科蓝_学术一站式服务平台 更多学术会议请看 学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录 引言:为何选择IntelliJ IDEA? 第一步&#xff1a…...

Win11安装基于WSL2的Ubuntu

1. 概述 趁着还没有完全忘记,详细记录一下在Win11下安装基于WSL2的Ubuntu的详细过程。不得不说WSL2现在被微软开发的比较强大了,还是很值得安装和使用的,笔者就通过WSL2安装的Ubuntu成功搭建了ROS环境。 2. 详论 2.1 子系统安装 在Win11搜…...

如何对pdf文件进行加密?pdf文件加密全攻略与深度解析(5个方法)

如何对pdf文件进行加密? 只见,在深夜的情报局里,特工小李将一份绝密PDF文件放在保险箱内,以为这样就天衣无缝了。 细细推敲,漏洞百出: 如果钥匙被盗呢?如果被神匠破解出密码呢?如果…...

c++面向对象三大特性之一-----多态

前言:本文将介绍在32位平台下,c的多态,通过本篇文章的学习你讲了解多态的原理,多态的底层还有一些不常见的关键字的介绍(final,override). 文章内容如下: 1:多态的概念 2:多态的定义与实现 3:多态的原理 4:抽象类 文章正式开始 1:多态的概念 多…...

8.Linux按键驱动-中断下半部

1.编程思路 1.1在gpio结构体中添加tasklet_struct结构体 1.2在probe函数中初始化tasklet结构体 1.3在中断服务程序中调度tasklet 1.4在这个函数中执行其它任务 2.代码: 应用程序和Makefile和上节一致 https://blog.csdn.net/weixin_40933496/article/details/1…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...