龙岩北京网站建设,网站开发工程是待遇,重庆璧山网站制作公司推荐,v7v3 wordpress目录
1.什么是数据库?
关系型数据库
非关系型数据库
2.Mysql出现性能差的原因?
3.MySQL的内联,左外联,右外连接的区别 4.为什么要有三大范式
建表需要考虑的问题?
char和varchar的区别
blob和text的区别?
DATETIME和TIMESTAMP的区别
in和exists的区别
null值陷 …目录
1.什么是数据库?
关系型数据库
非关系型数据库
2.Mysql出现性能差的原因?
3.MySQL的内联,左外联,右外连接的区别 4.为什么要有三大范式
建表需要考虑的问题?
char和varchar的区别
blob和text的区别?
DATETIME和TIMESTAMP的区别
in和exists的区别
null值陷
5.记录货币用什么类型比较好
6.怎么存储emoji
7.DROP,DELETE,TRUNCATE的区别?
8.UNION和UNIONALL的区别
9.一条sql的执行流程
10.mysql中bin目录下的执行文件
11.隐式数据类型转换 1.什么是数据库?
数据库是按照数据结构来组织、存储和管理数据的仓库它是计算机系统中用于高效存储和处理数据的核心组件。分为关系型数据库和非关系型数据库.
关系型数据库
采用关系模型二维表格结构来组织数据强调数据的一致性和完整性支持 SQL结构化查询语言进行操作。
MySQL开源免费性能稳定易于部署和使用是 Web 应用开发中最常用的数据库之一。PostgreSQL功能强大的开源关系型数据库支持复杂的数据类型和高级查询对事务的支持非常完善适合对数据一致性要求高的企业级应用Oracle商业级关系型数据库性能卓越安全性高支持大规模数据存储和并发处理广泛应用于大型企业的核心业务系统如银行的交易系统、电信的客户管理系统等。SQL Server微软推出的关系型数据库与 Windows 系统和.NET 平台兼容性好适合在微软技术栈环境下开发的应用如企业内部的管理系统等。
非关系型数据库
MongoDB文档型数据库数据以类似 JSON 的文档形式存储结构灵活适合存储非结构化或半结构化数据如博客文章、用户评论、产品描述等。Redis内存数据库读写速度极快支持多种数据结构字符串、哈希、列表、集合等常被用作缓存、会话存储、实时排行榜等场景。例如电商网站的商品详情页缓存可以用 Redis 来提升访问速度。Cassandra分布式列存储数据库具有高可用性、高扩展性和容错能力适合处理海量数据如社交网络的用户行为数据、物联网设备产生的海量日志数据等。Elasticsearch基于 Lucene 的搜索引擎数据库擅长全文检索和数据分析常用于日志分析、商品搜索、企业内部文档检索等场景。
2.Mysql出现性能差的原因?
可能是 SQL 查询使用了全表扫描也可能是查询语句过于复杂如多表 JOIN 或嵌套子查询。
也有可能是单表数据量过大。
锁和并发问题
通常情况下添加索引就能解决大部分性能问题。对于一些热点数据还可以通过增加 Redis 缓存来减轻数据库的访问压力。
3.MySQL的内联,左外联,右外连接的区别
连接类型保留哪边的所有行匹配不到时如何处理结果集特点INNER JOIN都不保留直接丢弃只保留两边都匹配上的行LEFT JOIN保留左表所有行右表补 NULL左表全有右表补空RIGHT JOIN保留右表所有行左表补 NULL右表全有左表补空 4.为什么要有三大范式
第一范式: 列不可再分(原子性)
第二范式::非主属性必须完全依赖于主键
第三范式:非主属性不能依赖于其他的非主属性
三大范式主要是防止数据冗余
建表需要考虑的问题?
首先需要考虑表是否符合数据库的三大范式确保字段不可再分消除非主键依赖确保字段仅依赖于主键等。
然后在选择字段类型时应该尽量选择合适的数据类型。
在字符集上尽量选择 utf8mb4这样不仅可以支持中文和英文还可以支持表情符号等。
当数据量较大时比如上千万行数据需要考虑分表。比如订单表可以采用水平分表的方式来分散单表存储压力。
char和varchar的区别
varchar是可变型的字符类型 char是固定长度
blob和text的区别?
blob是二进制的数据 比如图片,视频,音频等,text是用来存储文本数据
DATETIME和TIMESTAMP的区别
DATETIME 直接存储日期和时间的完整值与时区无关。默认是null
TIMESTAMP 存储的是 Unix 时间戳1970-01-01 00:00:01 UTC 以来的秒数受时区影响。默认是当前的时间
in和exists的区别
in是子查询,将子查询的结果集用于外部内容,适用于结果集较小的情况
in会有性能瓶颈,因为会建一个临时表 存储到内存中
exists会对外部每一行执行一次子查询,关注点在于子查询是否返回行 是则为ture,适用于子查询结果集比较大的情况
null值陷
IN: 如果子查询的结果集中包含 NULL 值可能会导致意外的结果。例如WHERE column IN (subquery)如果 subquery 返回 NULL则 column IN (subquery) 永远不会为真除非 column 本身也为 NULL。
EXISTS: 对 NULL 值的处理更加直接。EXISTS 只是检查子查询是否返回行不关心行的具体值因此不受 NULL 值的影响。
5.记录货币用什么类型比较好
DECIMAL
6.怎么存储emoji
一般用UTF-8mb4字符集
7.DROP,DELETE,TRUNCATE的区别?
DROP 是物理删除用来删除整张表包括表结构且不能回滚。
DELETE 支持行级删除可以带 WHERE 条件可以回滚。
TRUNCATE 用于清空表中的所有数据但会保留表结构不能回滚。
8.UNION和UNIONALL的区别
UNION会去重
9.一条sql的执行流程
SQL 文本↓
[连接器] 认证、维持连接↓
[查询缓存] 8.0 已废弃↓
[解析器] 拆词 → 语法树↓
[预处理器] 语义检查、权限校验↓
[优化器] 选索引、生成执行计划↓
[执行器] 调存储引擎接口↓
[存储引擎] 读磁盘 → 内存 → 返回行↓
客户端收到结果
10.mysql中bin目录下的执行文件
mysql用于连接 MySQL 服务器mysqldump用于数据库备份对数据备份、迁移或恢复时非常有用mysqladmin用来执行一些管理操作比如说创建数据库、删除数据库、查看 MySQL 服务器的状态等。mysqlcheck用于检查、修复、分析和优化数据库表对数据库的维护和性能优化非常有用。mysqlimport用于从文本文件中导入数据到数据库表中适合批量数据导入。mysqlshow用于显示 MySQL 数据库服务器中的数据库、表、列等信息。mysqlbinlog用于查看 MySQL 二进制日志文件的内容可以用于恢复数据、查看数据变更等
11.隐式数据类型转换
当一个整数和一个浮点数相加时整数会被转换为浮点数。
SELECT 1 1.0; -- 结果为 2.0
当一个字符串和一个整数相加时字符串会被转换为整数。
SELECT 1 1; -- 结果为 2
隐式转换会导致意想不到的结果最好通过显式转换来规避