mysql知识点+面试总结
目录
1 mysql介绍
2 数据库常见语法
3 数据库表的常见语法
4 其他常见语法(日期,查询表字段)
5 JDBC开发步骤
6 索引
6.1 索引常见语法
7 常见面试总结
8 java代码搭建监控页面
1 mysql介绍
数据库:存储在硬盘上的文件系统,通过标准的sql语句去操作
作用:存储各种各样的数据
2 数据库常见语法
2.1、创建数据库:
1、create database 数据库名 2、create database 数据库名称 character set 字符集
2.2、查看数据库:
查看所有的数据库:show databases;
查看单个数据库:show create database 数据库名;
2.3、删除数据库
Drop database 数据库名称;
2.4、修改数据库
Alter database 数据库名 character set 字符集;
2.5、数据库的其他操作
查看当前使用的数据库:select database();
切换数据库:use 数据库名;
2.6 修改库的排序规则
ALTER DATABASE db1 CHARACTER SET utf8 COLLATE utf8_unicode_ci
3 数据库表的常见语法
1 单表约束有哪些?
1、主键(唯一和非空)2、唯一 unique3、非空 not null
2 表操作语法
查看所有的表:show tables;
查看单个表:desc 表名;
删除数据库表:Drop table 表名;
修改表名称(慎用):Rename table 旧表名 to 新表名
添加列:alter 表名 add 列名 类型(长度) 约束
修改列的类型和约束:alter table 表名 modify 列名 类型(长度) 约束
修改列的名称:alter table 表名 change 旧列名 新列名 类型(长度) 约束
删除列:alter table 表名 drop 列名;
添加表字段:
alter table user add certificates_type varchar(1) not null;
alter table user add certificates_type varchar(1);
修改字段类型和注释
ALTER TABLE tb_user MODIFY COLUMN sex VARCHAR (20) COMMENT '年龄';
修改字段类型
alter table tb_user modify column age varchar(10);
修改表的字符集和所有列的字符集:
ALTER TABLE order CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
4 其他常见语法(日期,查询表字段)
获取当前日期:select curdate();
获取当月最后一天:select last_day(curdate()); //2019-08-31
获取下个月的第一天:select date_add(curdate()-day(curdate())+1,interval 1 month);
获取下个月的最后一天:select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now()) day),interval -2 month)
获取当前年的最后一天:select concat(YEAR(now()), '-12-31') //2019-12-31
获取当前年的第一天:select DATE_SUB(CURDATE(),INTERVAL dayofyear(now()) - 1 DAY) //2019-01-01
获取前一天:SELECT date_sub(NOW(), INTERVAL 1 DAY);
日期格式化:select DATE_FORMAT(CURDATE(), '%Y-%m-%d')
其他查询:
- set @dt = now();
- select date_add(@dt, interval 1 day); - 加1天
- select date_add(@dt, interval 1 hour); -加1小时
- select date_add(@dt, interval 1 minute); - 加1分钟
- select date_add(@dt, interval 1 second); -加1秒
- select date_add(@dt, interval 1 microsecond);-加1毫秒
- select date_add(@dt, interval 1 week);-加1周
- select date_add(@dt, interval 1 month);-加1月
- select date_add(@dt, interval 1 quarter);-加1季
- select date_add(@dt, interval 1 year);-加1年
查询表字段(包含字段名、字段类型、字段长度、是否为空以及属性等)
SELECT
COLUMN_NAME AS columnName,
data_type AS columnType,
CHARACTER_MAXIMUM_LENGTH AS columnLength,
IS_NULLABLE AS isNull,
COLUMN_COMMENT AS columnComent
FROM
INFORMATION_SCHEMA. COLUMNS
WHERE
table_name = 'sys_user'
查看当前年的所有月份sql(直接复制运行即可)
SELECT
DATE_FORMAT( DATE_ADD( CONCAT( YEAR ( DATE( '2018-04-01' )), '-01-01' ), INTERVAL ( CAST( help_topic_id AS SIGNED INTEGER )) MONTH ), '%Y-%m' ) MONTH
FROM
mysql.help_topic
WHERE
help_topic_id < 12
ORDER BY
MONTH ASC
5 JDBC开发步骤
1、注册驱动 class.forNanme(“com.mysql.jdbc.Driver”)
注册驱动的方法 static void registerDriver(Driver driver)
2、获取连接对象:
方法:
Static Connection getConnection(Stirng url, String user, Stirng password)
Connection:返回连接的对象
url:数据库的地址
user:用户名
password:密码
Connectionconn = DriverManager.getConnection(url,name,password);
3、创建语句执行平台:
Statement stat = conn.createStatement();
executeUpdate(sql);
4、执行sql语句
select * from 表名 条件;
5、处理结果集
6、释放资源
6 索引
6.1 索引常见语法
创建索引
//普通索引 alter table table_name add index index_name (column_list) ; //唯一索引 alter table table_name add unique (column_list) ; //主键索引 alter table table_name add primary key (column_list) ;
删除索引
drop index index_name on table_name ; // table_name :表名 index_name :索引名 alter table table_name drop index index_name ; alter table table_name drop primary key ;
查看索引
(1)show index from tblname;
(2)show keys from tblname;
4.5 查询mysql定时器是否开启
show VARIABLES LIKE '%event_scheduler%';
如果为OFF则为关闭,为NO为开启
mysql不能使用group by
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
7 常见面试总结
mysql常见的索引有哪些?
主键索引
唯一索引
普通索引
全文索引
组合索引
导致索引的失效的原因有哪些?
- 查询条件不规则:如like,%a%,like %在左边
- 使用函数:如:length, where length(xx) = 1;
- 计算操作:如 where id+1=100;
- 查询字段的数据类型不匹配,如一个是utf8 另一个是utf8mb4
==========================================设计模式===============================
单例设计模式:保证对象的唯一性
懒汉式:延迟加载 当我需要这个对象的时候才去加载
面试之前 敲两遍饿汗式 懒汉式
8 java代码搭建监控页面
druid数据库连接池监控页面
相关文章:
mysql知识点+面试总结
目录 1 mysql介绍 2 数据库常见语法 3 数据库表的常见语法 4 其他常见语法(日期,查询表字段) 5 JDBC开发步骤 6 索引 6.1 索引常见语法 7 常见面试总结 8 java代码搭建监控页面 1 mysql介绍 数据库:存储在硬盘上的文件系统…...

前端大屏常用的适配方案
假设我们正在开发一个可视化拖拽的搭建平台,可以拖拽生成工作台或可视化大屏,或者直接就是开发一个大屏,首先必须要考虑的一个问题就是页面如何适应屏幕,因为我们在搭建或开发时一般都会基于一个固定的宽高,但是实际的…...

技术债 笔记
目录 1. 技术债 笔记1.1. 什么是技术债1.2. 讨论1.3. 国内技术从业者怎么看? 1. 技术债 笔记 1.1. 什么是技术债 1992 年, Ward Cunningham 在敏捷宣言中首次提出了"技术债"概念, 主要指有意或无意地做了错误的或不理想的技术决策所累积的债务。随后, 《重构》一书…...

【Leetcode】102.二叉树的层序遍历
一、题目 1、题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例2: 输入:root = [1] 输出:[[1]]示例3: 输入:root = [] 输出:[]…...

上传文件报413Request EntityToo Large错误解决办法
产生这种原因是因为服务器限制了上传大小 1、nginx服务器的解决办法 修改nginx.conf的值就可以解决了 将以下代码粘贴到nginx.conf内 client_max_body_size 20M 可以选择在http{ }中设置:client_max_body_size 20m; 也可以选择在server{ }中设置:cli…...

Neo4j之MERGE基础
在 Neo4j 中,MERGE 语句用于根据指定的模式进行创建或匹配节点和关系。它可以在节点或关系不存在时创建它们,并在已存在时进行匹配。 创建或匹配节点: MERGE (p:Person {name: John});这个查询会检查是否已经存在一个具有 "Person&quo…...

AbstractRoutingDataSource,spring配置多数据源问题
AbstractRoutingDataSource,spring配置多数据源问题 首先引入pom.xml依赖 <!--测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.3.12.RE…...

日常BUG—— SpringBoot项目DEBUG模式启动慢、卡死。
😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 我们调试程序时,需要使用DEBUG模式启动SpringBoot项目, 有时候会发…...

Linux网络编程(TCP状态转换关系)
文章目录 前言一、TCP状态转换图二、TCP连接状态转换解析三、TCP断开状态转换解析四、为什么需要有2MLS时长总结 前言 本篇文章来讲解一下TCP的状态转换关系,学习这个状态转换关系对于我们深入了解网络编程是非常有必要的。 一、TCP状态转换图 二、TCP连接状态转换…...

tauri-vue:快速开发跨平台软件的架子,支持自定义头部UI拖拽移动和窗口阴影效果
Tauri Vue Typescript 一个使用 taurivuets 开发跨平台软件的模板,支持窗口头部自定义 UI 和拖拽和窗口阴影,不用再自己做适配了,拿来即用,非常 nice。而且已经封装好了 tauri 的 http 请求工具,省去很多弯路。开源…...

做好以下几点,可以让我们延长周末体验感,好好放松!!!
工作以后常常容易感到疲于奔命,让我们找到适合自己方式,来让我们度过一个充实放松的周末! 方向一:分享你周末的时间规划 我们可以把每个月当做一个周期,制定一个简单的计划,如:第一周,锻炼身体…...

Python 学习笔记——代码基础
目录 Python基础知识 变量 赋值 数据类型 print用法 print格式化输出 运算符 if-else 数据结构 元组 in运算符 列表 切片 [ : ] 追加 append() 插入 insert() 删除 pop() 字典 循环 for循环 for循环应用——遍历 for循环应用——累加…...

Android Studio 无法正常导入项目
Android Studio 无法正常导入 model,运行按钮边出现“Add Configuration”,可进行以下方法处理: 解决办法: 1、点击Run三角按钮左边紧挨的下拉按钮,选择Edit Configuration,选择 Default 新建一个Android…...

Grafana+Prometheus技术文档-进阶使用-监控spring-boot项目
阿丹: 之前已经实现了使用Prometheus来对服务器进行了监控和仪表盘的创建,现在就需要对这些监控方法使用在spring-boot中去。 实现思路: 1、集成Actuator 2、加入Prometheus的依赖 3、配置开放端口、以及开放监控 4、配置Prometheus中的配置…...

PG常用SQL
数据库 创建数据库 PostgreSQL 创建数据库可以用以下三种方式: 1、使用 CREATE DATABASE SQL 语句来创建。2、使用 createdb 命令来创建。3、使用 pgAdmin 工具。 CREATE DATABASE 创建数据库 CREATE DATABASE 命令需要在 PostgreSQL 命令窗口来执行࿰…...

分模块开发的意义及开发步骤
🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Maven进阶 一、分模块开发1.1分模块开发的意义1.2分模块开…...

vue-router中的一些 API
在Vue.js的vue-router中,一些重要api 1、RouterHistory:这是 vue-router 提供的路由历史记录对象。它可以跟踪当前页面的路由历史,并提供一些方法和属性来管理导航和历史记录。在 vue-router 中,有两种类型的路由历史记录对象&…...

go-zero 是如何实现令牌桶限流的?
原文链接: 上一篇文章介绍了 如何实现计数器限流?主要有两种实现方式,分别是固定窗口和滑动窗口,并且分析了 go-zero 采用固定窗口方式实现的源码。 但是采用固定窗口实现的限流器会有两个问题: 会出现请求量超出限…...

Oracle/PL/SQL奇技淫巧之ROWNUM伪列
ROWNUM伪列 ROWNUM是一个伪列,它是根据每次查询的结果动态生成的一列递增编号,表示 Oracle 从表中选择该行的顺序,选择的第一行ROWNUM为1,第二行ROWNUM为2,以此类推。 注意1: ROWNUM伪列是在WHERE子句之…...

“MongoDB基础知识【超详细】
"探索MongoDB的无边之境:沉浸式数据库之旅" 欢迎来到MongoDB的精彩世界!在这个博客中,我们将带您进入一个充满创新和无限潜力的数据库领域。无论您是开发者、数据工程师还是技术爱好者,MongoDB都将为您带来一场令人心动…...

腾讯24届校招内推
校招开始啦~有兴趣的话可以扫我的码投,也可以分享给身边找工作的同学~ ❤投递攻略 1️⃣腾讯校招步骤,先微信扫码绑定内推关系,后在电脑上上传更改简历和部门投递 2️⃣投递时将选择投递部门,投递后将在…...

星际争霸之小霸王之小蜜蜂(二)--类的使用
目录 前言 一、将设置内容写在一个类里 二、设置小蜜蜂的造型 三、设置猫蜜蜂的参数 四、绘制猫蜜蜂到窗口 总结 前言 昨天我们设置好了窗口,下面我们需要向窗口中添加元素了。 一、将设置内容写在一个类里 我个人理解书上的意思是要创建一个类,将所有需…...

AndroidStudio升级Gradle之坑
最近在做旧工程的升级,原来的Gradle版本是4.6的,需要升级到7.6,JDK从8升级到17,一路淌了很多坑,逐个记录下吧 1、Maven仓库需要升级到https 你会遇到这个报错 Using insecure protocols with repositories, without …...

C# int ? 关键字使用方法
使用C#的时间也不算短。 但是今天看到了一个从来没有见过的写法 Int ?这是个什么写法,没见过啊,百度了查一下,也在这里记录一下。 1、int? 关键字说明 (1)、int? 表示一个int类型,且该int类型可空,如果不加?的话,那么int类…...

Redis_主从复制
8. 主从复制 8.1 简介 主从库采用读写分离的方式 读操作:主库、从库都可以处理写操作:首先写到主库执行,然后再将主库同步给从库。 实现读写分离,性能扩展 容灾快速恢复 8.2 主从复制步骤 创建一个目录 ,在root下创建一个m…...

Postman 的 Pre-request Script 使用RSA加解密
文章目录 一、概述 一、概述 Postman内置的Js不支持进行RSA加解密,所以需要引入forgeJS来实现。在 Pre-request Script使用以下脚本: // ------ 导入RSA ------ if (!pm.globals.has("forgeJS")) {pm.sendRequest("https://raw.githubu…...

【Swagger】只需要3步搭建Swagger环境,就可以让你的项目实现Swagger在线文档,实时浏览,修改展示
目录 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 项目启动中加入Swagger注解的开关,启动Swagger功能 4. 启动项目,查看效果 Swagger 的功能这里就不多说明了,相信大家都懂的,好奇多问一句,大家有知道其…...

pytest运行时参数说明,pytest详解,pytest.ini详解
一、Pytest简介 1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点: 简单灵活,容易上手,支持参数化 2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试…...

Matplotlib绘图知识小结--Python数据分析学习
一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行…...

mouseover、mouseout和mouseenter、mouseleave之间的区别(配对使用)
以上四个事件都是与鼠标相关的事件,其中mouseenter和mouseover均是鼠标移入时触发的事件,但是使用mouseover的时候会触发冒泡事件,也就是,当父元素和子元素均绑定mouseover事件的时候,如果触发子元素的mouserover事件&…...