数据库面试

本文深入探讨了SQL中char与varchar的区别,高效记录删除方法,查询结果去重,where与having的区别,分页查询,唯一与外键约束,以及多表关系设计和数据库设计的范式等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、char(N) 和 varchar(N)的区别?

1、都是用来存储字符串的,只是他们的保存方式不一样罢了。
2、char:定长,其余位置用空字符填充,处理速度快,效率高,但是费空间,一般用于固定长度的表单提交数据存储 ;例如:身份证号,手机号。
varchar:不定长,效率偏低。
// varchar(10)如果你存abc,需要空间为4,3个存abc,1个存长度,varchar是可变长度
3、超过10的部分,都会被截断

如何选择使用?

答:所以对存储字符串长度不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型。

2、如果要删除所有记录:

  1. delete from 表名; ‐‐ 不推荐使用。效率差,有多少条记录就会执行多少次删除操。会保存自增状态。
  2. truncate table 表名; ‐‐ 推荐使用,效率更高 先删除表,然后再创建一张一样的表。会清除自增的状态。

3、查询结果去重复

distinct

4、where 和 having的区别?

  1. where 是对所有记录的刷选,在group by分组之前进行的限定。
    having是对分组后的多个组进行筛选,如果 不满足结果,则不会被查询出来。
  2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。

5、分页查询

  1. 语法:limit 开始展示的记录索引,每页查询的条数;

  2. 公式:开始的索引 = (当前的页码 ‐ 1) * 每页显示的条数

  3. ‐‐ 每页显示3条记录

      SELECT * FROM student LIMIT 0,3; ‐‐ 第1页 
      SELECT * FROM student LIMIT 3,3; ‐‐ 第2页 
      SELECT * FROM student LIMIT 6,3; ‐‐ 第3页
    

6、约束之——唯一约束unique

结论: 在mysql中unique约束列可以含有多个null!

7、约束之——外键约束foreign key

外键,可以为null值,但是不允许为参照表列中没有的值。
外键,参照的是主表的 唯一约束的列(unique列)。

8、数据库的设计(多表之间的关系)

1)一对一关系:
- 一般而言,若两张表为一对一的关系,则把两张表合并为一张表。
2)一对多关系:
- 如:部门和员工
- 实现方式:在多的一方建立外键,指向一的一方的主键。
- 在这里插入图片描述
3)多对多关系:
- 如:学生和课程
- 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,且这两个字段要作为联合主键。这两个字段作为第三张表的外键,分别指向两张表的主键。
- 在这里插入图片描述

9、数据库设计的范式

10、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值