SQL Server中数据表的增删查改

news2025/2/22 11:14:43

文章目录

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

一、增

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

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.coloradmin.cn/o/1396665.html

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

相关文章

【图形学】直线光栅化算法(DDA算法,Bresenham算法和中点算法)

在数学上,直线就是由无穷多个点组成的, 在计算机屏幕显示的话, 需要做一些处理,对于光栅显示器&#xff0c;就是用有限多个点去逼近直线, 我们需要知道每一个像素点的坐标(都是整数) 数学上直线的方程如下 y k x b ykxb ykxb&#xff0c;给定直线的起点坐标 P 0 ( x 0 , y…

Docker部署的gitlab升级指南(15.11.X容器里升级PostgreSQL到13.8)

一、确定当前版本 #进入当前版本容器产看gitlab版本 docker exec -it gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION#显示版本如下 14.4.0二、备份数据&#xff0c;防止升级发生意外 #执行备份命令 docker exec -ti gitlab gitlab-rake gitlab:backup:creat…

MT6789(G99)性能参数/datasheet_MTK联发科4G处理器

联发科MT6789将4G智能手机带入下一代。基于高效率的台积电N6 (6nm级)芯片生产工艺&#xff0c;该芯片可全天候实现出色的游戏&#xff0c;加上大摄像头&#xff0c;快速显示&#xff0c;流畅的流媒体和可靠的全球连接。合作伙伴可以定制联发科Helio G99平台&#xff0c;以满足其…

Python高级编程之IO模型与协程

更多Python学习内容&#xff1a;ipengtao.com 在Python高级编程中&#xff0c;IO模型和协程是两个重要的概念&#xff0c;它们在处理输入输出以及异步编程方面发挥着关键作用。本文将介绍Python中的不同IO模型以及协程的概念、原理和用法&#xff0c;并提供丰富的示例代码来帮助…

go语言(七)----slice的声明方式

1、声明方式一 //声明一个slice1是一个切片&#xff0c;但是并没有给slice分配空间var slice1 []intslice1 make([]int,3)2、声明方式二 声明一个slice切片&#xff0c;同时给slice分配空间&#xff0c;3个空间&#xff0c;初始化值是0var slice1 []int make([]int,3)3、声…

ChatGPT 报错“Oops!We ran into an issue while signing you in…”如何解决?

ChatGPT报错&#xff1a;“Oops&#xff01;We ran into an issue while signing you in, please take abreak and try again soon.” 说明&#xff1a;哎呀&#xff01;我们在登录时遇到了一个问题&#xff0c;请稍作休息并尽快再试一次。 原因&#xff1a; 看到这个提示时&a…

杂记 | 在Linux上使用Docker-compose安装单机版Milvus向量数据库并配置访问控制和可视化面板(Attu)

文章目录 01 Milvus向量数据库简介02 安装前的准备03 安装3.1 创建milvus工作目录3.2 下载并编辑docker-compose.yml3.3 下载milvus.yml文件3.4 启动milvus 04 访问可视化面板并修改密码 01 Milvus向量数据库简介 Milvus是一款开源的向量数据库&#xff0c;它专为AI应用设计&a…

市场监管总局发布区块链和分布式记账技术6项标准,中创积极推动区块链产业发展!

近日&#xff0c;市场监管总局&#xff08;国家标准委&#xff09;批准发布一批重要国家标准&#xff0c;涉及生产生活、绿色可持续等多个领域&#xff0c;这些标准将在引领产业发展、促进绿色转型、助力对外贸易、推动城乡建设、提升生活品质等方面发挥重要作用。 其中一项标…

msvcr100.dll缺失的6种详细有效解决方法

msvcr100.dll究竟是什么文件&#xff1f;为什么会丢失&#xff1f;丢失后会对计算机产生什么影响&#xff1f;本文将详细介绍msvcr100.dll的定义、作用和影响&#xff0c;并给出6个解决msvcr100.dll丢失的方法。 一、msvcr100.dll是什么文件&#xff1f; msvcr100.dll是Micro…

跑通 yolov5-7.0 项目之训练自己的数据集

yolov5 一、yolov5 源码下载二、配置环境&#xff0c;跑通项目三、训练自己的数据集1、获取验证码数据2、标注图片&#xff0c;准备数据集3、开始训练自己的数据集1、train.py 训练数据集2、val.py 验证测试你的模型3、detect.py 正式用你的模型 四、遇到的报错、踩坑1、import…

MySQL的基本查询(附案例)

目录 前言 Create&#xff08;创建&#xff09; 单行数据全列插入&#xff1a; 多行数据指定列插入&#xff1a; 插入否则更新&#xff1a; 替换&#xff1a; Retrieve&#xff08;读取&#xff09; SELECT 列&#xff1a; 全列查询&#xff1a; 指定列查询&#xff1a…

DETR 个人理解

DETR 个人理解 目录 DETR 个人理解 概念说明 transformer网络结构 整体流程 损失计算 整体理解 结果说明 论文 代码 参考链接 个人拙见&#xff0c;仅供参考&#xff0c;欢迎指正交流 这篇论文还是挺重要的&#xff0c;因为是transforms用于目标检测的第一篇论文&am…

LiveGBS流媒体平台GB/T28181常见问题-多个网段如何注册LiveGBS多网段设备收流多个专线不同地址网段收流内外网同时收流

LiveGBS常见问题多个网段如何注册LiveGBS多网段设备收流多个专线不同地址网段收流内外网同时收流 1、背景2、设备接入播放2.1、查看通道2.2、直播播放 3、默认收流地址配置4、其它网络设备收流配置5、搭建GB28181视频直播平台 1、背景 服务器部署的时候&#xff0c;可能有多个…

VIM工程的编译 / VI的快捷键记录

文章目录 VIM工程的编译 / VI的快捷键记录概述笔记工程的编译工程的编译 - 命令行vim工程的编译 - GUI版vim备注VIM的帮助文件位置VIM官方教程vim 常用快捷键启动vi时, 指定要编辑哪个文件正常模式光标的移动退出不保存 退出保存只保存不退出另存到指定文件移动到行首移动到行尾…

cmseasy业务逻辑漏洞

这个cmseasy靶场似乎感觉有点意思&#xff1f; 1.任意修改用户密码 首先肯定先是注册一个账号&#xff08;账号test&#xff0c;密码admin&#xff09;&#xff0c;去找到他的找回密码这里 随便填点数字&#xff08;这个用户名与他的邮箱还是要对应的&#xff09;&#…

基于Springboot+vue鲜花商城系统(前后端分离)

该项目完全免费 项目技术栈&#xff1a; 前端&#xff1a;vueelementUIecharts 后端&#xff1a;SpringbootmybatisMySQL 项目主要功能&#xff1a; 商品信息 商品分类 角色管理 公告管理 轮播图管理 订单管理 收货地址管理 日志管理 部分功能截图&#xff1a;

GaussDB与openGauss有什么相同和不同?

众所周知&#xff0c;GaussDB是华为自主创新研发的分布式关系型数据库&#xff0c;为企业提供功能全面、稳定可靠、扩展性强、性能优越的企业级数据库服务&#xff0c;openGauss是开源数据库&#xff0c;两者之间又是什么样的关系&#xff0c;有什么相同和不同&#xff0c;让我…

【unity学习笔记】语音驱动blendershape

1.导入插件 https://assetstore.unity.com/packages/tools/animation/salsa-lipsync-suite-148442 1.选择小人&#xff0c;点击添加组件 分别加入组件&#xff1a; SALSA EmoteR Eyes Queue Processor&#xff08;必须加此脚本&#xff09;&#xff1a;控制前三个组件的脚本。…

Win10下在Qt项目中配置SQlite3环境

资源下载 官网资源&#xff1a;SQLite Download Page 1、sqlite.h sqlite-amalgamation-3450000.zip (2.60 MiB) 2、sqlite3.def&#xff0c;sqlite3.dll sqlite-dll-win-x64-3450000.zip (1.25 MiB) 3、 win10下安装sqlite3所需要文件 sqlite-tools-win-x64-3450000.zipht…

2024年香港优才计划新政策变化!看清利弊再做申请!

2024年香港优才计划新政策变化&#xff01;看清利弊再做申请&#xff01; 2024年香港优才计划申请新政策变化如下&#xff1a; 变化一&#xff1a;高管加分条件更明确&#xff0c;但条件更严 以前&#xff1a;默认自己在公司处于中高层管理岗&#xff0c;给自己加高管分。 现在…