MySql数据库相关小知识
场景:再次复习MySql数据库相关知识,记录下
创建数据库时,推荐用下列建表语句(这样就可以存储 emjoi 表情符号了):
CREATE DATABASE IF NOT EXISTS dbname default character set utf8mb4 collate utf8mb4_unicode_ci;
SQL中的having语句:
SQL 中的
HAVING
子句用于筛选分组 ( GROUP BY ) 后的各组数据,相当于 SELECT 语句中的 WHERE 语句:SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;
针对于列的修改语句:
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name
数据库视图的使用(视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。):
CREATE VIEW <视图名> AS <SELECT语句>;
SELECT * FROM 视图名;
查看所创建的视图:
show table status where comment=‘view’;
删除指定的视图:
DROP VIEW <视图名1> [ , <视图名2> …]
Find_IN_SET函数的使用(之前在项目中引用过,所以特意去看这个函数):
Find_IN_SET:如果字符串str在由N个子字符串组成的字符串列表strlist中,则返回1到N范围内的值。字符串列表是由,个字符分隔的子字符串组成的字符串。如果第一个参数是常量字符串,第二个参数是SET类型的列,则FIND_IN_SET()函数将优化为使用位算术。如果str不在strlist中或strlist是空字符串,则返回0。如果任一参数为NULL,则返回NULL。如果第一个参数包含逗号(,)字符,则此函数无法正常工作。
-------------------------------------------------------------------------------------------------------------------------
有的朋友看完定义会有这样的疑问:[sql的like'%模糊查询%'不也是查询属性里含有的数据吗?]
是的,在某一方便他俩确实很相似,但就定义说的说的->Find_IN_SET函数查询数据时是以,进行数据分割,从而精确的进行了数据查询。下面我举例给大家示范:
1.(select * from tb_user;)
2.(SELECT * FROM tb_user WHERE roles LIKE '%8%';)
3.(select * from tb_user where FIND_IN_SET(8, roles);)
模糊查询是把数据中含有这个'8'的数据全部查询出来,而FIND_IN_SET函数是按','(逗号)进行分割,精确的查询数据含有'8'的数据,部分角色权限、商品属性类型字段等,可能会应用到,这个时候我们还是用FIND_IN_SET,而不是模糊查询。
Lpad函数和Rpad函数:
lpad(str1,length,str2)。其中str1是第一个字符串,length是结果字符串的长度,str2是一个填充字符串。如果str1的长度没有length那么长,则使用str2在左侧填充;如果str1的长度大于length,则截断。
Rpad(str1,length,str2)。其中str1是第一个字符串,length是结果字符串的长度,str2是一个填充字符串。如果str1的长度没有length那么长,则使用str2在右侧侧填充;如果str1的长度大于length,则截断。
示例:
首先表中的全部数据:
使用lpad查询:
如果查询的字段不满足位数,则在左侧起按我们给的数值补齐5位;
再看rpad:
如果查询的字段不满足位数,则在右侧起按我们给的数值补齐5位;
我们将id都修改为5位然后去查询:
看到从左边起截取两位,rpad同理;
当然另一个小用途是之前在项目用到的,当我们从A表向B表 迁移数据的时候,b表的id要求是PC拼接的32位,这个函数就很好的满足了条件。
REPLACE INTO:REPLACE INTO没有实际应用,浅浅记录:
REPLACE INTO
用于实时覆盖写入数据。写入数据时,会先根据主键判断待写入的数据是否已经存在于表中,并根据判断结果选择不同的方式写入数据:
- 如果待写入数据已经存在,则先删除该行数据,然后插入新的数据。
- 如果待写入数据不存在,则直接插入新数据。
写法和insert语句一样(REPLACE INTO tb_user value (10000,'庞胖','10,20,30');):
要继续打工,就记录到此吧
MySql数据库相关小知识相关推荐
- 机构数据分析培训之关于Mysql定义及数据库相关小知识
机构数据分析培训之关于Mysql定义及数据库相关小知识 一.关于Mysql定义 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度 ...
- [python学习] 专题九.Mysql数据库编程基础知识
在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...
- mysql数据库python基础知识_python学习之Mysql数据库编程基础知识介绍
在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...
- 38个MySQL数据库的小技巧
1.如何快速掌握MySQL? 培养兴趣 兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率.当然学习MySQL 5.6也不例外. 夯实基础 计算机领域的技术非常强调基础,刚开始学习可能还 ...
- 后端程序员必备:mysql数据库相关流程图/原理图芬芬细雨
前言 整理了一些Mysql数据库相关流程图/原理图,做一下笔记,大家一起学习. 1.mysql主从复制原理图 mysql主从复制原理是大厂后端的高频面试题,了解mysql主从复制原理非常有必要. 主从 ...
- 后端开发-MySQL数据库相关流程图原理图
前言 整理了一些 MySQL 数据库相关流程图/原理图.做一下笔记,分享给大家一起学习. 1. MySQL 主从复制原理图 MySQL 主从复制原理是大厂后端的高频面试题,了解 MySQL 主从复制原 ...
- 2. Mysql数据库的入门知识
2. Mysql数据库的入门知识 (1)打开Windows系统提供的服务查看相应的服务. (2)在Windows任务管理器的进程中查看 (3)使用命令行管理windows的Mysql数据库服务. Ne ...
- zabbix5.0 High swap space usage ( less than 50% free)解决步骤。相关小知识:linux系统mem和swap的关系
zabbix5.0 系统报错High swap space usage ( less than 50% free) 一,执行free -m,看看目前内存是多少 total used ...
- 大厂面试 Mysql数据库相关面试题总结
1.列举常见的关系型数据库和非关系型都有那些? 关系型数据库:Oracle.DB2.Microsoft SQL Server.Microsoft Access.MySQL 非关系型数据库:NoSql. ...
最新文章
- 图文解说nginx中server的匹配顺序
- [IS-IS] IS-IS路由协议的基本知识及配置
- Git远程操作详解【转】
- VMware发布新版vSphere6.5虚拟化平台,助力企业数字化转型
- 【简明表】MATLAB + 矩阵运算
- react学习(6)----react样式多用内联
- google海底光缆图_感受技术震撼:全球海底光缆分布图详解(附源地图链接)
- 人工智能学习(三)Anaconda与PyCharm的结合
- iOS用户体验之-modal上下文
- Spring揭秘 读书笔记
- cpu压测 windows_怎么用AIDA64进行CPU压力测试?
- Smobiler错误记录
- 前端特效 - 前置- - 01. 百叶窗
- 封堵高危端口,预防勒索病毒
- html的header背景图片,关于在HTML插入背景图片的问题
- 嵌入式高速串行并行技术_推荐(张锋)
- Maxima在线性代数的应用
- 计算机考试后的感想,计算机考试的感想
- 使用OpenGL,在窗口中绘制两个立体图形,位置分别为窗口的左侧和右侧,添加光照,两个图形分别绕x轴和y轴旋转。
- 生日蛋糕(noi99)