SQL 基础知识面试题(第二天):核心基础考点
一、基础概念题(理解类)
1. 题目:SQL 的四大核心语句及用途
| 缩写 | 全称 | 中文含义 | 核心用途 | 示例 SQL |
|---|---|---|---|---|
| DQL | Data Query Language | 数据查询语言 | 查询数据库中的数据 | SELECT name, dept_id FROM user WHERE dept_id = 1; |
| DML | Data Manipulation Language | 数据操纵语言 | 增 / 删 / 改数据库中的数据 | INSERT INTO user(name, dept_id) VALUES ('张三', 1);(增)UPDATE user SET dept_id = 2 WHERE name = '张三';(改)DELETE FROM user WHERE id = 1;(删) |
| DDL | Data Definition Language | 数据定义语言 | 创建 / 修改 / 删除数据库对象 | CREATE TABLE user (id INT PRIMARY KEY, name VARCHAR(50));(建表)ALTER TABLE user ADD age INT;(改表)DROP TABLE user;(删表) |
| DCL | Data Control Language | 数据控制语言 | 权限管理、事务控制 | GRANT SELECT ON user TO test_user;(授权)COMMIT;(提交事务)ROLLBACK;(回滚事务) |

2. 题目:MySQL 中常用数据类型及使用场景
| 数据类型 | 典型使用场景 | 示例 SQL(建表片段) |
|---|---|---|
| INT | 存储整数(ID、数量、年龄) | id INT PRIMARY KEY AUTO_INCREMENT, age INT |
| VARCHAR | 存储变长字符串(姓名、地址) | name VARCHAR(50) NOT NULL, address VARCHAR(200) |
| DATETIME | 存储时间(创建时间、更新时间) | create_time DATETIME DEFAULT CURRENT_TIMESTAMP |
| DECIMAL | 存储高精度小数(金额、价格) | price DECIMAL(10,2) NOT NULL(10 位总长度,2 位小数) |
| BOOLEAN | 存储布尔值(状态、开关) | is_active BOOLEAN DEFAULT TRUE(MySQL 中 BOOLEAN 等价于 TINYINT (1)) |
CREATE TABLE `goods` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`goods_name` VARCHAR(100) NOT NULL,
`price` DECIMAL(10,2) NOT NULL,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`is_sale` BOOLEAN DEFAULT TRUE
);
二、基础实操题(高频考点)
问题:基于以下商品表,写出满足对应需求的 SQL,并解析核心语法。
-- 商品表结构及测试数据
CREATE TABLE `goods` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`goods_name` VARCHAR(100) NOT NULL,
`category` VARCHAR(50) NOT NULL, -- 商品分类
`price` DECIMAL(10,2) NOT NULL,
`stock` INT NOT NULL -- 库存
);
INSERT INTO `goods` (goods_name, category, price, stock) VALUES
('小米14', '手机', 3999.00, 1000),
('华为Mate60', '手机', 4999.00, 800),
('苹果15', '手机', 5999.00, 500),
('小米平板6', '平板', 2499.00, 600),
('华为平板Pro', '平板', 3299.00, 400);
需求 1:查询所有 “手机” 分类的商品,按价格从高到低排序。
SELECT * FROM `goods`
WHERE category = '手机'
ORDER BY price DESC;
需求 2:查询价格在 3000-5000 元之间的商品,只显示商品名称和价格。
SELECT goods_name, price FROM `goods`
WHERE price BETWEEN 3000 AND 5000;
需求 3:查询库存大于 500 的 “手机” 或 “平板” 商品,按库存升序排序。
SELECT * FROM `goods`
WHERE stock > 500 AND (category = '手机' OR category = '平板')
ORDER BY stock ASC;
2. 题目:INSERT/UPDATE/DELETE 基础语法

-- 需求1:新增记录
INSERT INTO `goods` (goods_name, category, price, stock)
VALUES ('iPad Pro', '平板', 4999.00, 300);
-- 需求2:修改记录
UPDATE `goods`
SET price = 5899.00, stock = 550
WHERE goods_name = '苹果15';
-- 需求3:删除记录
DELETE FROM `goods`
WHERE category = '平板' AND stock < 400;

浙公网安备 33010602011771号