当前位置: 首页 > article >正文

【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.单位 = '财会系';

2.    将记录('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;

4.    将数据库类的图书插入到表ts1中,数据库类图书包含书“数据库”和“Fox”两个关键字。

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

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

5.    将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;

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

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

7.    将所有的高级职称(包含“教授”两个字)、姓名为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;

 

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

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

 

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

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

10.    删除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;


http://www.kler.cn/a/388342.html

相关文章:

  • RustDesk内置ID服务器,Key教程
  • word无法创建工作文件,检查临时环境变量。
  • moviepy将图片序列制作成视频并加载字幕 - python 实现
  • Stream API 的设计融合了多个经典设计模式
  • Overleaf中设置表格中的字体为Times New Roman
  • SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
  • 量子计算及其在密码学中的应用
  • Element UI组件Dialog显示闪动问题【解决方案】
  • The First项目报告:MANTRA如何实现世界金融区块链化?
  • 统信UOS开发环境支持Perl
  • 力扣第46题“全排列”
  • 计算机视觉系列----深入浅出了解计算机视觉
  • Leetcode:540. 有序数组中的单一元素
  • Kafka面试题 part-1
  • Unet++改进16:添加DoubleAttention||减少冗余计算和同时存储访问
  • 算法求解 -- (炼码 3853 题)检查是否有路径经过相同数量的0和1
  • 自动化测试工具Ranorex Studio(二十三)-等待UI元素-库超时
  • R和MATLAB及Python混合效应模型
  • 【Flume实操】复制:实时监听 NetCat 端口数据到本地文件系统和 HDFS 案例分析
  • 【工具变量】排污权交易政策试点DID(2000-2023)
  • 如何在Android中自定义property
  • 深入理解数据库事务:概念、特性与控制策略
  • Meta AI 新技术,赋予机器人 “触觉” 的革命
  • 快速克隆你的声音(音色)的网站
  • Mesh网格
  • [Docker#2] 发展历史 | Namespace环境隔离 | Cgroup资源控制