django网站开发源代码,企业建设网站的空间有哪些,关于网站开发的引言,广州工程建设信息网站面试是工作的第一步#xff0c;面试中面试官所提出的问题千奇百怪#xff0c;其中关于网络数据库后端框架面试题汇总如下#xff1a;
1#xff0c;关系型数据库和非关系型数据库的区别
关系型数据库主要有 MYsql Iracle SQLSever等
相对于非关系型数据库的优势为查询效率…面试是工作的第一步面试中面试官所提出的问题千奇百怪其中关于网络数据库后端框架面试题汇总如下
1关系型数据库和非关系型数据库的区别
关系型数据库主要有 MYsql Iracle SQLSever等
相对于非关系型数据库的优势为查询效率高有通用的sql 可以进行复杂的查询支持事务数据相对于安全。
支持事务 可以用SQL语句方便的在一个表以及多个表之间做复杂的数据查询。由于有事务的支持使得对于安全性能很高的数据访问要求得以在此实现。 非关系型数据库 主要有MongoDB Redis等
优点为性能高 可扩展
NOSQL是基于键值对的可以想象成表中主键和值的对应关系而不是需要经过SQL层的解析所以性能非常高。同样基于键值对的存储数据之间没有耦合性所以非常容易进行水平扩展
其中MongoDB的使用场景为数据不是特别的重要数据表的结构变化较为频繁数据量也特别大数据并发性也特别高数据结构比较特别。这些情况下使用MongoDB比较合适。
2 redis数据库有哪几种数据结构
redis数据库主要有以下几种数据结构string 字节hash 哈希 list 列表 set 集合 zset
3 MongoDB数据库有哪些优点 第一 模式自由面向集合存储项目增删字段不影响程序的运行
第二 具有丰富的查询表达式 支持动态查询根据特定条件来执行查询来满足项目的数据查询需求
第三 具有良好的索引支持文档内嵌套对象和数组都可以创建索引
第四 支持二进制数据存储可已经图片视频等文件转换成二进制流存储起来
第五 以内存映射为存储引擎 大幅度提升性能 4 SQL查询优化有哪些
使用limit 对结果的记录进行限定
避免selece * 的使用将需要查找的字段列出来
使用连接join来替代子查询
拆分大的delete或者insert语句
可通过开启慢查询日志来找出比较慢的SQL
不做列运算 SELECT ID WHERE AGE 1 10 , 任何对列的操作都将导致表扫描它包括数据库教程函数计算表达式等查询时要尽可能将操作移至等号右边
sql 语句尽量简单一天sql只能在cpu运算大语句拆小语句减少锁时间一条大sql可以堵死整个库
OR改写成IN OR的效率是O(n级别 IN 的效率是O(logn)级别 in的个数建议控制在200以内
不用函数和触发器 在应用程序实现
避免%xxx式查询
少用join
使用同类型进行比较 比如用‘123’和‘123’ 123和123
尽量避免在WHERE子句中使用 和操作符 这样引擎将放弃使用索引而是进行全表扫描
对于连续数值 使用BETWEEN不用IN
列表数据不要拿全表使用limit来分页每页数量不要太大 5 什么是数据库触发器
触发器Tigger是用户定义在关系表上的一类由事件驱动的特殊过程。
触发器保存在数据库服务器中。
任何用户对表的增删改查均由服务器自动激活相应的触发器。
触发器可以实施更为复杂的检查和操作具有更精细和更强大的数据控制能力。 6 关于redis发布订阅你了解哪些
本质就是设计模式中的观察者模式 类似主播上线 发送通知 订阅关注的人收到此消息执行不同的行为
7 请你说说mysql数据库中常见的函数有哪些作用是什么
常见的函数主要有
字符串函数
其中包括
char_length():返回字符串的长度字符串的字符数
length():也是返回字符串的长度 字符串的字节数
substring(): 从字符串中提取字符串它可以根据指定的起始位置和长度来截取原始字符串的一部分
SELECT SUBSTRING(Hello World, 1, 5); -- 返回结果为 Hello
concat():将两个或者多个字符串连接起来生成一个新的字符串
SELECT CONCAT(Hello, , World); -- 返回结果为 Hello World
TRIM():用于删除字符串的开头和结尾的空格或者其他指点字符
SELECT TRIM( Hello ); -- 返回结果为 Hello
SELECT TRIM(LEADING 0 FROM 0008675309); -- 返回结果为 8675309
SELECT TRIM(BOTH , FROM ,,,Hello,,,); -- 返回结果为 Hello
数学函数
其中包括
ABS():返回一个数的绝对值
SELECT ABS(-10); -- 返回结果为 10
SELECT ABS(5.5); -- 返回结果为 5.5
SELECT ABS(0); -- 返回结果为 0CEIL用于返回大于或等于给定值的最小整数值也就是向上取整
SELECT CEIL(5.3); -- 返回结果为 6
SELECT CEIL(-3.8); -- 返回结果为 -3
SELECT CEIL(9.0); -- 返回结果为 9
FLOOR():用于返回小于或等于给定数值的最大整数值 也就是向下取整
SELECT FLOOR(5.3); -- 返回结果为 5
SELECT FLOOR(-3.8); -- 返回结果为 -4
SELECT FLOOR(9.0); -- 返回结果为 9ROUND对于一个数进行四舍五入并返回指定小数位数的结果
SELECT ROUND(5.732, 2); -- 返回结果为 5.73
SELECT ROUND(3.1456, 2); -- 返回结果为 3.15POW():用于计算一个数的指定次幂
SELECT POW(2, 3); -- 返回结果为 8 (2的3次方)
SELECT POW(5, 2); -- 返回结果为 25 (5的2次方)日期函数
其中包括
MONTH()提取日期中的月份部分 YEAR函数同理
SELECT MONTH(2024-06-01); -- 返回结果为 6
SELECT MONTH(1999-12-31); -- 返回结果为 12DAYOFMONTH() 函数用于提取日期中的日份部分
DATADIFF计算两日期之间的天数差异
SELECT DATEDIFF(2024-06-01, 2024-05-01); -- 返回结果为 31
SELECT DATEDIFF(2024-12-31, 2024-01-01); -- 返回结果为 365DATA_FORMAT():将日期按照指定格式进行格式化
SELECT DATE_FORMAT(2024-06-01, %Y-%m-%d); -- 返回结果为 2024-06-01
SELECT DATE_FORMAT(2024-06-01, %W, %M %e, %Y); -- 返回结果为 Saturday, June 1, 2024DATE_ADD对日期进行加法运算 sub_date对日期进行减法运算
SELECT DATE_ADD(2024-06-01, INTERVAL 1 DAY); -- 返回结果为 2024-06-02
SELECT DATE_ADD(2024-06-01, INTERVAL 1 MONTH); -- 返回结果为 2024-07-01
SELECT DATE_ADD(2024-06-01, INTERVAL 1 YEAR); -- 返回结果为 2025-06-01判断函数
其中包括
IF()和IFNULL
加密函数
其中包括
md5, password
聚合函数
sum , avg , count, max, min
关注我下期继续分享