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

一、选择题

(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 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 po

Original: https://blog.csdn.net/web18484626332/article/details/126801596
Author: web18484626332
Title: 2022年SQL经典面试题总结(带解析)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817667/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球