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

软件测试面试之数据库部分

1.取第 4 到5 条记录

--按ID从小到大,查询第到第条数据 
select top4 *from(
    select top5 * from qiche
    order by ID asc
) as TA
order by ID desc

--按ID从小到大,查询第到第条数据
select top 2*from(
    select top 4 *from qiche
    order by ID asc
)as TA
order by ID desc

--按ID从小到大,查询第m到第n条数据
select top nm+1 *from(
    select top n*from qiche
    order by ID asc
)as TA
order by ID desc

2. 有主键情况下如何去重

重复的品牌只剩一条(去重)
delete  from qiche
where id not in(
    select max(id)
    from qiche
    groupby pinpai
)

3.无主键情况下如何去重

--情况:无ID或主键的时候
create table aaa(sname varchar(10))

--1、查询不重复的姓名
select distinct sname from aaa

--2、保存到临时表
select distinct sname into ta from aaa
select *from ta

--3、删除源表数据
delete from aaa

--4、将临时表数据导回源表
insert into aaa select * from ta
select *from aaa

--5、删除临时表
drop table ta

4.数据库查询练习

--查询和张三丰同龄人的信息
select *
from B student
where YEAR(GETDATE())-YEAR(s_birthday)=(
    select YEAR(GETDATE())-YEAR(s_birthday)
    from B_student
    where s_name='张三丰'
)

--查询哪些学生至少学了2门课程
select s name,COUNT(*)as 学习课程数量
from B_student,B_score
where B_student.s_id=B_score.sc_stu_id
group by s name
having COUNT(*)>=2

--查询梅超风有哪些课没考试(无成绩)
select c_name
from B_student,B_course,B_score
where B_student.s_id=B_score.sc_stu_id
    and B_course.cid=B_score.sc_c_id
    and s_name ='梅超风'
    and sc_grade is null

--将高等数学成绩最高的学生的物理成绩加分
update A_studentcourse
set sc_score=sc score +10
where sccno =(
    select c_no
    from A_courseinfo
    where c_subject='物理
)
and sc_sno in(
    select sc_sno
    from A_courseinfo,A_studentcourse
    where A courseinfo.c_no =A_studentcourse.sc_cno
    and c_subject ='高等数学'
    and sc_score =(
        select MAX(sc score)
        from A_courseinfo,A_studentcourse
        where A_courseinfo.c_no =A_studentcourse.sc_cno
        and c_subject ='高等数学'
    )
)

库存查询
--表1:入库表(ID、货物名称、入库数量)【每个物品入库1次】
--表2:出库表(ID、货物名称、出库数量)【每个物品可以出库多次】
--求:每个货物的库存
--总思路:入库总数量-出库总数量
create table ruku(
    r_id int identity(1,1),
    r_name varchar(10),
    r_count int
)

create table chuku(
    c_id int identity(1,1),
    C_name varchar(10),
    c_count int
)
insert into ruku values('苹果',100)
insert into ruku values('樱桃'100)insert
insert into chuku values('苹果',20)
insert into chuku values('苹果'20)
insert into chuku values('樱桃'60)

select r_name,(r_count-su)as剩余
from ruku,
    (
        select c_name,SUM(c_count)as su
        from chuku group by c_name
    )as zongchuku
where ruku.r_name = zongchuku.c_name

5.联接查询的种类并举例

1)、内部联接
内部联接(典型的联接运算,使用类似于=或<>的比较运算符)。内部联接包括同等联接和自然联接。
内部联接使用比较运算符根据每个表的通用列中的值匹配两个表中的行。例如,检索 students和courses 表中学生标识号相同的所有行。
2)、外部联接
外部联接。外部联接可以是左向外部联接、右向外部联接或完整外部联接。
在FROM 子句中可以用下列某一组关键字来指定外部联接:
2.1)、左外联接
LEFT JOIN 或 LEFT OUTER JOIN。
左向外部联接的结果集包括 LEFTOUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹面的行。如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,来自右表的所有选择列表列均为空值。
2.2)、右外联接
RIGHT JOIN 或RIGHT OUTER JOIN右向外部联接是左向外部联接的反向联接。将返回右表的所有行。如果右表的某一行在左表中没有匹配行,则将为左表返回空值。
2.3)、全外联接
FULLJOIN 或 FULLOUTER JOIN
完整外部联接将返回左表和右表中的所有行。当某一行在另一个表中没有匹配行时,另一个表的选择列表列将包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
3)、交叉联接

交叉联接将返回左表中的所有行。左表中的每一行均与右表中的所有行组合。交叉联接也称作笛卡尔积。

建表:
create table students(
    id int primary key,
    name varchar(10),
    age int
)
create table phone (
    id int primary key,
    stuid int,
    code varchar(20)
)
构造测试数据:
insert students values(1,'张三'18)
insert students values(2,李'19)
insert phone values(1,1,'666')
insert phone values(2,1,777')
insert phone values(3,6,'888')
--内联(=)
select name,code
from students,phone
where students.id =phone.stuid


select name,code
from students inner join phone
    on students.id =phone.stuid

显示结果

--左外联:将左边的表当作“基准"表,显示所有记录

SELECT name,code
FROM students LEET OUTER JOIN phone
ON students.id =phone.stuid
-右外联:将右边的表当作“基准"表,显示所有记录
SELECT name,code
FRoM phone right OUTER JoIN students
ON students.id = phone.stuid
--全外联:将左、右表分别作为基准表
SELECT name,code
FROM phone full OUTER JOIN students
ON students.id=phone.stuid
--交叉联接(笛卡尔积)
select name,code
from students,phone

6.SQL Server 和 Oracle 数据库的区别

SQL Server 和 Oracle 都是非常流行的关系型数据库管理系统,它们在一些方面有一些区别:

  1. 开发商:SQL Server 是由Microsoft开发和维护的,而Oracle是由Oracle Corporation开发和维护的。

  2. 成本:SQL Server 通常比Oracle更便宜,而且有一些免费版本可供使用。而Oracle的许可费用通常较高。

  3. 平台支持:SQL Server 只能在Windows操作系统上运行,而Oracle可以在多个操作系统上运行,包括Windows、Linux、Unix等。

  4. 特性和功能:SQL Server 和 Oracle 在功能和特性方面都有一些差异。例如,SQL Server 更强调对BI(商业智能)和数据分析的支持,而Oracle更适合于大型企业级应用程序。

  5. 备份和恢复:Oracle 在备份和恢复方面提供了更多的选项和灵活性,包括逻辑和物理备份方法。而SQL Server 的备份和恢复过程相对简单。

  6. 扩展性和性能:在处理大规模数据和高并发访问方面,Oracle 通常比SQL Server 更强大和可扩展。

总的来说,选择 SQL Server 还是 Oracle 取决于具体的需求和应用场景。  

 


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

相关文章:

  • OGRE 3D----3. OGRE绘制自定义模型
  • 【线程】Java多线程代码案例(2)
  • R Excel 文件操作指南
  • [MRCTF2020]Transform
  • LeetCode:19.删除链表倒数第N个节点
  • 新版布谷直播软件源码开发搭建功能更新明细
  • 基于 JNI + Rust 实现一种高性能 Excel 导出方案(上篇)
  • vmware中所有虚拟机都ping不通时解决方案
  • Vim 高级操作与技巧指南
  • 英语知识在线学习:Spring Boot网站设计
  • 宠物领养平台构建:SpringBoot技术路线图
  • 应用案例丨坤驰科技双通道触发采集实时FFT数据处理系统
  • 英语知识在线平台:Spring Boot技术实现
  • C++起点——结构体
  • Unity版本使用情况统计(更新至2024年11月)
  • 无需插件,如何以二维码网址直抵3D互动新世界?
  • 9.机器学习--SVM支持向量机
  • 软件/游戏提示:mfc42u.dll没有被指定在windows上运行如何解决?多种有效解决方法汇总分享
  • SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD
  • ECharts 地图合规整改,实现一个最基础的中国地图
  • 基于Transformer的图像处理预训练模型
  • 在前端项目中监听浏览器事件,关闭,刷新,后退事件
  • SNMPv2 项目示例
  • 深度学习day7-BP之梯度下降,过拟合与欠拟合
  • PostgreSQL在Linux环境下的常用命令总结
  • 爬虫获取的数据如何用于市场分析?