2022年SQL经典面试题总结(带解析)

本文总结了2022年SQL经典面试题,涵盖选择题、进阶题和问答题,内容包括数据操纵语言(DML)、数据控制语言(DCL)、数据定义语言(DDL)、数据查询语言(DQL)以及事务控制语言(TCL)的相关知识点,如删除、更新、插入、创建视图、外键、存储过程、触发器、窗口函数等。此外,还讨论了数据库优化、事务隔离级别、索引使用和优化策略等。通过这些题目,帮助读者理解和掌握SQL的核心概念和实际应用。
摘要由CSDN通过智能技术生成

一、选择题

(1)基础题

1、要求删除商品表中价格大于3000的商品,下列SQL语句正确的是()

A、DELETE FROM 商品 WHERE 价格>3000

B、DELETE * FROM 商品 WHERE 价格>3000

C、DELETE FROM 商品

D、UPDATE 商品 SET * =NULL WHERE 价格>3000

正确答案: A

答案解析:这道题考察的是delete语法

DELETE FROM table_name

WHERE some_column=some_value;

2、在book表中,将工具书类型(tool)的书的书架序号都减少2,下列语句正确的是()

A、UPDATE books SET shelf = shelf - 2 WHERE type IS ‘tool’;

B、INSERT books SET shelf = shelf - 2 WHERE type IS ‘tool’;

C、UPDATE books SET shelf = shelf - 2 WHERE type = ‘tool’;

D、UPDATE books INTO shelf = shelf - 2 WHERE type = ‘tool’;

正确答案: C

答案解析:这道题考察的是update语法。

UPDATE table_name

SET column1=value1,column2=value2,…

WHERE some_column=some_value;

where后面语句,查找NUll值的时候可以用 type IS NUll,否则要用等于=

3、为职员表添加列,列名为年末奖金,允许为空值,数据类型为货币数据类型。下列SQL语句正确的是()

A、ATER TABLE 职员 ADD 年末奖金 NULL

B、ALTER TABLE 职员 ADD 年末奖金 Money NULL

C、ALTER TABLE 职员 ADD 年末奖金 Money NOT NULL

D、ALTER TABLE 职员 ADD 年末奖金 INT NULL

正确答案: B

答案解析:这道题考察的是alter语法。如果你想在已有的表中,添加、删除或修改列,就需要用到alter语句。

添加列: ALTER TABLE table_name ADD column_name datatype

修改列:在SQL Server中与MySQL中修改列的语句有所差异,这里要注意~

My SQL / Oracle:ALTER TABLE table_name MODIFY COLUMN column_name datatype

SQL Server:ALTER TABLE table_name ALTER COLUMN column_name datatype

删除列:ALTER TABLE table_name DROP COLUMN column_name

mysql没有money类型 sql server才有money类型,所以在读题的时候要注意是否提到在mysql中。

money其实跟float是同类型数据。money类型只是显示在数据表的时候前面多加一个$样式的符号。

4、小李在创建完一张数据表后,发现少创建了一列,此时需要修改表结构,应该用哪个语句进行操作?

A、MODIFY TABLE

B、INSERT TABLE

C、ALTER TABLE

D、UPDATE TABLE

正确答案: C

答案解析:巩固一下上一题,修改已有的表,就用alter语句。

ALTER TABLE 表名 add 字段名

5、SQL语言可以分为多个类别,那么不属于数据操纵语言DML的是()

A、update

B、grant

C、delete

D、insert

正确答案: B

答案解析:grant语句是用来赋予用户权限的,是数据控制语言(DCL)。其他3个都是数据操纵语言(DML)

数据查询语言(DQL):是由SELECT子句,FROM子句,WHERE子句组成的查询块

数据操纵语言(DML): SELECT(查询) INSERT(插入) UPDATE(更新) DELETE(删除)

数据定义语言(DDL):CREATE(创建数据库或表或索引)ALTER(修改表或者数据库)DROP(删除表或索引)

数据控制语言(DCL):GRANT(赋予用户权限) REVOKE(收回权限) DENY(禁止权限)

事务控制语言(TCL):SAVEPOINT (设置保存点)ROLLBACK (回滚) COMMIT(提交)

6、下列选项中使用别名的方法不正确的是()

A、字段名称=别名

B、字段名称 AS 别名

C、字段名称 别名

D、别名=字段名称

正确答案: D

答案解析:给字段名称起别名,B、C选项没有疑义,as可以省略

A选项,字段名称=别名,在SQL Server中可以这样使用,MySQL中则不可以。

如果没有特别指明是在mysql中,我们默认就在SQL Server中。

(多选题)7、在MySql中进行数据查询时,如果要对查询结果的列名重新命名,将sno列重新命名为学号,则下列语句正确的是( )

A、select sno as 学号 from T

B、select 学号= sno from T

C、select sno 学号 from T

D、select sno=学号 from T

正确答案: A C

答案解析:巩固一下上一题,在SQL Server 中可以使用’=’,MySQL中则不可以

8、在SQL中用条件表示价格在在30至40之间,应该如何表达?

A、in (30,40)

B、BETWEEN 30 AND 40

C、BETWEEN 30 OR 40

D、BETWEEN 30 TO 40

正确答案: B

答案解析:这道题考察的是BETWEEN … AND …知识点

9、SQL语句中与Having子句同时使用的语句是?()

A、Group By

B、联盟链

C、left Join

D、Where

正确答案: A

答案解析:having和where作用差不多,都是用来筛选数据的。

having作用在分组之后,也就是要放在group by的后面

10、已知数据表STU,现需创建视图view_s,显示所有男同学的信息。下列SQL语句正确的是()

A、CREATE VIEW AS SELECT * FROM STU

B、CREATE VIEW view_s AS SELECT * FROM STU WHERE 性别=‘男’

C、CREATE view_s SELECT * FROM STU WHERE 性别=‘男’

D、CREATE view_s AS SELECT * FROM STU

正确答案: B

答案解析:这道题考察的是VIEW 创建视图知识点

将查询语句放在create views view_name as 后面,这样查询语句的结果就会存储在视图中,后面可以继续调用这个视图数据,或者直接在视图中查询。

视图可以当成表格来用。

CREATE VIEW view_name AS

SELECT column_name(s) FROM table_name

WHERE condition

CREATE后面要加上VIEW,不然数据库怎么知道你要创建啥~

11、Mysql中表student_info(id,name,birth,sex),字段类型都是varchar,插入如下记录:(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’); 下面SQL错误的是()?

A、insert into student_info values(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’);

B、insert into table student_info values(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’);

C、insert into student_info(id,name,birth,sex) values(‘1014’ , ‘张三’ , ‘2002-01-06’ , ‘男’);

D、insert into student_info(id,name,sex,birth,) values(‘1014’ , ‘张三’ , ‘男’,‘2002-01-06’ );

正确答案:B

答案解析:这道题比较简单,考察的知识点是:insert插入数据的语法。

insert into 后面直接跟表名。

insert into table,这种语法就不对。

有些同学可能会选择D,觉得顺序不对。但前面指明的列顺序,与后面是对应的(id,name,sex,birth,) values(‘1014’ , ‘张三’ , ‘男’,'2002-01-06’ )

12、将成绩表(grade)按成绩(point)升序排列,下列语句错误的是()

A、SELECT * FROM grade ORDER BY point;

B、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值