第1关:数据的插入
任务描述
在 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

得到的空表是这样的:

sql server建表添加数据 sql server表中添加数据_代码片段


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

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

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

sql server建表添加数据 sql server表中添加数据_sql server建表添加数据_02


整体执行过程如下图所示:

sql server建表添加数据 sql server表中添加数据_代码片段_03


分析:

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

sql server建表添加数据 sql server表中添加数据_数据_04


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

比如:我们换下字段(column) 的顺序,看看会不会成功。

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

sql server建表添加数据 sql server表中添加数据_补全_05


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

插入选定内容的行

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

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

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

sql server建表添加数据 sql server表中添加数据_代码片段_06


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

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

编程要求

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

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

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

sql server建表添加数据 sql server表中添加数据_sql server建表添加数据_07


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

sql server建表添加数据 sql server表中添加数据_代码片段_08


测试说明

测试过程:

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

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

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

sql server建表添加数据 sql server表中添加数据_sql server建表添加数据_09


开始你的任务吧,祝你成功!

参考代码:

-- ********** create database ********** --
-- ********** Begin ********** --
create database school
-- ********** End ********** --
go
use 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) null
)
-- ********** End ********** --
go
SET NOCOUNT ON
-- ********** insert ********** --
-- ********** Begin ********** --
insert into teacher (ID, Name, sex) values (1, 'Lucy', 'F')
-- ********** End ********** --
go

第2关:数据的删除

任务描述

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

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

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

相关知识

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

删除表中的指定行;

删除表中的所有行。

删除表中的指定行

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

DELETE FROM Customers WHERE cust_id=1000000006

目前原始表有两条内容:

sql server建表添加数据 sql server表中添加数据_补全_10


我们运行一遍 DELETE 语句看看效果!

sql server建表添加数据 sql server表中添加数据_代码片段_11


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

删除表中的所有行

DELETE FROM Customers

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

sql server建表添加数据 sql server表中添加数据_补全_12


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

编程要求

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

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

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

sql server建表添加数据 sql server表中添加数据_代码片段_13


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

sql server建表添加数据 sql server表中添加数据_sql server建表添加数据_14


补全右侧代码片段中 delete 下 Begin-End 区间的代码,用来删除内容 eBay 。

小提示

如果我们使用语句:

create TABLE shopping

(

ID int IDENTITY(1,1) not null

)

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

测试说明

测试过程:

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

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

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

sql server建表添加数据 sql server表中添加数据_代码片段_15


开始你的任务吧,祝你成功!

参考代码:

-- ********** create database ********** --
-- ********** Begin ********** --
create database website
-- ********** End ********** --
go
use 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 ********** --
go
SET NOCOUNT ON
insert into shopping (Name, address) values ('eBay', 'www.ebay.com')
go
SET NOCOUNT ON
-- ********** insert ********** --
-- ********** Begin ********** --
INSERT INTO shopping(Name, address)
VALUES ('amazon','www.amazon.com')
-- ********** End ********** --
go
SET NOCOUNT ON
-- ********** delete ********** --
-- ********** Begin ********** --
delete from shopping where Name='eBay'
-- ********** End ********** --
go

第3关:数据的更改

任务描述

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

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

相关知识

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

需要更新的表(table)名;

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

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

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

更新表中的指定行

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

sql server建表添加数据 sql server表中添加数据_sql server建表添加数据_16


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

UPDATE Customers

SET cust_email = ‘max@yahoo.com’

WHERE cust_id = ‘1000000005’

更新过程如下所示:

sql server建表添加数据 sql server表中添加数据_数据_17


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

编程要求

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

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

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

sql server建表添加数据 sql server表中添加数据_代码片段_18


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

sql server建表添加数据 sql server表中添加数据_数据_19


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

小提示

如果我们使用语句:

create TABLE prices

(

ID int IDENTITY(1,1) not null

)

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

测试说明

测试过程:

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

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

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

sql server建表添加数据 sql server表中添加数据_补全_20


开始你的任务吧,祝你成功!

参考代码:

-- ********** create database ********** --
-- ********** Begin ********** --
create database Books
-- ********** End ********** --
go
use 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 ********** --
go
SET NOCOUNT ON
-- ********** insert ********** --
-- ********** Begin ********** --
insert into prices (Name, price) values ('Harry Potter', '$128')
-- ********** End ********** --
go
SET NOCOUNT ON
insert into prices (Name, price) values ('Walden', '$5')
go
SET NOCOUNT ON
-- ********** update ********** --
-- ********** Begin ********** --
UPDATE prices
SET price = '$6'
WHERE Name = 'Walden'
-- ********** End ********** --
go