首页 热点资讯 义务教育 高等教育 出国留学 考研考公

sql面试题,牛人帮做下谢谢

发布网友 发布时间:2022-04-26 21:39

我来回答

1个回答

热心网友 时间:2022-04-08 00:34

(1) F_OrderID 字段后面的PK是代表什么?
Varchar(50)与Char(50)、Nvarchar(50)有什么区别?

PK 意思是 主键. 也就是 一个 主键,在这个表里面, 最多只能找到 一行数据.
Varchar(50) 可变长字符串, 长度为 50字节。
Char(50) 固定长度字符串, 长度为 50字节。 假如内容不足50,会自动补空格
Nvarchar(50) 可变长字符串, 长度为 50字 == 100字节。

(2)请编写一条Sql语句,列出所有F_OrderName以abc开头的并且F_CategoryName以xyz结尾的所有订单,并以F_CategoryName升序F_OrderName降序排列。
在这两个字段上建立索引是不是会加快查询速度?
SELECT
*
FROM
tblOrder
WHERE
F_OrderName LIKE 'abc%'
AND F_CategoryName LIKE '%xyz'
ORDER BY
F_CategoryName ASC,
F_OrderName DESC
对于 普通的索引,在 F_OrderName 上面建索引,可加快。
在 F_CategoryName 上面建, 无效果。 (Oracle 的一种特殊的反向索引,可以加快)

(3) 请编写一条Sql语句,列出tblOrder表第31到第40条记录,F_OrderID为主键,注:F_OrderID可能是不连续的。写出两种以上你认为性能最好的sql语句。

SELECT TOP 10
*
FROM
(
SELECT TOP 40 * FROM tblOrder ORDER BY F_OrderID
) subQuery
ORDER BY
F_OrderID DESC

SELECT
*
FROM
(
SELECT TOP 40 * ,
ROW_NUMBER() OVER(ORDER BY F_OrderID ) AS no
) FROM tblOrder ORDER BY F_OrderID
) subQuery
WHERE
no between 31 and 40

(4) sql语句里inner join,left join,right join的区别?
以 A JOIN B 为例子

A inner join B 意思是, A 与 B 表, 大家都有的数据, 才检索出来。
A left join B 意思是, A 与 B 表, 大家都有的数据, 以及 A 有 B没有的, 都检索出来。
A right join B 意思是, A 与 B 表, 大家都有的数据, 以及 A没有 B有的, 都检索出来。

A full join B 意思是, A 与 B 表, 大家都有的数据, 以及 A 有 B没有的,A没有 B有的, 都检索出来。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com