SQL-CRUD-2数据库实验

目录

第一关任务描述

相关知识

插入完整内容的行

插入选定内容的行

编程要求

测试说明

第一关代码 

第二关任务描述

相关知识

删除表中的指定行

删除表中的所有行

编程要求

测试说明

第二关代码

第三关任务描述

相关知识

更新表中的指定行

编程要求

测试说明

第三关代码


第一关任务描述

在 sqlserver 中有三个高频使用的数据操作语句 (DML,Data Manipulation Language) ,熟练掌握这三个语句的使用方法,能让大家快速入门 sqlserver 。本关就先为大家重点介绍数据的插入( INSERT )。

相关知识

INSERT 顾名思义,就是向表(table)中插入行。

插入完整内容的行

向表中插入数据最简单的方法,就是使用 INSERT 语句。 INSERT 语句需要你声明要插入内容的表名和内容。举个“栗子”!

假设我们现在要建立一张名为 Customers 的空表,建立过程如下:

USE TestDb
CREATE TABLE Customers
(
cust_id int not null,
cust_name varchar(32) not null,
cust_city varchar(32) not null,
cust_email varchar(32) null
)
--查看表内容
SELECT * FROM Customers

得到的空表是这样的:

接下来,我们要往空表中插入一条内容, 插入 (INSERT) 语句如下:

INSERT INTO Customers
VALUES (
'1000000006',
'Toy Land',
'New York',
NULL
)

如图所示,是我们得到的结果,一条完整的内容已经被填入了空表中。

分析: 在这个例子中,我们把消费者的信息 (values) 依序插入了 Customers 表中。可能有人已经注意到, INSERT INTO 后面只跟了一个表名,这就意味着,我们插入内容的时候必须是依序全内容插入,即使内容为空,也必须用空值 NULL 来填补。

这样的插入虽然简单,但是很危险。一旦表的结构变了,你就会插错内容。下述的方法虽然相对繁琐,其最大的优点就是安全。它列出了你想要插入内容所对应的字段(column),一一对应就不容易出错。 比如:我们换下字段(column) 的顺序,看看会不会成功。

INSERT INTO Customers(
cust_id,
cust_email,
cust_name,
cust_city
)
VALUES (
'1000000006',
NULL,
'Toy Land',
'New York'
)

从结果可以看出,即使打乱了顺序,这种方法也能将内容安全地插入。所以我们推荐写插入语句时,把字段(column)名也一并写进去。

插入选定内容的行

就像我刚才说的,把字段(column)名写入插入语句是个好办法!用这个方法,我们还能忽略某些字段,只插入我们最关心的数据。

比如,我们忽略 cust_email ,为表 Customers 插入内容。

INSERT INTO Customers(
cust_id,
cust_name,
cust_city
)
VALUES (
'1000000006',
'Toy Land',
'New York'
)

从结果可以看出,我们成功地进行了有选择的插入

综上所述,本关主要为大家讲解了数据的插入,祝大家顺利通过本关评测。

编程要求

在右侧根据提示补全语句,具体编程任务是:

  • 补全右侧代码片段中 create database 下 Begin-End 区间的代码,用来建立数据库 school ;

  • 补全右侧代码片段中 create table 下 Begin-End 区间的代码,用来建立空表 teacher ,其中表结构如下图所示;

  • 补全右侧代码片段中 insert 下 Begin-End 区间的代码,用来将 Lucy 插入表中,其中数据内容如下图所示:

测试说明

测试过程:

  • 本关涉及到的测试文件是 test1.shell ,平台将运行用户补全的 step1.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

第一关代码 

-- ********** create database ********** --
-- ********** Begin ********** --
create database school;-- ********** End ********** --
gouse school
go-- ********** create table ********** --
-- ********** Begin ********** --
create table teacher(ID int not null,Name varchar(20) not null,sex char(2) not null,Phone varchar(20) default null
);-- ********** End ********** --
goSET NOCOUNT ON-- ********** insert ********** --
-- ********** Begin ********** --
insert into teacher (ID,Name,sex)values(1,'Lucy','F');-- ********** End ********** --
go


第二关任务描述

喂一句心灵鸡汤:人生,从来都没有 delete 键,你能做的,只有负重前行,心向阳光。

真的是这样吗?至少在虚拟世界,后悔药是有的卖的,你是可以重新来过的。

本关就为各位提供上帝视角般的 delete 键,接下来我们会重点介绍数据的删除(DELETE)。

相关知识

使用 DELETE 语句可以从表中删除数据。 DELETE 的两种用法如下所示:

  • 删除表中的指定行;

  • 删除表中的所有行。

删除表中的指定行

DELETE FROM 后面需要你指定删除内容所在的, WHERE 语句是过滤语句,它用来帮你寻找哪条内容是你想要删除的。在下面的例子中,只有消费者 1000000006 的内容才会被删除。

DELETE FROM Customers WHERE cust_id=1000000006

目前原始表有两条内容:

运行后我们成功地删除了 Toy Land 的数据。

删除表中的所有行

DELETE FROM Customers

如果需要删除表中所有的行,只需要省略 WHERE 语句即可。

数据的删除就介绍到这里了,是不是跃跃欲试呢?

编程要求

根据右侧提示补全语句,具体编程任务是:

  • 补全右侧代码片段中 create database 下 Begin-End 区间的代码,用来建立数据库 website ;

  • 补全右侧代码片段中 create table 下 Begin-End 区间的代码,用来建立空表 shopping ,其中表结构如下图所示:

  • 补全右侧代码片段中 insert 下 Begin-End 区间的代码,用来插入内容 amazon ,具体内容如下表所示: (我们已经事先帮你插入了内容 eBay ,所以你只要关注 amazon 的插入即可)
  • 补全右侧代码片段中 delete 下 Begin-End 区间的代码,用来删除内容 eBay 。

如果我们使用语句:

create TABLE shopping
(
ID int IDENTITY(1,1) not null
)

会使字段 ID 的数字自增。本关要求同学们使用该语句,但同学们插入内容的时候,请不要给字段 ID 赋值,因为它自己会自增!

测试说明

测试过程:

  • 本关涉及到的测试文件是 test2.shell ,平台将运行用户补全的 step2.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

第二关代码

-- ********** create database ********** --
-- ********** Begin ********** --
create database website;-- ********** End ********** --
gouse website
go-- ********** create table ********** --
-- ********** Begin ********** --
create table shopping (ID int IDENTITY(1,1) not null,Name varchar(20) not null,address varchar(30) not null
);-- ********** End ********** --
goSET NOCOUNT ONinsert into shopping (Name, address) values ('eBay', 'www.ebay.com')
goSET NOCOUNT ON-- ********** insert ********** --
-- ********** Begin ********** --
insert into shopping (Name, address) 
values 
('amazon', 'www.amazon.com')-- ********** End ********** --
goSET NOCOUNT ON-- ********** delete ********** --
-- ********** Begin ********** --
delete from shopping 
where Name='eBay';-- ********** End ********** --
go


第三关任务描述

中国有句俗语:人生在世熟能无过,过而能改,善莫大焉!

错了并不可怕,改了还是一条好汉!本关就为各位着重介绍数据的更新 (UPDATE)。学习完后,你也有机会亲手试试,如何来修改数据库中的数据。

相关知识

通过上一关的学习,我们已经掌握了 DELETE 操作,相信很多人都躺着过关了!同样,UPDATE 也非常的简单,只要记住 UPDATE 语句三要素,就能轻松掌握。它们分别是:

  • 需要更新的表(table)名;

  • 需要更新的字段(column)名和它的新内容(row);

  • 决定更新哪一条内容(row)的过滤条件。

让我们来看看,它是怎么更新表里的内容的吧。

更新表中的指定行

消费者 1000000005 之前没有在记录里留下他的 email ,如下图所示:

但是,现在他有了一个新邮箱,所以需要更新数据库里的数据,更新代码如下所示:

UPDATE Customers
SET cust_email = 'max@yahoo.com'
WHERE cust_id = '1000000005'

看上去不难吧,来练练手吧!

编程要求

在右侧补全语句,具体编程任务是:

  • 补全右侧代码片段中 create database 下 Begin-End 区间的代码,用来建立数据库 Books ;

  • 补全右侧代码片段中 create table 下 Begin-End 区间的代码,用来建立空表 prices ,其中表结构如下图所示:

  • 补全右侧代码片段中 insert 下 Begin-End 区间的代码,用来插入内容 Harry Potter ,具体内容如下表所示: (我们已经事先帮你插入了内容 Walden ,所以你只要关注 Harry Potter 的插入即可)

  • 补全右侧代码片段中 update 下 Begin-End 区间的代码,用来将 Walden 的价格更新为 $6 。
小提示

如果我们使用语句:

create TABLE prices
(
ID int IDENTITY(1,1) not null
)

会使字段 ID 的数字自增。本关要求同学们使用该语句,但同学们插入内容的时候请不要给字段 ID 赋值,因为它自己会自增!

测试说明

测试过程:

  • 本关涉及到的测试文件是 test3.shell ,平台将运行用户补全的 step3.sql 文件,得到数据;

  • 将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

第三关代码

-- ********** create database ********** --
-- ********** Begin ********** --
create database Books;
-- ********** End ********** --
gouse Books
go-- ********** create table ********** --
-- ********** Begin ********** --
create table prices
(ID int IDENTITY(1,1) not null,Name varchar(20) not null,price varchar(30) not null
);-- ********** End ********** --
goSET NOCOUNT ON-- ********** insert ********** --
-- ********** Begin ********** --
insert into prices (Name,price)values('Harry Potter','$128')-- ********** End ********** --
goSET NOCOUNT ONinsert into prices (Name,price)values ('Walden', '$5')
goSET NOCOUNT ON-- ********** update ********** --
-- ********** Begin ********** --
update prices
set price='$6'
where ID=2;-- ********** End ********** --
go

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

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

相关文章

【Pytorch入门】小土堆PyTorch入门教程完整学习笔记(详细笔记并附练习代码 ipynb文件)

小土堆PyTorch入门教程笔记 最近在观看PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】顺便做点笔记,方便回看,同时也希望记录的笔记能够帮助到更多在入门的小伙伴~ 【注】仅记录个人觉得重要的知识&#xff0c…

cas学习2:idea里搭建cas项目

在上篇中介绍了cas服务在tomcat中怎么启动的及某j集成cas,这篇讲下idea怎么集成cas成一个项目,为后续的定制自己的项目做好铺垫。 1.下载CAS 模板 Overlay Template,我这里使用 Apereo CAS 5.3 版本,JDK需要1.8 地址&#xff1a…

JavaWeb后端——HTTP协议/Tomcat

HTTP HTTP协议:无状态,对事务处理没有记忆能力。每次请求-响应都是独立的。后一次请求不会记录前一次请求数据。缺点:多次请求之间不能共享数据,优点:速度快。 HTTP协议请求报文: HTTP协议响应报文&#x…

分布式算法 - 雪花算法

雪花算法是一种用于生成全局唯一ID的分布式算法,用于解决分布式系统中生成唯一ID的需求。 雪花算法的核心思想是将生成的ID分为不同的部分,每个部分代表不同的含义。通常情况下,一个雪花 ID由3个部分组成: 时间戳:时…

JVM篇详细分析

JVM总体图 程序计数器: 线程私有的,每个线程一份,内部保存字节码的行号,用于记录正在执行字节码指令的地址。(可通过javap -v XX.class命令查看) java堆: 线程共享的区域,用来保存对…

Java中的基本数据与运算(关键字、标识符、运算符)

目录 一、关键字 二、标识符 三、注释 四、变量 五、数据类型 六、运算符 6.1 算术运算符 6.2 比较运算符 6.3 逻辑运算符 6.4 位移运算符 一、关键字 在 Java 中内置了很多有特殊意义的单词,这些单词不能做为类名、方法名、变量名来使用。关键字必须是小…

Calendar日历类

Calendar 类是一个抽象类,为我们提供了关于日期计算的功能,比如:年、月、日、时、分、秒的展示和计算。 GregorianCalendar 是Canlendar 的子类,表示公历。 注:月份的表示,一月是0,二月是1&am…

【echart】数据可视化+vue+vite遇到问题

1、vue3使用echars图表报错:"Initialize failed:invalid dom" 原因是因为:Dom没有完成加载时,echarts.init() 就已经开始执行了,获取不到Dom,无法进行操作 解决:加个延时 onMounted(async () …

Elasticsearch相关问题

相关问题: 1、Elasticsearch.Net和NEST的区别? Elasticsearch 官方为 .NET 提供了 2 个官方客户端库:Elasticsearch.Net 和 NEST。 Elasticsearch.Net 和 NEST对比说明: 可以简单理解为 Elasticsearch.Net 是 NEST的一个子集。N…

MATLAB:优化与规划问题

一、线性规划 % 线性规划(Linear programming, 简称LP) fcoff -[75 120 90 105]; % 目标函数系数向量 A [9 4 7 54 5 6 105 10 8 53 8 9 77 6 4 8]; % 约束不等式系数矩阵 b [3600 2900 3000 2800 2200]; % 约束不等式右端向量 Aeq []; % 约束等式系…

实验2-spark编程

实验目的 (1)通过实验掌握Spark的基本编程方法; (2)熟悉RDD到DataFrame的转化方法; (3)熟悉利用Spark管理来自不同数据源的数据。 实验内容 1.Spark基本操作 请参照…

[TS面试]TS中如何设计Class声明

TS中如何设计Class声明 class Greeter{greeting: string;constructor(message:string){this.greeting message}getGreeting():string{return this.greeting}sayGreeting():string{return Say ${this.greeting}} } const greeter new Greeter(Hello)

ROUYI框架地址

1、原版系统地址与文档 https://gitee.com/dromara/RuoYi-Cloud-Plus?_fromgitee_search 源码地址 https://plus-doc.dromara.org/#/ruoyi-cloud-plus/home 后端地址 https://plus-doc.dromara.org/#/plus-ui/home 前端地址 前端代码地址: RuoYi-Vue-Plus: 多租户…

maven的依赖继承

先说一下创建子maven工程的步骤 继承 继承的作用:在父工程中,统一管理项目中的依赖信息,进行统一的版本控制 继承的背景是:对一个大型的项目进行了模块拆分,一个project下,创建了很多的module&#xff0c…

东特科技现已加入2024第13届国际生物发酵产品与技术装备展

参展企业介绍 温州东特科技有限公司是一家集设计、生产、销售及服务为一体的卫生级流体设备企业。专业从事各种乳食品、制药、化工、啤酒设备、不锈钢卫生级阀门,管件,视镜,及非标配件定制等产品的销售与服务。先进的设计理念专业的技术优势一…

为啥从我激情满满的要做前端开发,到现在不断的怀疑自己能不能学会?

一开始,我对前端开发充满了热情和期待,认为只要努力就能掌握那些看似复杂的技能,比如HTML、CSS和JavaScript等基础技能,就能够构建出功能丰富、交互性强的网页应用。 然而,随着学习的深入,我发现前端开发远…

matlab 复制点云

目录 一、概述1、算法概述2、主要函数3、参考文献二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 1、算法概述

鸿蒙开发之AES加解密

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 简介 这个标准用来替代原先的DES(Data Encryption Standard)&#x…

docker部署ubuntu

仓库: https://hub.docker.com/search?qUbuntu 拉一个Ubuntu镜像 docker pull ubuntu:18.04 查看本地镜像: docker images 运行容器 docker run -itd --name ubuntu-18-001 ubuntu:18.04 通过ps命令可以查看正在运行的容器信息 docker ps 进入容器 最…

数据文件操作

一、什么是文件? 硬盘(磁盘)上的文件是文件。 在程序设计中,我们从文件功能的角度来分类的话,可以分为程序文件和数据文件。 1.1程序文件 程序文件包含源程序文件(后缀为.c),目标文…