当前位置: 首页 > 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盘的空间。…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

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

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

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...