SQL Server中数据表的增删查改

文章目录

  • 一、增
  • 二、查
  • 三、改
  • 四、删除

一、增

进行增删查改的前提需要在指定数据库中创建数据表,对这块不大理解的可以先看看前面几期文章:
创建数据库
创建数据表

use StudentManageDB
go
insert into Students (StudentName,Gender,Birthday,Age,StudentIdNo,PhoneNumber,StudentAddress,ClassId)
values('张三','女','2023-01-02',2,2023222222222,'012-1212121','北京朝阳区',1)

select * from Students


这段代码执行过程:

  • 首先,选择StudentManageDB作为当前操作的数据库,大家可以改成自己创建的数据库名称。
  • 然后,向Students表插入一名新学生的信息。可以换成自己的表的信息。
  • 最后,查询Students表并返回表中所有的学生信息。
  • StudentName,Gender,Birthday,Age,StudentIdNo,PhoneNumber,StudentAddress,ClassId这些是标里面的题头:

在这里插入图片描述

  1. insert into Students (...) values(...)

    这条命令用于在Students表中插入一条新的记录。它指定了要插入数据的列,并为这些列提供了相应的值。具体来说,它向表中插入了一个名为“张三”的女性学生,出生日期为2023年1月02日,年龄为2岁,学生身份证号码为2023222222222,电话号码为012-1212121,住址为北京朝阳区,且分配到ClassID为1的班级。

  2. select * from Students

    这是一个查询命令,用来从Students表中检索所有的记录(行)和所有的字段(列)。*代表所有列。此命令执行后会返回Students表中的所有数据。就是看我们插入数据成功了没。

二、查

上面的select * from Students就是查询,不过我们可以选择查询:

use StudentManageDB
go
select StudentName,gender,Age from Students where age<>22

这段SQL代码用于从数据库中检索信息和指定当前操作的数据库:

  1. select StudentName, gender, Age from Students where age<>22

    这是一个查询命令,用于从Students表中选取姓名(StudentName)、性别(gender)和年龄(Age)这三个字段的值,但是有一个条件,即年龄(Age)不等于22。<>是SQL中的不等于操作符。这个查询将返回所有年龄不为22岁的学生的名字、性别和年龄信息。
    在这里插入图片描述
    注意:
    select语句经常与where子句联合使用。select用来指定从数据库表中检索哪些列的数据,而where子句用来指定检索条件,以便对结果进行过滤,仅返回满足特定条件的行。这种结合使用可以使得查询结果更加精确,符合用户的特定需求。

例如,有一个名为Employees的表,我们只想获取年龄大于30岁的员工的姓名和部门,SQL查询语句:

select EmployeeName, Department
from Employees
where Age > 30;

这里,select语句后面紧跟着from子句指定了要从哪个表中检索数据,where子句则定义了过滤条件。

  1. use StudentManageDB

    这条命令告诉数据库管理系统后续的操作都将针对名为StudentManageDB的数据库。这通常是为了确保操作在正确的数据库上执行。

这两个命令的执行顺序应该是先执行use StudentManageDB来选定数据库,然后执行select语句来检索数据。

三、改

use StudentManageDB
go
update Students set Gender ='男',Age=25 where StudentId=10000
select * from Students

这段代码是用于执行数据库操作的一系列SQL语句,更新特定学生的性别和年龄,同时查询并返回Students表中所有学生的数据。

  1. use StudentManageDB;

    这条语句用于指定后续的数据库操作将在StudentManageDB数据库上进行。use语句用来选择或者切换当前的数据库上下文。

  2. go

    GO是SQL Server Management Studio (SSMS) 中使用的一个批处理命令,它告诉SSMS执行前面的所有SQL语句。实际上,它是一个信号,告诉SSMS(数据库管理系统,就是我们的软件)到此为止是一个批次的结束。go并不是SQL语言的一部分,它在SQL Server工具中用于分割SQL语句。

  3. update Students set Gender ='男', Age=25 where StudentId=10000;

    这条update语句用于修改Students表中的数据。它将性别Gender字段更新为’男’,将年龄Age字段更新为25,条件是StudentId(学生ID)等于10000的学生。这意味着只有当记录的StudentId字段的值为10000时,该记录的GenderAge字段才会被更新。

  4. select * from Students;

    和上面一样,这是一个select语句,用来从Students表中检索所有的列(*是一个通配符,代表所有列)的所有行的数据。执行这条语句后,会展示Students表中所有学生的信息。
    总结一下,修改的语法:
    update <表名> set<列名=更新值>[where <更新条件>]

四、删除

在了解这个只是之前,我们先了解一下外键的概念:

在SQL中,外键是一个字段(或字段的集合),它用来确保一个表中的数据引用另一个表中的数据,从而维护数据之间的引用完整性。外键对应另一张表中的主键,确保了所引用的数据的存在。

例如,假设我们有两个表:StudentsClasses

Classes 表:

ClassIDClassName
1Math
2Science
3Literature

在这个例子中,ClassIDClasses 表的主键。

Students 表:

StudentIDStudentNameClassID
101John Doe1
102Jane Smith2
103Emily Jones3

Students 表中,ClassID 是一个外键,因为它引用了 Classes 表中的主键 ClassID。这样就确保了每个学生都被分配到了一个有效的班级。如果尝试插入一个引用不存在的 ClassID 的记录到 Students 表中,数据库将会抛出一个错误,因为这将违反外键约束。例如,如果尝试添加一个 ClassID 为 4 的学生(假设 Classes 表中没有 ClassID 为 4 的班级),这将会失败。
接下来是几种删除的方式:

在 SQL Server Management Studio (SSMS) 中,删除数据表中的数据主要有以下几种方式:

  1. delete语句:用于根据指定的条件删除表中的行。

    例如:

    delete from table_name where some_condition;
    

    使用delete时需小心,因为如果不指定条件(where子句),它会删除表中的所有行。永远确保在delete语句中使用正确的过滤条件,以避免意外删除额外的数据。
    注意: 如果我们删除的数据被外键引用,那么再加新数据的时候标识列会继续增长,像这样:
    在这里插入图片描述
    这个表中,班级被外键引用,我们删除了机械184(第四行),新增了机械185,但是不会再有4了,自动就变成5了。

  2. truncate table语句:用于删除表中的所有行,但不删除表本身。

    例如:

    truncate table table_name;
    

    truncate table通常比delete无条件语句更快,因为它不记录每行的删除动作。但是它是不可回滚的(在执行后不能恢复数据),并且会重置任何自增的身份列。此外,truncate无法在有外键引用的表上使用。

  3. drop table语句:用于完全删除表及其数据。

    例如:

    drop table table_name;
    

    使用drop table语句将删除整个表,包括表结构和所有数据,操作是不可逆的。所以在使用之前要十分确定是否真的想要删除整个表。

在操作删除数据的时候,要注意以下几点:

  • 备份数据:在执行删除操作前,应先备份相关的数据,以便在操作错误时能够恢复数据。
  • 使用where子句:在使用delete语句时,务必使用where子句指定条件,避免删除不必要的数据。
  • 考虑事务:如果需要对删除操作进行回滚(后面解释),应在事务中执行delete操作,并在确认无误后提交事务。
  • 外键约束:检查是否有外键约束与需要删除的数据相关联,delete操作可能会因违反外键约束而失败。
  • 触发器影响:了解是否有任何触发器与要删除的数据相关联,这些触发器可能会在删除操作执行时触发额外的动作。
  • 性能考虑:在删除大量数据时,delete操作可能会影响数据库性能,应考虑在低峰时段进行操作,或使用批处理删除以减少对性能的影响。

回滚:
回滚(Rollback)是数据库事务处理中的一个概念,指的是将数据库从某个状态恢复到之前的某个状态。在执行SQL语句,特别是修改数据的操作时(如insertupdatedelete),如果操作过程中发生错误,或者有意识地需要撤销操作所做的更改,可以用回滚来取消这次事务所做的所有操作。

在SQL中,回滚通常使用rollback关键字来实现,它与begin transactioncommit关键字一起使用,来定义一个事务的边界。

例如:

begin taansaction; -- 开始事务

update Account set Balance = Balance - 100 where AccountId = 'A1'; -- 假设从账户A1扣除100
update Account set Balance = Balance + 100 where AccountId = 'A2'; -- 将100添加到账户A2

-- 假设某种检查失败,需要撤销前面的操作
rollback transaction; -- 回滚事务,撤销上面的两个update操作

-- 如果所有操作成功,可以提交事务
commit transaction; -- 提交事务,保存所有更改

使用rollback transation后,所有在begin taansaction之后和rollback命令之前的更改都将被撤销,恢复到事务开始前的状态。而commit tranaaction用于确认所有更改,将更改永久保存到数据库中。

在进行重要的批量更新操作时,使用事务是一个良好的实践,因为它提供了一种机制来保证操作的原子性:要么所有更改都被执行,要么所有更改都不被执行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ImageNet Classification with Deep Convolutional 论文笔记

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

【QA】Linux-CentOS-全新虚拟机远程连接

文章目录 文章概述尝试连接问题1&#xff1a;解决拒绝连接的问题问题2&#xff1a;root用户可以远程连接了&#xff0c;其他用户不可以 文章概述 新安装的Linux-CentOS虚拟机进行远程连接&#xff0c;需要完成相关配置 尝试连接 虚拟机进入可视化页面&#xff0c;右键点击打…

【Docker】网络配置及自定义网络的使用

一、引言 1、什么是网络配置 Docker的网络配置主要是指Docker容器与外部网络之间的连接设置&#xff0c;包括容器内部的IP地址、端口号等。Docker提供了多种网络模式&#xff0c;包括bridge、host、none等&#xff0c;以满足不同的需求。 默认情况下&#xff0c;Docker使用brid…

android studio Connect timed out

Gradle Distributions 从上面的网站下载对应的版本 放到这个目录下

OpenCV——双边滤波

目录 一、双边滤波二、C代码三、python代码四、结果展示 OpenCV——双边滤波由CSDN点云侠原创。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫与GPT。 一、双边滤波 双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的…

D2000 debian 11 arm64 aarch64 wine-ce编译安装,运行win32程序 笔记 【失败】

下载源码 yeqiangdebian:~/Downloads$ git clone https://gitee.com/wine-ce/wine-ce Cloning into wine-ce... remote: Enumerating objects: 102, done. remote: Counting objects: 100% (89/89), done. remote: Compressing objects: 100% (83/83), done. remote: Total 10…

【FastAPI】P1 简单实现 a+b

目录 准备工作代码运行 说明&#xff1a;本文通过 FastAPI 实现返回两个参数 ab 的值&#xff1b; 准备工作 默认读者已准备完善 Python IDE工具以及包管理工具。 首先&#xff0c;需要安装 fastapi 和 uvicorn 库&#xff0c;如果没有请使用 pip 进行安装&#xff1a; pip…

k8s的对外服务---ingress

service的作用体现在两个方面&#xff1a; 集群内部&#xff1a;不断追踪pod的变化。他会更新endpoint中的pod对象&#xff0c;基于pod的IP地址不断变化的一种服务发现机制。 集群外部&#xff1a;类似负载均衡器&#xff0c;把流量IP端口&#xff0c;不涉及转发url(http、htt…

电子雨html代码

废话不多说下面是代码&#xff1a; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>Code</title><style>body{margin: 0;overflow: hidden;}</style></head><body><c…

react-app框架——使用monaco editor实现online编辑html代码编辑器

文章目录 ⭐前言&#x1f496;react系列文章 ⭐配置monaco-editor&#x1f496;引入react-monaco-editor&#x1f496;引入react-app-rewired&#x1f496;通过config-overrides.js添加monaco插件配置 ⭐编辑代码的react页面配置&#x1f496;扩展 可自定义配置语言 ⭐效果⭐总…

web开发学习笔记(8.java web后端开发基础知识)

1.使用spring开发的优势&#xff0c;spring发展到今天已经形成了一种开发生态圈&#xff0c;提供了若干个子项目&#xff0c;每个项目用于完成特定的功能。使用spring全家桶&#xff0c;可以做到很多事情&#xff0c;可以很方便的套用很多的组件。 2.pom构成 指定父工程 <p…

Java零基础教学文档第四篇:HTML_CSS_JavaScript(3)

**【JavaScript】 1.JavaScript的简介 1.1 JavaScript的诞生** 在1995年前后&#xff0c;当时世界上的主流带宽为28.8Kbps&#xff0c;现在世界平均下载带宽为21.9Mbps。当时的网民&#xff0c;每提交一次表单&#xff0c;都需要等待很久才能收到服务器的回应&#xff0c;甚至…

GPT-4 现在是否已经足够划算?

我通常使用 GPT 的方式是&#xff0c;先用 GPT-4 来快速搭建一个原型&#xff0c;然后不断优化&#xff0c;直到解决方案能够在 GPT-3.5 模型上运行。 这个方法在我的实践中非常高效&#xff0c;它的一个重要好处是能迅速筛选出那些“行不通”的项目——如果你在几天内都无法使…

循环异步调取接口使用数组promiseList保存,Promise.all(promiseList)获取不到数组内容,then()返回空数组

在使用 vue vant2.13.2 技术栈的项目中&#xff0c;因为上传文件的接口是单文件上传&#xff0c;当使用批量上传时&#xff0c;只能循环调取接口&#xff1b;然后有校验内容&#xff1a;需要所有文件上传成功后才能保存&#xff0c;在文件上传不成功时点击保存按钮&#xff0c…

HarmonyOS自学-Day5(使用List、Stack、RelativeContainer相关组件实现的小案例)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;小案例 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语言基础&#xff0c;非编程小白&#xff09;的 HarmonyOS自学笔记&#xff0c;此类文章笔记我会默认大家都学过前端相关的知识&#xff0c;并常常以实现相关小案例…

软考系分之计算机网络IP地址的表示(IPv4及IPv6)

文章目录 1、概要2、IPv4地址点分十进制和分类表示2.1 IPv4分类表示2.2 IPv4不分类表示2.3 IPv4特殊IP和子网划分 3、IPv6地址4、总结 1、概要 本篇介绍计算机网络中的IP地址&#xff0c;在网络工程师的考试中&#xff0c;IP地址是必考内容&#xff0c;但是在系统分析师的考察中…

Spring5.0 — WebClient(响应式web客户端)

一、介绍 1.1、RestTemplate 同步阻塞代码&#xff0c;http 请求返回响应才继续执行。 1.2、WebClient 1.基于 Reactor 和 Netty。 2.响应式 web 客户端。异步执行不阻塞代码&#xff0c;少量的线程数处理高并发的 Http 请求。 3.集成 Spring WebFlux 框架&#xff0c;可与…

【C语言基础考研向】05 scanf读取标准输入超详解

文章目录 一.scanf函数的原理 样例问题原因解决方法 二.多种数据类型混合输入 错误样例正确样例 一.scanf函数的原理 C语言未提供输入/输出关键字&#xff0c;其输入和输出是通过标准函数库来实现的。C语言通过scanf函数读取键盘输入&#xff0c;键盘输入又被称为标准输入。…

JavaScript 类型判断及类型转换规则

文章目录 JavaScript 类型及其判断使用 typeof 判断类型使用 instanceof 判断类型使用 constructor 和 Object.prototype.toString 判断类型JavaScript 类型及其转换JavaScript 函数参数传递cannot read property of undefined 问题解决方案分析一道网红题目JavaScript 类型判断…

thinkphp 可执行文件think

think 是一个可执行文件&#xff0c;位置&#xff1a;网站根目录 内容&#xff1a;1 定义项目路径 2 加载cll框架文件 shell脚本里第一行的&#xff1a;#!/usr/bin/env php 什么意思 这句#!的含义就是&#xff0c;按照环境变量PATH寻找第一个php程序来执行。 #!/usr/bin/php…
最新文章