SQL如何导入数据以及第一次上机作业

如何导入excel数据

首先得学会导入数据
使用excel格式不需要改成其它格式(如csv,txt),因为你改了到时候还是会报错(实践过使用Sum统计总数一直说我数据格式有问题)
首先右键TSGL数据库->任务->导入数据
在这里插入图片描述

点击next
在这里插入图片描述

记得先打开Book.Excel然后再到下面这个界面
在这里插入图片描述

数据源选择Microsoft Excel
Excel文件路径选择你自己所需要导入的文件数据
Excel版本选择Microsoft Excel 97-2003这个版本,然后点击next
在这里插入图片描述

到选择目标界面,首先把目标选择SQL Server Native Client
然后我的是使用SQL Server身份验证
然后选择你所要导入的数据库名称,然后点击Next
在这里插入图片描述

然后默认Next
在这里插入图片描述

到选择源表和源视图
勾选表和视图,然后可以点击编辑映射修改参数啥的,我这里选择默认,点击Next
在这里插入图片描述

点击Next
在这里插入图片描述

点击Finish
在这里插入图片描述

如果以下界面没有Error,那么恭喜你成功的导入了数据!
在这里插入图片描述

接着刷新你所导入的表,会发现有三个表那么问题来了到底哪个才是我们所需要的呢

在这里插入图片描述

这个时候你只需要把Sheet1$重命名为Book然后把其它两个表给删了就好啦(当然如果你之前里面已经有Book表的话要先删除它奥~)
所以到这里才是真正的恭喜你成功的导入了数据!!!

2第一次上机作业

接下来开始做题这是我的第一次上机作业
首先展示四个所需要导入的数据表
1.Book
在这里插入图片描述
2.Reader
在这里插入图片描述
3.Lend
在这里插入图片描述
4.History
在这里插入图片描述
1从 Reader 表中查询网络工程专业学生的借书证号、姓名和借阅数量。

USE TSGL 
GO
SELECT Lno,Rname,BorNum
FROM Reader 
WHERE Spec='网络工程'

在这里插入图片描述
2查询网络工程专业学生的借书证号、姓名和借书数,将列标题显示为中文。

USE TSGL 
GO
SELECT Lno AS 借书证号,Rname AS 姓名,BorNum AS 借阅数量
FROM Reader 
WHERE Spec='网络工程'

在这里插入图片描述

3从 Book 表中查询清华大学出版社出版的单价为30~40 元的图书信息,按单价进行降序排列。

USE TSGL 
GO
SELECT *
FROM Book 
WHERE Press = '清华大学出版社' AND Price >= 30 AND Price <= 40
ORDER BY Price DESC

在这里插入图片描述
4 从 Book 表中查询书名中包含“计算机”三个字的图书信息。

USE TSGL 
GO
SELECT *
FROM Book 
WHERE Bname LIKE '%计算机%'

在这里插入图片描述
5从Book表中查询是由姓“刘”或姓“王”作者撰写的图书信息

USE TSGL 
GO
SELECT *
FROM Book 
WHERE Author LIKE '%[刘 or 王]%'

在这里插入图片描述

6 从Book 表中查询非“清华大学出版社”和“电子工业出版社”出版的图书信息

USE TSGL 
GO
SELECT *
FROM Book 
WHERE Press NOT IN ('清华大学出版社','电子工业出版社')

在这里插入图片描述
7从Lend表中查询目前有借阅记录的借书证号。

USE TSGL 
GO
SELECT DISTINCT Lno
FROM Lend 
WHERE Lno IS NOT NULL

在这里插入图片描述
8 从Lend表中查询目前借阅记录的信息及已借阅天数。

USE TSGL  
GO
SELECT
    L.Lno AS '读者编号',
    L.ISBN AS '图书ISBN',
    L.Barno AS '图书编号',
    L.Bordate AS '借书日期',
    H.Retdate AS '归还日期',
    DATEDIFF(DAY,L.Bordate,GETDATE()) AS '已借阅天数'
FROM
    Lend AS L
LEFT JOIN
    History AS H
ON
    L.Lno = H.Lno
    AND L.ISBN = H.ISBN
AND L.Barno = H.Barno

在这里插入图片描述

use TSGL
go
select*,datediff(d,bordate,'2013-4-1')
from lend
where bordate is not null

在这里插入图片描述

use TSGL
go
select*,datediff(d,bordate,getdate())
from lend
where bordate is not null

在这里插入图片描述

9 统计馆藏图书的总册数

USE TSGL  
GO
SELECT SUM(Copynum)
FROM Book

在这里插入图片描述
10 统计馆藏图书中各出版社出版的图书数量,查询结果显示各出版社名称及图书数量,按出版社的图书数量进行降序排列。

USE TSGL  
GO
SELECT Press,SUM(InvNum) AS '图书数量'
FROM Book 
GROUP BY Press 
ORDER BY '图书数量' DESC

在这里插入图片描述
11 查询馆藏图书中出版图书数不少于三种的出版社,结果显示出版社名称和图书数量。

USE TSGL  
GO
SELECT Press,SUM(Copynum)
FROM Book  
GROUP BY Press
HAVING COUNT(Press)>=3

在这里插入图片描述
12查询借书数量最多的两位读者的借书证号和借书数量。

USE TSGL  
GO
SELECT TOP 2 Lno,BorNum
FROM Reader
ORDER BY BorNum DESC

在这里插入图片描述
13 每20元为一个价位段,从Book表中统计每个价位段中图书的数量,即在馆图书中单价在[0,20),[20,40),[40,60),…的图书数量

USE TSGL  
GO
SELECT
    PriceRange AS '价位段',
    COUNT(*) AS '图书数量'
FROM (
    SELECT
        Price,
        CASE
            WHEN Price >= 0 AND Price < 20 THEN '[0,20)'
            WHEN Price >= 20 AND Price < 40 THEN '[20,40)'
            WHEN Price >= 40 AND Price < 60 THEN '[40,60)'
            WHEN Price >= 60 AND Price < 80 THEN '[60,80)'
        END AS PriceRange
    FROM Book
) AS PriceRanges
GROUP BY PriceRange;

在这里插入图片描述
14查询 Reader 表中每个系部的男女生人数,按系部和性别同时进行排序。

USE TSGL  
GO
SELECT Dept,Sex,COUNT(*)AS'人数'
FROM Reader
GROUP BY Dept,Sex
ORDER BY Dept,Sex

在这里插入图片描述
15查询 Reader 表中计算机系各学生的借书证号、姓名和评价,评价是对“借阅数量”内容进行如下替换:若借书数量为0,替换为“不爱学习”;若借书数量小于2,替换为“不够勤奋”;若借书数量为3~4,替换为“勤奋”;若借书数量大于等于5,替换为“很勤奋”。

USE TSGL  
GO
SELECT Lno 借书证号,Rname 姓名,评价=
 CASE
 WHEN  BorNum = 0 THEN '不爱学习'
 WHEN  BorNum<=2 THEN '不够勤奋'
 WHEN  BorNum>=3 AND BorNum<=4 THEN'勤奋'
 WHEN  BorNum>=5 THEN '很勤奋'
 END 
FROM Reader
where dept='计算机系'

在这里插入图片描述

16查询Reader表中每个系部的男女生人数,系部总人数以及读者总数。

USE TSGL  
GO
SELECT
    Dept AS '系部',
    SUM(CASE WHEN Sex = '男' THEN 1 ELSE 0 END) AS '男生人数',
    SUM(CASE WHEN Sex = '女' THEN 1 ELSE 0 END) AS '女生人数',
    COUNT(*) AS '系部总人数'
FROM
    Reader
GROUP BY
Dept
WITH ROLLUP;

在这里插入图片描述

首先查看各系部的男女人数

USE TSGL  
GO
SELECT dept '系部',sex,'性别',count(Lno) 人数
from reader
group by rollup(dept,sex)

在这里插入图片描述
然后

use tsgl
go
select dept 系部,count(Lno)  读者总数,sum(case when Reader.sex='男' then 1 else 0 end) 男生人数,女生人数=sum(case when Reader.sex='女' then 1 else 0 end),总人数=sum(case when Reader.sex='男' then 1 else 0 end)+sum(case when Reader.sex='女' then 1 else 0 end)
from reader
group by dept

在这里插入图片描述
仅供参考~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unicornlyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值