黑白客 发表于 2021-6-6 21:17

mysql基本命令面试经验<一>

本帖最后由 黑白客 于 2021-6-7 19:55 编辑

mysql面试基本语句
模拟操作的数据库 sql文件
查询基本结构
查询指定列
查询所有列
null的特殊性
过滤查询
起别名
去重复
排序
最近面试经常被问到,复习一下.

模拟操作的数据库 sql文件
/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50621
Source Host         : localhost:3306
Source Database       : mianshi

Target Server Type    : MYSQL
Target Server Version : 50621
File Encoding         : 65001

Date: 2021-06-07 19:53:43
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for haixin
-- ----------------------------
DROP TABLE IF EXISTS `haixin`;
CREATE TABLE `haixin` (
`xingming` char(6) DEFAULT NULL,
`xuehao` char(6) DEFAULT NULL,
`xingbie` tinyint(1) NOT NULL,
PRIMARY KEY (`xingbie`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of haixin
-- ----------------------------

-- ----------------------------
-- Table structure for xs
-- ----------------------------
DROP TABLE IF EXISTS `xs`;
CREATE TABLE `xs` (
`学号` char(6) NOT NULL,
`姓名` char(8) NOT NULL,
`专业名` char(10) DEFAULT NULL,
`性别` tinyint(1) NOT NULL DEFAULT '1',
`出生日期` date NOT NULL,
`总学分` tinyint(1) DEFAULT NULL,
`照片` blob,
`备注` text,
PRIMARY KEY (`学号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of xs
-- ----------------------------
INSERT INTO `xs` VALUES ('000001', '李大钊', '计算机', '1', '0000-00-00', '100', null, null);
INSERT INTO `xs` VALUES ('081101', '王海新', '计算机', '1', '1999-02-10', '50', null, null);
INSERT INTO `xs` VALUES ('081111', '蔡元培', '信息工程', '2', '1999-02-02', '11', null, null);
INSERT INTO `xs` VALUES ('109333', '陈独秀', '计算机', '1', '1999-10-08', '20', null, null);

查询基本结构
基础查询:
select … from 表;
查询数据库所有记录的指定字段

查询指定列
      select 列名1,列名2... from 表
      select 学号,姓名 from xs;
查询所有列
select * from 表
select * from xs;
还可以做运算
基本的加减乘数
常量和常量
列和常量
列和列

null的特殊性
      在sql中,任何数据和null做运算,运行的结果还是null
      null不是0
      可以通过特定的函数,将null设置为特定的值
—注意有null值时,结果为null
select 学号 + 总学分 from xs;

过滤查询
select ... from 表 where 过滤条件
起别名
可以对查询结果其别名
— as可以省略,如果别名中有空格,需要用引号括起来
select 学号 as number from xs;

去重复
使用distinct
select distinct 性别 from xs;

排序
使用关键字 order by

升序 asc
降序 desc
默认是升序
select … from … order by…

select 学号 from xs order by 学号 asc;
select 学号 from xs order by 学号 desc;

–根据结果的第一列进行排序
select 学号,姓名 from xs order by 1 desc;

吃兔子的肉 发表于 2021-6-7 07:50

感谢分享,祝成功

黑白客 发表于 2021-6-7 19:43

潇洒三叔 发表于 2021-6-7 08:59
CHARSET=latin1;insert 的中文, 查出来全是乱码。

好细心,你说的对,我其实私下偷偷改了数据库,全部换成了utf-8

blindcat 发表于 2021-6-6 21:33

感谢分享,就是感觉排版觉得不太舒服

homehome 发表于 2021-6-7 07:43

谢谢分享,面试成功没?

ospf 发表于 2021-6-7 08:00

感谢分享,抢前排

fht000 发表于 2021-6-7 08:58

没问索引吗?

潇洒三叔 发表于 2021-6-7 08:59

CHARSET=latin1;insert 的中文, 查出来全是乱码。

黑白客 发表于 2021-6-7 19:39

blindcat 发表于 2021-6-6 21:33
感谢分享,就是感觉排版觉得不太舒服

最近准备面试,事情比较多. 笔记也比较潦草抱歉啦

黑白客 发表于 2021-6-7 19:40

homehome 发表于 2021-6-7 07:43
谢谢分享,面试成功没?

面上一家张家口的,但是想去北京

黑白客 发表于 2021-6-7 19:41

fht000 发表于 2021-6-7 08:58
没问索引吗?

问,我感觉如果问数据库,索引是必问的题目
页: [1] 2
查看完整版本: mysql基本命令面试经验<一>