1.取第 4 到5 条记录
--按ID从小到大,查询第到第条数据
select top4 *from(select top5 * from qicheorder by ID asc
) as TA
order by ID desc--按ID从小到大,查询第到第条数据
select top 2*from(select top 4 *from qicheorder by ID asc
)as TA
order by ID desc--按ID从小到大,查询第m到第n条数据
select top nm+1 *from(select top n*from qicheorder by ID asc
)as TA
order by ID desc
2. 有主键情况下如何去重
重复的品牌只剩一条(去重)
delete from qiche
where id not in(select max(id)from qichegroupby 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_studentwhere 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_idand B_course.cid=B_score.sc_c_idand s_name ='梅超风'and sc_grade is null--将高等数学成绩最高的学生的物理成绩加分
update A_studentcourse
set sc_score=sc score +10
where sccno =(select c_nofrom A_courseinfowhere c_subject='物理
)
and sc_sno in(select sc_snofrom A_courseinfo,A_studentcoursewhere A courseinfo.c_no =A_studentcourse.sc_cnoand c_subject ='高等数学'and sc_score =(select MAX(sc score)from A_courseinfo,A_studentcoursewhere A_courseinfo.c_no =A_studentcourse.sc_cnoand 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 sufrom 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)、交叉联接
交叉联接将返回左表中的所有行。左表中的每一行均与右表中的所有行组合。交叉联接也称作笛卡尔积。
| |
| 显示结果 |
| |
| |
| |
|
6.SQL Server 和 Oracle 数据库的区别
SQL Server 和 Oracle 都是非常流行的关系型数据库管理系统,它们在一些方面有一些区别:
-
开发商:SQL Server 是由Microsoft开发和维护的,而Oracle是由Oracle Corporation开发和维护的。
-
成本:SQL Server 通常比Oracle更便宜,而且有一些免费版本可供使用。而Oracle的许可费用通常较高。
-
平台支持:SQL Server 只能在Windows操作系统上运行,而Oracle可以在多个操作系统上运行,包括Windows、Linux、Unix等。
-
特性和功能:SQL Server 和 Oracle 在功能和特性方面都有一些差异。例如,SQL Server 更强调对BI(商业智能)和数据分析的支持,而Oracle更适合于大型企业级应用程序。
-
备份和恢复:Oracle 在备份和恢复方面提供了更多的选项和灵活性,包括逻辑和物理备份方法。而SQL Server 的备份和恢复过程相对简单。
-
扩展性和性能:在处理大规模数据和高并发访问方面,Oracle 通常比SQL Server 更强大和可扩展。
总的来说,选择 SQL Server 还是 Oracle 取决于具体的需求和应用场景。