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

  • 相关阅读:
    Oracle 坏块及修复
    微积分学习笔记(2):用Go语言画函数图像
    游戏专属i9-13900k服务器配置一个月多少钱
    桂电人工智能学院大数据实验,使用 Docker 搭建 hadoop 集群
    【JVM笔记】堆的核心概述与堆空间大小的设置与查看
    ElasticSearch(三)【索引、映射、文档】
    鸿蒙LiteOs读源码教程+向LiteOS中添加一个系统调用
    【Redis】解决Redis并发竞争key问题
    使用Python进行网站页面开发——Django快速入门
    显示控件——字符显示之文本显示
  • 原文地址:https://blog.csdn.net/web18484626332/article/details/126801596