从你认识MySQL的那天起,再也没任何音讯

MySQl的介绍

在这里插入图片描述

  1. MySQL的介绍
    在这里插入图片描述

  2. MySQL的常见命令介绍
    在这里插入图片描述

  3. MySQL的语法规范
    在这里插入图片描述

在这里插入图片描述

  1. 查询表中所有记录
    • select * from 表名;

  1. 基础查询
    1. 多个字段的查询
      select 字段名1,字段名2… from 表名;
      • 注意:
        • 如果查询所有字段,则可以使用*来替代字段列表。
    2. 去除重复:
      • distinct
    3. 计算列
      • 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
      • ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
        • 表达式1:哪个字段需要判断是否为null
        • 如果该字段为null后的替换值。
    4. 起别名:
      • as(可以省略)

查询

  1. 基础查询
    在这里插入图片描述

  2. 条件查询
    在这里插入图片描述

  3. 排序查询
    在这里插入图片描述

在这里插入图片描述
asc: 代表升序
desc: 代表降序
order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
order by子句一般是放在查询语句的最后面,1imit子句除外

4.分组查询
语法:在这里插入图片描述
特点:
在这里插入图片描述
5.连接查询
分类:在这里插入图片描述
等值连接:
在这里插入图片描述
自链接:就是实现同一张表的连接
在这里插入图片描述

99连接
语法:
在这里插入图片描述
等值连接:
在这里插入图片描述
外连接:
在这里插入图片描述
交叉连接: 就是笛卡尔乘积

常见函数

  1. 字符函数
    在这里插入图片描述

  2. 数学函数
    在这里插入图片描述

  3. 日期函数
    在这里插入图片描述

  4. 其他函数
    在这里插入图片描述

  5. 流程控制函数
    在这里插入图片描述

  6. 分组函数
    sum()求和、 avg()求平均值、 max()最大值、 min()最小值、 count()计算个数

特点:
在这里插入图片描述

子查询

在这里插入图片描述

含义:
在这里插入图片描述

  • 概念:查询中嵌套查询,称嵌套查询为子查询
  • 特点:
    1、子查询都放在小括号内
    2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
    3、子查询优先于主查询执行,主查询使用了子查询的执行结果
    4、子查询根据查询结果的行数不同分为以下两类:
    ① 单行子查询
    结果集只有一行
    一般搭配单行操作符使用:> < = <> >= <=
    非法使用子查询的情况:
    a、子查询的结果为一组值
    b、子查询的结果为空
    ② 多行子查询
    结果集有多行
    一般搭配多行操作符使用:any、all、in、not in
    in: 属于子查询结果中的任意一个就行
    any和all往往可以用其他查询代替
    放在where或者having后面:
    在这里插入图片描述
    where后面的列子查询使用
    在这里插入图片描述
    行字查询
    在这里插入图片描述
    select后面的子查询
    仅仅支持标量子查询(一行一列)
    from 后面
    将子查询结果充当一张表,要求必须起别名

实例部分

下面展示一些 内联代码片


#查询和Zlotkey相同部门的员工姓名和工资
SELECT 
  last_name,
  salary 
FROM
  employees 
WHERE 
 department_id = (SELECT 
    department_id 
  FROM
    employees 
  WHERE last_name = 'Zlotkey') ;




#查询工资比公司平均工资高的员工的员工号,姓名和工资
SELECT employee_id, last_name,salary
FROM employees
WHERE salary >(
SELECT AVG(salary)
FROM employees
);


#查询各部门中工资比本部门平均工资高的员工的员工号
#姓名和工资
SELECT 
  employee_id,
  last_name,
  salary,
  e.`department_id`
FROM
  employees e,
  (SELECT 
    AVG(salary) ag,
    department_id 
  FROM
    employees 
  GROUP BY department_id) a 
WHERE a.department_id = e.`department_id` 
  AND salary > ag ;




#查询在部门的location_id 为1700的部门工作的员工的员工号

SELECT employee_id
FROM employees e
WHERE department_id=ANY(
	SELECT DISTINCT department_id
	FROM departments
	WHERE location_id=1700
);

MySQL面试题

  1. 数据库的三范式是什么?
    第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。

第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。

第三范式:任何非主属性不依赖于其它非主属性。
2. char 和 varchar 的区别是什么?
char(n) :固定长度类型,比如订阅 char(10),当你输入"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。

char 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。

varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。

所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。
3. MySQL 的内连接、左连接、右连接有什么区别?
内连接关键字:inner join;左连接:left join;右连接:right join。

内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反
4. MySQL 索引是怎么实现的?
索引是满足某种特定查找算法的数据结构,而这些数据结构会以某种方式指向数据,从而实现高效查找数据。

具体来说 MySQL 中的索引,不同的数据引擎实现有所不同,但目前主流的数据库引擎的索引都是 B+ 树实现的,B+ 树的搜索效率,可以到达二分法的性能,找到数据区域之后就找到了完整的数据结构了,所有索引的性能也是更好的。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Love_cangXin/article/details/121327739