【SQL实验】更新操作

完整代码在文章末尾【代码是自己的解答,并非标准答案,也有可能写错, 文中可能会有不准确或待完善之处,恳请各位读者不吝批评指正,共同促进学习交流**】**


将素材"图书管理"文件下载到本地,并将其还原到SQL SERVER库中,完成以下操作。

个人因为版本问题还原不了,所以导入.xls文件

导入操作和之前一样

如果不太会,可以去重新看一下

【SQL实验】高级查询(三)含附加数据库操作-CSDN博客

  1. 将财会系读者借书记录存入一个新表ckjy中,保存字段为借书证号、姓名、书名、借书日期。

查询会创建新表 ckjy

SELECT dz.借书证号,dz.姓名,ts.书名,jy.借书日期
INTO ckjy
FROM dz
JOIN jy ON dz.借书证号 = jy.借书证号
JOIN ts ON jy.总编号 = ts.总编号
WHERE dz.单位 = '财会系';

或者

SELECT dzjy.借书证号,姓名,书名,借书日期
INTO ckjy
from dz,jy,ts
where dz.借书证号= jy.借书证号
and jy.总编号= ts.总编号
and 单位= '财会系'

使用 CREATE TABLE 创建了一个名为 ckjy 的新表,包含字段 借书证号, 姓名, 书名, 借书日期

通过 INSERT INTO 从三个表(dz, jy, ts)中选择符合条件的数据,并插入到 ckjy 表中

CREATE TABLE ckjy (
    借书证号 CHAR(8),
    姓名 CHAR(8),
    书名 CHAR(8),
    借书日期 CHAR(8)  
);

INSERT INTO ckjy (借书证号, 姓名, 书名, 借书日期)
SELECT dz.借书证号, dz.姓名, ts.书名, jy.借书日期
FROM dz
JOIN jy ON dz.借书证号 = jy.借书证号
JOIN ts ON jy.总编号 = ts.总编号
WHERE dz.单位 = '财会系';
  1. 将记录('123','沈小霞','大学英语','2009-10-15'),('125','张自强','线性代数','2011-4-15')插入到ckjy表中。

    INSERT INTO ckjy (借书证号, 姓名, 书名, 借书日期)
    VALUES ('123', '沈小霞', '大学英语', '2009-10-15'),
    ('125', '张自强', '线性代数', '2011-4-15');

3. 根据ts表的结构用命令建立一个新表ts1。

直接建

只要空表的话

-- 1. 将 ts 表的数据插入到 ts1 表中
SELECT *
INTO ts1
FROM ts;

-- 2. 删除 ts 表中的所有数据
DELETE FROM ts;

创建一个空的新表 ts1,你可以使用 CREATE TABLE 语句,并从 ts 表中选择表结构,而不复制数据

SELECT *
INTO ts1
FROM ts
WHERE 1 = 0;
  1. 将数据库类的图书插入到表ts1中,数据库类图书包含书"数据库"和"Fox"两个关键字。

    --4、
    INSERT INTO ts1 (总编号, 书名, 作者, 出版单位, 分类号, 单价)
    SELECT 总编号, 书名, 作者, 出版单位, 分类号, 单价
    FROM ts
    WHERE 书名 LIKE '%数据库%' AND 书名 LIKE '%Fox%';

% 是通配符,表示匹配任意字符。

  1. 将dz表中的年龄字段利用出生日期字段计算出并填充到各个记录中。

    --5
    UPDATE dz
    SET 年龄 = DATEDIFF(YEAR, 出生日期, GETDATE()) -
    CASE WHEN MONTH(出生日期) > MONTH(GETDATE()) OR (MONTH(出生日期) = MONTH(GETDATE()) AND DAY(出生日期) > DAY(GETDATE())) THEN 1 ELSE 0 END;

  2. 将ts表中所有科学出版社的图书的价格设置成原来价格的八折。

    --6
    UPDATE ts
    SET 单价 = 单价 * 0.8
    WHERE 出版单位 = '科学出版社';

  3. 将所有的高级职称(包含"教授"两个字)、姓名为2个字的读者 插入到新表gjdz表中。

    --7
    CREATE TABLE gjdz (
    借书证号 VARCHAR(20),
    单位 VARCHAR(50),
    姓名 VARCHAR(50),
    性别 VARCHAR(10),
    年龄 INT,
    出生日期 DATE,
    职称 VARCHAR(50),
    地址 VARCHAR(100)
    );

    INSERT INTO gjdz (借书证号, 单位, 姓名, 性别, 年龄, 出生日期, 职称, 地址)
    SELECT 借书证号, 单位, 姓名, 性别, 年龄, 出生日期, 职称, 地址
    FROM dz
    WHERE 职称 LIKE '%教授%' AND LEN(姓名) = 2;

  4. 删除dz表中家住3楼或3楼以下的读者。

    --8
    DELETE FROM dz
    WHERE 地址 LIKE '%3楼%' OR 地址 LIKE '%2层%'OR 地址 LIKE '%1层%';

  1. 删除借阅表中关于计算机基础的借阅信息。

    --9
    DELETE FROM jy
    WHERE 总编号 IN (
    SELECT 总编号
    FROM ts
    WHERE 书名 LIKE '%计算机基础%'
    );

  2. 删除gjdz表。

    --10
    DROP TABLE gjdz;


完整代码:

SELECT dz.借书证号,dz.姓名,ts.书名,jy.借书日期
INTO ckjy
FROM dz
JOIN jy ON dz.借书证号 = jy.借书证号
JOIN ts ON jy.总编号 = ts.总编号
WHERE dz.单位 = '财会系';

--2
INSERT INTO ckjy (借书证号, 姓名, 书名, 借书日期)
VALUES ('123', '沈小霞', '大学英语', '2009-10-15'),
       ('125', '张自强', '线性代数', '2011-4-15');
--3
SELECT *
INTO ts1
FROM ts
WHERE 1 = 0;


--4、
INSERT INTO ts1 (总编号, 书名, 作者, 出版单位, 分类号, 单价)
SELECT 总编号, 书名, 作者, 出版单位, 分类号, 单价
FROM ts
WHERE 书名 LIKE '%数据库%' AND 书名 LIKE '%Fox%';
--5
UPDATE dz
SET 年龄 = DATEDIFF(YEAR, 出生日期, GETDATE()) - 
           CASE WHEN MONTH(出生日期) > MONTH(GETDATE()) OR (MONTH(出生日期) = MONTH(GETDATE()) AND DAY(出生日期) > DAY(GETDATE())) THEN 1 ELSE 0 END;
--6
UPDATE ts
SET 单价 = 单价 * 0.8
WHERE 出版单位 = '科学出版社';
--7
CREATE TABLE gjdz (
    借书证号 VARCHAR(20),
    单位 VARCHAR(50),
    姓名 VARCHAR(50),
    性别 VARCHAR(10),
    年龄 INT,
    出生日期 DATE,
    职称 VARCHAR(50),
    地址 VARCHAR(100)
);

INSERT INTO gjdz (借书证号, 单位, 姓名, 性别, 年龄, 出生日期, 职称, 地址)
SELECT 借书证号, 单位, 姓名, 性别, 年龄, 出生日期, 职称, 地址
FROM dz
WHERE 职称 LIKE '%教授%' AND LEN(姓名) = 2;
--8
--8
DELETE FROM dz
WHERE 地址 LIKE '%3楼%' OR 地址 LIKE '%2层%'OR 地址 LIKE '%1层%';

--9
DELETE FROM jy
WHERE 总编号 IN (
    SELECT 总编号
    FROM ts
    WHERE 书名 LIKE '%计算机基础%'
);
--10
DROP TABLE gjdz;
相关推荐
努力的小雨1 分钟前
快速上手 KSQL:轻松与数据库交互的利器
数据库·经验分享
Gentle5864 分钟前
labview中连接sql server数据库查询语句
数据库·labview
Gentle5865 分钟前
labview用sql server数据库存取数据到一个单元格
数据库·labview
2401_857636397 分钟前
共享汽车管理新纪元:SpringBoot框架应用
数据库·spring boot·汽车
菲兹园长8 分钟前
表的设计(MYSQL)
数据库·mysql
Java Fans23 分钟前
MySQL数据库常用命令大全(完整版——表格形式)
数据库·mysql
起飞的风筝35 分钟前
【redis】—— 环境搭建教程
数据库·redis·缓存
白萝卜弟弟39 分钟前
【MySQL】MySQL函数之JSON_EXTRACT
数据库·mysql·json
gjh120841 分钟前
MySQL常见面试题
数据库·mysql
无敌最俊朗@1 小时前
stm32学习之路——八种GPIO口工作模式
c语言·stm32·单片机·学习