MySQL
文章平均质量分 82
记录一些与MySQL相关的学习笔记
一纸春秋
张鼎元的博客。
展开
-
牛客网sql题库(31-60题)—— 个人答案与过程解析
32 请将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分select concat(last_name,' ',first_name) from employees;解析,两种字符串连接方式:mysql CONCAT(str1,str2,…) 和 CONCAT_WS(separator,str1,str2,…)33 建表create table actor( actor_id smallint(5) not null ,原创 2022-02-10 21:47:58 · 1398 阅读 · 0 评论 -
MySQL笔记 —— 牛客网刷题笔记
user_profile表question_practice_detail表question_detail表29.计算用户的平均次日留存率select count(date2)/count(date1)from( select distinct a.device_id, a.date as date1, b.addday as date2 from question_practice_detail as a left join (sel原创 2022-01-12 15:11:49 · 546 阅读 · 0 评论 -
MySQL笔记 ——加载和导出sql文件
导出sql文件首先进入mysql的命令行模式mysql -u root -p123456;然后建立表以及插入数据mysql> create table teacher(id int primary key ,name varchar(20),age int)engine=innodb;Query OK, 0 rows affected (0.02 sec)mysql> show tables;+-------------------+| Tables_in_student |原创 2021-12-06 19:40:38 · 859 阅读 · 0 评论 -
SpringBoot笔记 —— 利用redis数据库和mysql数据库查询获取数据
在之前写的SpringBoot项目中SpringBoot笔记 —— 使用MVC和三层架构模拟网站用户登录检查SpringBoot笔记 —— 数据库连接池使用数据库连接池,解决了多次创建连接的问题。现在又要开始思考一个新的问题,那就是如何提高查询效率。在上面的博客里面,我都是通过查询mysql数据库来获取相应的数据,但是当要查询的表里面的数据非常多的时候,比如数十万的数据,查询效率就会很低,往往要消耗两三秒的时间才能查询到一条数据。而在学习redis数据库之后,我们可以通过这个基于内存的数据库来提升原创 2021-11-16 22:37:10 · 4445 阅读 · 0 评论 -
MySQL批量插入数据(addBatch(),executeBatch())(解决数据库插入汉字乱码问题)
利用addBatch()和executeBatch()批量插入数据addBatch()将多条sql语句装载在一起executeBatch()将addBatch()装载在一起的多条sql语句一次性执行,并返回一个数组,每执行成功一次就在数组中添加一个1,否则添加一个0现在有一个需求,将99条学生信息加载到表studentTest中,并且每一条数据都变成十条,总共990条数据使用连接池来连接数据库,下面是DBCP连接池工具类的代码package com.demo.spring.util;impo原创 2021-11-13 20:56:35 · 4033 阅读 · 4 评论 -
SpringBoot笔记 —— 数据库连接池
首先写一个测试类,来看一下连接池的运行过程package com.demo.spring.test;import org.apache.commons.dbcp2.BasicDataSource;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class DBCPTest { public原创 2021-11-13 16:18:01 · 4477 阅读 · 1 评论 -
SpringBoot笔记 —— 使用MVC和三层架构模拟网站用户登录检查
通过Spring简单实现前端和后端的交互首先新建一个UserController类,里面放着会被前端访问的方法前端界面点击登录按钮后,实际上是通过springboot访问后端的对应方法。通过Spring实现前后端交互比如点击百度用户界面的登录按钮,按F12检查网页,到network下面,点击登录按钮会发现访问的是一个地址,类似于 http://master:3306/package/?login。点击前端的按钮会通过这个地址,将输入的username和password的值,传入后端对应的登录检查方原创 2021-11-12 22:55:30 · 3861 阅读 · 0 评论 -
牛客网sql题库(1-30题)—— 个人答案与过程解析
本篇博客分享一下我在牛客网sql题库刷题时,自己敲出来的结果。结果均通过了牛客网题目验证。具体的题目就不放在博客中了,感兴趣可以自行去搜索牛客网,找到sql题库在线编程(1) 查找employees里最晚入职员工的所有信息select * from employees where hire_date=(select max(hire_date) from employees);(2) 查找employees里入职员工时间排名倒数第三的员工所有信息select * from employee原创 2021-11-11 19:56:19 · 4834 阅读 · 0 评论 -
MySQL笔记 —— 求分组前几名问题总结(单表求topn,多表求topn,索引求topn)
目录只有一张表的情况下,求取某个字段值的topn问题需要两张表连接的情况下,求topn问题在不使用order by的情况下,对字段值进行排序,并且求topn问题利用max()聚合函数求取表中字段值的第二名只有一张表的情况下,求取某个字段值的topn问题现在有一张员工表empselect * from emp;要求列出每个部门薪水前两名最高的人员名称以及薪水 top2select * from emp as e1 where 2>(select count(*) from emp e2原创 2021-11-10 15:41:15 · 1107 阅读 · 0 评论 -
MySQL笔记 —— jdbc工具类(网站的修改密码,注册账号,注销账号功能)
在之前的这篇博客里面MySQL笔记 —— jdbc连接数据库(增删改查,sql注入,网站登录检查)写了网站登录检查的代码,通过将用户输入的用户名和密码与数据库中存储的用户名和密码进行比较,如果一致则登录成功,不一致则登陆失败现在再给出网站登录列表中的,修改密码,注册账号,注销账号功能先给出userInfo用户信息表的数据package mysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql原创 2021-11-09 21:30:18 · 8650 阅读 · 0 评论 -
MySQL笔记 —— jdbc连接数据库(增删改查,sql注入,网站登录检查)
目录查询语句(查)插入语句(增)删除语句(删)修改语句(改)SQL注入问题完整的网站登录检查点击截图右边的加号然后选择jar包 mysql-connector-java-5.1.17.jar 这个jar包让我们可以在java中操作mysql接着点击右下角的apply应用和OK,之后就可以正常使用了查询语句(查)注释中包含:连接里面的字段含义解释,url,user,password查询语句的执行语句是executeQuery,返回的是包含一至多条数据的结果集增删改操作的执行语句是exe原创 2021-11-08 22:46:55 · 1427 阅读 · 0 评论 -
MySQL练习 —— 牛客网SQL第十二题解法(求取每个分组的最大值)
先给出题目的建表语句和插入数据的语句CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11)原创 2021-11-07 23:38:47 · 323 阅读 · 0 评论 -
MySQL笔记 —— 从其他表加载数据,视图,事务
目录从其他表加载数据方式一方式二视图视图的创建使用视图查看视图信息修改基本表的数据,视图也会随之修改一对一的情况一对多的情况删除视图从其他表加载数据方式一格式为:create table 新表名 as select * from 旧表名;create table studentCopy as select * from student;产生了一个一模一样的新表,当然也可以选择部分字段,将*换成具体的字段名即可方式二-- 创建一张空表create table studentTest(id原创 2021-11-07 10:56:40 · 405 阅读 · 0 评论 -
MySQL笔记 —— 表连接(三大范式,连接语句,topn问题)
sql的三大范式第一范式:原子性确保每一个字段都是不可分割的最小数据单元比如一条数据是 张 20 男 大学 安徽省合肥市xx区xx街道像最后一个地址字段就明显可以继续切分成省份——市——区——街道四个字段第二范式:唯一性在第一范式的基础上,除了主键之外的字段都应该依赖于主键比如说一个表格的字段是这样的这样的表格里面,学生姓名和学生年龄依赖于学生学号。而教师姓名和教师工资依赖于教师工号。这样表格中就出现了学生姓名不依赖于教师工号主键,而教师工资不依赖于学生学号主键的情况。正确做法是原创 2021-11-06 22:30:25 · 340 阅读 · 0 评论 -
MySQL笔记 —— 去重,聚合函数,concat,日期
去重操作格式 select distinct 字段名 from 表名;当字段名只有一个时,按照这个字段名去重,如果字段名有多个时,按照全部的字段名去重先来看一下表格的全部内容 select * from stu;按照sex属性进行去重 select DISTINCT sex from stu;去重后只剩两项再来看看有多个字段名的情况 select DISTINCT sex,id from stu;distinct后面有多个字段名时,所有字段名的值都相同才算重复。这里sex的值相同但是id原创 2021-11-05 23:39:45 · 2435 阅读 · 0 评论 -
MySQL笔记 —— 基础(概念,对于数据库、表、数据的各种操作语句)
数据库与普通文件系统的区别在于,数据库拥有数据结构。数据库与普通的txt文件都能存储数据内容,但是数据库拥有数据结构,能够快速查找而根据数据结构的不同,数据库又可以分为关系型数据库和非关系型数据库关系型数据库:是指采用了关系模型来组织数据的数据库关系模型有一对一,一对多,多对多等,关系模型指存储格式是以行列组成的二维表格,其以行和列的形式存储数据,一组行和列被称为一张表。一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织非关系型数据库的模型有:列模型:存储的数据是以列的形式存放的。比原创 2021-11-05 21:11:35 · 426 阅读 · 0 评论