SqlServer 面试题汇总

WechatIMG264.jpeg

1.SqlServer2012系统数据类型有哪些?

数据类型符号标识
数据类型bigint、int、smallint、tinyint
整数型精确数值型decimal、numeric
浮点型float、real
货币型money、smallmoney
位型bit
字符型char、varchar、varchar(MAX)
Unicode字符型nchar、nvarchar、nvarchar(MAX)
文本型text、ntext
日期时间类型datetime、smalldatetime、date、time、datetime2、datetimeoffset
时间截型timestamp
图像型image
其他cursor、sql_variant、table、uniqueidentifier、xml、hierarchyi

2.写出创建产品销售数据厍cpxs中所有表的SQL语句。其所包含的表如下。

产品表:产品编号,产品名称,价格,库存量。
销售商表:客户编号,客户名称,地区,负责人,电话。
产品销售表:销售日期,产品编号,客户编号,数量,销售额。

CREATE TABLE [dbo].[product] (
    [产品编号] char(12) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [产品名称] char(20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [价格] money NULL DEFAULT ((0)),
    [库存量] smallint NULL DEFAULT ((0))
)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[product] SET (LOCK_ESCALATION = TABLE)
GO
EXEC sp_addextendedproperty 'MS_Description', '产品表', 'SCHEMA', 'dbo', 'TABLE', 'product'

CREATE TABLE [dbo].[seller] (
    [客户编号] char(8) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [客户名称] char(4) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [地区] char(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [负责人] char(4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [电话] char(11) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[seller] SET (LOCK_ESCALATION = TABLE)
GO
EXEC sp_addextendedproperty 'MS_Description', '销售商表', 'SCHEMA', 'dbo', 'TABLE', 'seller'

CREATE TABLE [dbo].[product_sales] (
    [销售日期] datetime NOT NULL,
    [产品编号] char(12) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [客户编号] char(8) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [数量] smallint NULL DEFAULT ((0)),
    [销售额] money NULL DEFAULT ((0))
)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[product_sales] SET (LOCK_ESCALATION = TABLE)
GO
EXEC sp_addextendedproperty 'MS_Description', '产品销售表', 'SCHEMA', 'dbo', 'TABLE', 'product_sales'

3.在第2题中所创建的cpxs数据库的产品表中增加”产品简介“列,之后在删除该列。

ALTER TABLE [dbo].[product]
    ADD [产品简介] text

ALTER TABLE [dbo].[product]
    DROP COLUMN [产品简介]

4.写出SQL语句,对产品销售数据库产品表进行如下操作。

(1)插入如下记录。

产品编号产品名称价格库存量
0001空调3000200
0203电冰箱2500100
0301彩色电视机280050
0421微波炉150050
insert into [dbo].[product] values 
( '0001', '空调', '3000', '20'),
( '0203', '电冰箱', '2500', '100'),
( '0301', '彩色电视机', '2800', '50')
( '0421', '微波炉', '1500', '50')
;

(2)将产品数据库的产品表中每种商品的价格打8折

UPDATE [dbo].[product] SET [价格]=[价格]*0.8

(3)将产品数据库的产品表中价格打8折后低于50元的商品删除

DELETE [dbo].[product] WHERE [价格]<50

(4)查找价格在2000~2900元之间的商品名。

SELECT [产品名称] FROM [dbo].[product] WHERE [价格] BETWEEN 2000 AND 2900

(5)计算所有商品的总价格。

SELECT SUM([价格]*[库存量]) FROM [dbo].[product]

(6)在产品销售数据库上创建电冰箱产品表的视图bxcp。

CREATE VIEW [dbo].[bxcp] AS SELECT
dbo.product.*
FROM
dbo.product
WHERE
[产品名称]='电冰箱'

(7)在bxcp视图中查询库存量在100台以下的产品编号。

SELECT * FROM [dbo].[bxcp] WHERE [库存量]<100

5.使用EXISTS关键字引入的子查询与使用IN关键字引入的子查询在语法上有哪些不同?

// EXISTS 方式
SELECT * FROM A WHERE EXISTS(SELECT * FROM B WHERE B.id=A.uid); 
// in  方式
SELECT * FROM A WHERE id IN (SELECT id  FROM B);

6. WHERE子句与HAVING子句有何不同?

Where是一个约束声明,是在查询结果集返回之前约束来自数据库的数据,且Where中不能使用聚合函数。
Having是一个过滤声明,是在查询结果集返回以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。

7.试说明游标的种类和用途。

种类:前端(客户端)游标、后端(服务器端)游标
用途:游标提供了对一个结果集进行逐行处理的能力,游标可看做一种特殊的指针,它与某个查询结果相联系,可以指向结果集的任意位置,以便对指定位置的数据进行处理。

8.举例说明游标的使用方法和步骤。

  • 声明游标
  • 打开游标
  • 读取数据
  • 关闭游标
  • 删除游标
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值