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

吐血整理了一周SQL面试题,包括了选择题、问答题、实战题。每道题都给大家加了详细的解析。几乎每个知识点都涉及到了。

刷完这套题,关于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 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’ , ‘男’);

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值