当前位置: 首页 > news >正文

PHP面试宝典之Mysql数据库基础篇

字符类型:

  • tinyint(4):占1个字节,4代表字段值长度,用0填充,搭配zero fill使用
    有符号:取值范围 负128 ~ 正127;
    无符号:取值范围 0 ~ 255;
    默认无符号;

  • int(11):占4个字节,11代表字段值长度,用0填充,搭配zero fill才起作用
    有符号:取值范围 负2开头10位数 ~ 正2开头10位数;
    无符号:取值范围 0 ~ 正4开头10位数,使用unsigned设置;
    默认无符号;

  • bigint(20):占8个字节,20代表字段值长度,用0填充,搭配zero fill才起作用
    有符号:取值范围 负9开头19位数 ~ 正9开头19位数;
    无符号:取值范围 0 ~ 正18 开头20位数,使用unsigned设置;
    默认无符号;
    注1:在32位操作系统中,可能会出现内存溢出问题;
    注2:手机号是字符串,不是数字,所以不建议使用bigint;

  • char(n):定长字符串,英文字符占n个字节,中文utf8格式,占用n*3个字节;n表示字符长度,中英文相同;
    注:字段全部是国内手机号时,建议使用char(11);

  • varchr(n):可变长字符串,有效字节数65532;1~ 3个字节存储数据大小
    utf8格式:n最大值 = 65532/3;
    gbk格式:n最大值 = 65532/2;
    注:当一个字段用来存储:座机和手机号时,建议使用;

  • 其余字符类型:
    datetime:时间格式
    text:文本,最多可存储64 kb
    decimal:金额

mysql函数

max:最大值
min:最小值
count:行数
sum:总和
avg:平均值
ifnull:是否为空
if:控制语句
case:搜索语句

如何设计数据库?

1:三范式:
原子性:列、字段的不可拆分
唯一性:设置主键
冗余性:设置字段与主键的直接关联关系

2:表的拆分:根据业务场景进行逻辑拆分(一对一、一对多、多对多)

3:选择数据库引擎 innodb 或 myisam

4:添加索引(注:单表索引最好不超过5个)

5:单表字段最好不超过20个

6:合适的字段类型(使用小类型替代大类型,比如tinyint 代替int,或int代替bigint)

7:逻辑删除代替物理删除

8:字段添加注释

一张表最多能创建多少个字段?
innodb引擎:一张表最多可创建1000个字段

如果创建一个没有主键的表会怎样?
可以创建成功,但mysql会默认创建一个隐藏的聚簇索引,后续再创建主键时,会更改布局,新建一个聚簇索引

myisam和innodb引擎的区别?

innodb引擎:支持事务、支持外键,是聚簇索引,行级锁;
5.5之后的默认引擎,5.7之后支持全文检索

myisam引擎:不支持事务和外键,是非聚簇索引,表级锁;

MySQL常见索引?

主键索引、普通索引、联合索引、唯一索引(数据的唯一,一张表可以有多个唯一索引)、空间索引

如何创建索引?注意事项?

哪些适合创建索引?
1:字段值有唯一性限制时,必须建成唯一索引

2:where子句中的条件字段,创建索引

3:group by和order by的列,创建索引

4:连表时的关联字段,加索引,且在所有表中,字段名和字段类型保持一致

5:使用类型小的列,创建索引;如:能用int就不用bigint

6:字符串字段,使用前缀索引

7:使用最频繁的列,放在联合索引的左侧

8:多个字段都要创建索引时,联合索引优于单值索引

哪些不适合创建索引?

1:where子句中不使用的字段,不建索引

2:数据量小的表,不建索引(300条以内不用加)

3:大量重复数据的列,不建索引(重复度高于10%,不适合建索引)

4:经常更新的表,少建索引

5:不建议用无序的值作为索引;例:哈希,md5,无序长字符串

6:删除不再使用或使用率少的索引

7:不重复定义索引;例:联合索引中的字段,不需要单独再创建索引

主键索引和唯一索引的区别?

1:主键一定包含唯一,但唯一不一定是主键

2:主键不能为空,唯一可以为空

3:一个表只能有一个主键,但可以有多个唯一

4:主键可以做为其他表的外键

注:null会破坏索引结构,可能会导致该列不走索引,唯一索引可以有多个null,因为null是未知,多个未知不代表重复,但null值不被记录在索引上;唯一索引上只能有一个空字符串,不能有多个

主键可以被修改吗?

1:主键值不能修改,只能删除后,重新添加

2:主键字段,可以修改(id是主键改为name是主键),但一般不这么做,一般情况会将ID的主键属性删除,然后给name添加主键

索引优化方案?

前缀索引、覆盖索引、主键自增、not null、防止索引失效

前缀索引:在字段中字符串的前几个字符建立索引,如:邮箱字段中@符号之前的字符创建索引;
注:order by 无法使用前缀索引,进行索引覆盖

覆盖索引:select 查询字段,可以通过where子句中的索引列来实现,既查询字段值在索引的叶子节点中存在,不需要回表就可以返回结果

什么是MySQL回表?

以innodb为例,如果不使用主键索引查询,且查询结果列不在where子句中的索引列中,就会先由子句索引中的二级索引,查询索引树,找到对应的主键ID,再通过主键ID的索引树,去查询所在行数据,但myisam不同,它的主键索引也没保存行数据,所以无论怎样都会回表;回表会导致多次io,消耗更多资源

简答:如果innodb,不使用主键做条件查询,并且查询结果包含了除条件外的其他字段,就无法一次性得到结果,就必须先查到主键, 再使用主键去索引树中,找到对应的全部数据

索引失效原因?

1:模糊查询以%开头

2:where子句中,对索引做运算,函数

3:联合索引要正确使用最左匹配原则

4:where子句中,or前是索引,or后不是索引,也会导致索引失效

5:索引列存在null值,也会导致索引失效

6:字符串类型,不加引号不走索引,加引号才走索引,int类型加不加都走索引

索引最左匹配原则?

以a、b、c三个字段,做联合索引为例:它会生成三个索引,分别是:(a)、(a、b)、(a、b、c)
在联合索引查询时,优先走最左侧索引:where子句中必须以a为起点,直到遇到范围查询(>,<)为止,之前的字段(包括范围查询字段)都会走索引,但范围之后的索引失效

原因:范围查询之前的索引是有序的,而范围之后的索引是无序的

MySQL优化方案:

1:尽量全值匹配(=)

2:最左匹配原则

3:不对索引列做任何操作

4:尽量使用覆盖索引

5:不等于、like要慎用

6:字符串类型索引,要加引号

SQL性能优化

1:不能使用select *,失去了覆盖索引的效果

2:小表驱动大表时使用in,不使用exists

3:批量插入代替循环插入

4:用limit限制返回条数

5:分页查询优化,页码增大时,查询效率降低,可以借助上次查询最大id,做条件过滤

6:缩小数据集的条件放前面,能排除大量数据的条件放前面

7:连表查询尽量不超过3张表

i

in和exists的区别?

exists:是先查前表中所有数据,然后过滤后面的子句,是否有包含

in:是先执行子句,再通过结果去前表中查询结果集

in走不走索引?

in通常是走索引的,但当in后面的数据集,在表中超过30%的匹配时,是不走索引,而是全表扫描

between、in、or的效率对比

between最快,in次之,or最慢
between > in > or

全文检索

字段类型:fulltext(全文索引)
设置全文索引:fulltext(字段名) with parser ngram comment ‘index_type=smartcn’

查询方式:match(字段名) against(‘搜索信息’)
smartcn:分词器插件,提高中文查询准确率
boolean:高级搜索【‘+要查询信息 且不包含信息’in boolean mode】
自定义分词器:用特殊符号,将字段按自己需求切割成自定义 分词

相关文章:

PHP面试宝典之Mysql数据库基础篇

字符类型&#xff1a; tinyint(4)&#xff1a;占1个字节&#xff0c;4代表字段值长度&#xff0c;用0填充&#xff0c;搭配zero fill使用 有符号&#xff1a;取值范围 负128 &#xff5e; 正127&#xff1b; 无符号&#xff1a;取值范围 0 &#xff5e; 255&#xff1b; 默认无…...

4月记录总结

4/24 1.GBK12、16、24是指什么 GBK12、GBK16、GBK24是指不同的字体点阵大小&#xff0c;也就是字体的显示大小。在GBK编码中&#xff0c;一个汉字通常是由多个点阵组成的&#xff0c;其中点阵的大小就是字体的点阵大小。具体来说&#xff1a; GBK12&#xff1a;指每个汉字由12…...

每日学术速递4.29

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.LG 1.A Cookbook of Self-Supervised Learning 标题&#xff1a;自监督学习食谱 作者&#xff1a;Randall Balestriero, Mark Ibrahim, Vlad Sobal, Ari Morcos, Shashank Shekhar, Tom…...

整数在内存中的存储:原码、反码、补码 大小端字节序

本篇博客会讲解整数在内存中的存储形式&#xff0c;以及整数二进制的3种表示形式&#xff1a;原码、反码、补码&#xff0c;还有大小端的相关知识点。相信读完本篇博客&#xff0c;大家对内存的了解会上一个台阶。 注意&#xff1a;本篇博客讨论的是整数在内存中的存储&#x…...

【方法】 如何批量将RAR或其他压缩格式转换成ZIP?

压缩文件的格式有很多种&#xff0c;比如RAR、ZIP、7-Zip、CAB、ARJ、ACE、TAR、BZ2等等。因为需求不同&#xff0c;或者不同平台对上传的压缩包格式要求不同&#xff0c;我们往往需要把压缩文件进行格式转换&#xff0c;那压缩文件不同格式之间如何进行转换呢&#xff1f; 如…...

《道德经》

《道德经》是春秋时期老子&#xff08;李耳&#xff09;的哲学作品&#xff0c;又称《道德真经》、《老子》、《五千言》、《老子五千文》&#xff0c;是中国古代先秦诸子分家前的一部著作&#xff0c;是道家哲学思想的重要来源。 道德经分上下两篇&#xff0c;原文上篇《德经…...

ABI Research产业研究:ZiFiSense如何革新物流货物及运输包装追踪

“文章源自前沿科技研究机构ABI Research产业研究&#xff0c;重点介绍了ZETA LPWA协议开发公司纵行科技在业务发展、M-FSK调制技术以及ZETag云标签系列产品在物流货物追踪与包装管理等方面的应用分析&#xff0c;还分享了纵行科技ZETA技术在商业市场和生态系统方面的发展情况。…...

家乡特色推荐系统~java~mysql

摘 要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括家乡特色推荐的网络应用&#xff0c;在外国家乡特色推荐系统已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术&…...

二维码在设备点维一体化管理中的应用

随着科技发展&#xff0c;设备点维一体化管理体系应运而生&#xff0c;该管理体系的出现让设备维护保养变得更加高效精细化。 设备点维一体化管理体系以设备点检和维护保养为基础&#xff0c;通过日常、专业及精密点检&#xff0c;对点检测得的数据和设备给油脂保养情况进行统…...

基于simulink使用混合波束成形对射频毫米波发射器进行建模

一、前言 本例说明了一种使用66元件混合波束成形天线对32 GHz QPSK射频发射和接收系统进行系统级建模和仿真的方法。该系统包括射频缺陷、发射阵列辐射效应、窄带接收阵列和基带接收器&#xff0c;可校正系统损伤和消息解码。天线波束形成方向使用方位角和仰角定义&#xff0c;…...

面试官:v-model原理?

什么是v-model v-model是Vue框架中的一个指令&#xff0c;用来实现双向数据绑定。它能够在表单元素&#xff08;如输入框、复选框等&#xff09;和Vue实例中的数据属性之间建立起一条双向数据通道&#xff0c;使得当表单元素的值发生改变时&#xff0c;对应的数据属性也会相应…...

兰林:科技赋能健康产业 助力乡村振兴建设

万民健康创始人 万民智养中医创始人 万民星农CEO兰林 党建引领谋发展 &#xff0c; 旗帜下乡促振兴 。 乡村振兴&#xff0c;健康先行。自党的十八大以来&#xff0c;国家卫健委贯彻落实“以基层为重点”的党的卫生与健康工作方针&#xff0c;推动医疗卫生工作重心下移、资源下…...

小红书流量密码是什么,怎么掌握并运用

现在是个流量的社会&#xff0c;因为流量其实代表的就是收益&#xff0c;那面对一个流量时代&#xff0c;小红书现在而言毫无疑问是蓝海&#xff0c;品牌想要做好&#xff0c;自然要掌握平台流量密码。今天来和大家一起分享一下小红书流量密码有什么&#xff0c;流量密码可以用…...

FL Studio 2023中文高级版水果编曲软件下载

FL Studio 2023中文版是一款非常经典的音乐制作软件&#xff0c;这款软件除了可以为用户提供全面的音乐制作功能之外&#xff0c;还有丰富的主题和皮肤供用户选择&#xff0c;让用户不但做出的音乐具有自己的风格&#xff0c;连制作的音乐的过程也个性十足&#xff0c;非常适合…...

浅析如何写出高质量代码

你是否曾经为自己写的代码而感到懊恼&#xff1f;你是否想过如何才能写出高质量代码&#xff1f;那就不要错过这个话题&#xff01;在这里&#xff0c;我们可以讨论什么是高质量代码&#xff0c;如何写出高质量代码等问题。无论你是初学者还是资深开发人员&#xff0c;都可以在…...

手把手教你 ,带你彻底掌握八大排序算法【数据结构】

文章目录 插入排序直接插入排序希尔排序 选择排序选择排序堆排序升序 交换排序冒泡排序快速排序递归hoare版本挖坑法前后指针版本 非递归Hoare挖坑法前后指针 快排的优化三数取中法选key递归到小的子区间时&#xff0c;可以考虑使用插入排序 归并排序递归实现非递归实现 排序算…...

第十一章 Transform组件(上)

本章节我们介绍Transform类&#xff0c;它是一个组件&#xff0c;每一个游戏对象有拥有该组件。因此&#xff0c;它值得我们重点介绍一下。Transform代表了游戏对象的世界变换&#xff0c;也就是移动&#xff0c;选择和缩放。 首先&#xff0c;我们先介绍它的属性&#xff08;…...

aac音频怎么转mp3,这几个方法很简便

对于aac来说&#xff0c;其是一种高级音频编码&#xff0c;也是专门为声音数据设计的文件压缩格式。通常来说&#xff0c;aac与mp3有一些不同。aac使用了全新的算法进行编码的&#xff0c;其整体的效率较mp3更高一些。同时&#xff0c;aac格式的音质较好一些。但是&#xff0c;…...

分屏视图上线,详情数据秒切换

分屏视图 路径 表单 >> 表单设计 功能简介 新增「分屏视图」。分屏视图是一种对数据阅读提供沉浸式体验的视图组织形式&#xff0c;用户可通过分屏视图更快速的查看数据详情。 使用场景&#xff1a; 对于数据类型是「订单」数据的表单&#xff0c;管理人员往往会对…...

怎么释放C盘空间?清理C盘空间的4大方法分享!

案例&#xff1a;怎么释放c盘空间 【朋友们&#xff0c;最近我的c盘空间内存严重不足了&#xff0c;想释放一下c盘的空间&#xff0c;大家有什么好的方法吗&#xff1f;】 在使用电脑的过程中&#xff0c;经常会遇到C盘空间不足的问题&#xff0c;这时候就需要释放C盘的空间。…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析

1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级同步降压转换器&#xff08;DC-DC开关稳压器&#xff09;&#xff0c;属于高性能电源管理芯片。核心特性包括&#xff1a; 输入电压范围&#xff1a;2.95V–6V&#xff0c;输…...