MySQL
MySQL是一个开放源码的小型关联式数据库管理系统,MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点
最小的帆也能远航
不必借光而行,你我亦是星辰!
展开
-
Mysql面试
内连接(inner join):取得两张表中满足存在连接匹配关系的记录。外连接(outer join):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足匹配关系的记录。交叉连接(cross join):显示两张表所有记录一一对应,没有匹配关系进行筛选,它是笛卡尔积在 SQL 中的实现,如果 A 表有 m 行,B 表有 n 行,那么 A 和 B 交叉连接的结果就有 m*n 行。原创 2024-02-18 15:21:58 · 748 阅读 · 0 评论 -
MySQL表 一行数据转多行数据
原始表如下:将原始表转换为:创建原始数据,SQL如下create table if not exists splitdata(id int(10),name varchar(20),subject varchar(30)); insert into splitdata values(1,'Lily','语文,英语,科学'),(2,'Lucy','语文,英语'),(3,'Mary','体育,科学'),(4,'Olio','数学,体育');insert into .原创 2022-01-17 11:07:27 · 576 阅读 · 0 评论 -
Mybatis 的嵌套查询与嵌套结果的区别
嵌套查询 嵌套结果 嵌套查询是在查询 SQL 后再进行一个(子)查询 嵌套结果是一个多表查询的 SQL 语句 会执行多条 SQL 语句 只有一条复杂的 SQL 语句(多表连接) SQL语句编写较为简单 SQL语句编写较为复杂 ...原创 2021-09-26 19:27:48 · 2265 阅读 · 0 评论 -
SQL注入详解
一:什么是sql注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。二:SQL注入攻击的总体思路 1:寻找到SQL注入的位置 2:判断服务器类型和后台数据库类型 3:针对不同的服务器和数据库特点进行SQL注入攻击三:SQL注入攻击实例String sql = "select * from user_table where username=' "+..原创 2021-09-26 18:26:51 · 187 阅读 · 0 评论 -
MySQL8.0窗口函数之排名函数(rank、dense_rank)的使用
静态窗口函数之排名函数 rank()、dense_rank()有成绩表sc,字段分别是学生编号s_id,课程编号c_id,成绩score题目:按成绩从高到低进行排名代码:select * ,rank() over(order by score desc) 名次 from sc;代码解读:rank()是排名函数,不需要参数;over语句里面没有partition by参数,也就是整个数据视为一个窗口;因为rank函数没有参数,但需要指定按照那个字段进行排名,所以使用rank函数必须用o转载 2021-09-13 18:14:53 · 1302 阅读 · 0 评论 -
MySQL 查询各科前三名(考虑成绩并列情况)
1.在分析问题前,我们先把数据准备好。CREATE TABLE student(name VARCHAR(10),subject VARCHAR(10),score INT(10));2.插入数据INSERT INTO student VALUES("张三","java",71),("李四","java",82),("王五","java",90),("赵六","java",98),("孙七","java",90),("张三","python",81),("李四原创 2021-09-13 17:17:19 · 16175 阅读 · 13 评论 -
MySQL面试大全
1.Mysql中有哪几种锁1.表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。2.行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。3. 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。2.Mysql中有哪些不同的表格共有5种类型的表格:MyISAM Heap Merge INNODB ISAM3.简述在MySQL数据库中MyISAM和InnoD.原创 2021-09-03 10:31:33 · 105 阅读 · 0 评论 -
MySQL--隐藏手机号、身份证号三种方式
方式一(最推荐)SELECT`name` AS '姓名',INSERT ( telephone, 4, 4, '****' ) AS '手机号',INSERT ( cardID, 4, 11, '***********' ) AS '身份证号'FROMuserinfo;方式二SELECT`name` AS '姓名',REPLACE ( telephone, SUBSTR( telephone, 4, 4 ), '****' ) AS '手机号',REPLACE ( card.原创 2021-08-24 21:55:15 · 559 阅读 · 0 评论 -
mysql 中varchar(50)最多能存多少个中文
首先要确定mysql版本4.0版本以下,varchar(50),指的是50字节,如果存放UTF8汉字时,只能存16个(每个汉字3字节)5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个其实最好的办法是在自己数据库中建个表试试可以放多少汉字,现在mysql都5.0已上了,varchar(50)是可以存50个汉字的...原创 2021-08-18 21:36:18 · 1040 阅读 · 0 评论 -
Mysql sum(if())和count(if())的用法
SELECT SUM(if(category=1,size,0)) ,COUNT(if(category=1,true,null)) FORM t_file;解析:1. sum(if(category=1,size,0))中 sum函数返回一个值类型的数值,如果category=1,则返回size,如果category不等于1就返回0。2. count(if(category=1,true,null))中count函数返回一个布尔值类型的数值,如果category=1,返回true,如果cat.原创 2021-08-07 17:16:59 · 579 阅读 · 0 评论 -
Mysql中sum()与if()联合使用
sum()与if()联合使用 sum (column ) : 把一列的值全部相加 sum( if ( 条件 , 2 , 0 ) ) : 满足“条件”,加2,不满足条件,加0 统计每个用户count<5的次数 select user_id,sum(IF(count<5,1,0)) as times from user group by user_id;...原创 2021-07-31 16:56:56 · 1039 阅读 · 1 评论 -
Mysql 查询 int类型日期转换成datetime类型
数据库日期类型是int类型的,该查询结果是datetime类型的SELECTfrom_unixtime(`时间列名`)FROM表名如果原来类型是datetime类型,查询结果要是int类型则SELECTunix_timestamp(`时间列名`)FROM表名...原创 2021-07-22 17:14:27 · 660 阅读 · 1 评论 -
MySQL 查询当天、本周,本月、上一个月的数据
mysql查询当天的所有信息:SELECT * FROM 表名 WHERE year(时间字段名)=year(now()) and month(时间字段名) = month(now()) and day(时间字段名) = day(now());这个有一些繁琐,还有简单的写法:SELECT * FROM 表名 WHERE date(时间字段名) = curdate();查询当天的记录SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW原创 2021-07-21 17:12:03 · 180 阅读 · 0 评论 -
MySQL的时间差函数TIMESTAMPDIFF、DATEDIFF的用法
DATEDIFF函数,返回值是相差的天数,不能定位到小时、分钟和秒。-- 相差2天select datediff('2018-03-22 09:00:00', '2018-03-20 07:00:00');TIMESTAMPDIFF函数,有参数设置,可以精确到天(DAY)、小时(HOUR),分钟(MINUTE)和秒(SECOND),使用起来比datediff函数更加灵活。对于比较的两个时间,时间小的放在前面,时间大的放在后面。--相差1天select TIMESTAMPDIFF(DA原创 2021-07-20 16:23:06 · 785 阅读 · 0 评论 -
idea插入数据到数据库变问号的问题
工具版本:idea 2019.3.5mysql 5.7.27连接的url为:当插入语句中含有 中文字符时,在数据库中会变为???解决办法:url: jdbc:mysql://localhost:3306/maoyanmovie?serverTimezone=UTC把上面的url改为如下代码url: jdbc:mysql://localhost:3306/maoyanmovie?useSSL=true&useUnicode=true&chara...原创 2021-07-17 13:48:30 · 756 阅读 · 2 评论 -
inner join 与 left join 之间的区别
一、sql的left join 、right join 、inner join之间的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行举例如下:--------------------------------------------表A记录如下:aID aNum1 a20050..原创 2021-07-17 09:19:58 · 594 阅读 · 0 评论 -
史上最简单的MySQL5.7.x 免安装教程
第一步:从官网下载zip archive版本:http://dev.mysql.com/downloads/mysql/第二步:解压缩至相应目录(D:\MySQL),并配置环境变量(将*\bin添加进path中);第三步:(重要)在bin文件夹下新建my.ini文件,写入以下内容:[client] port=3306 default-character-set=utf8 [mysqld] port=3306 character_set_server=utf8 basedir..原创 2021-06-27 21:14:28 · 204 阅读 · 1 评论 -
关于索引和索引的优化
索引顾名思义,查找某物的标签,相当于书签,相当于目录。如果我们想在一本书中快速找到特定的主题,最快的方法时查找索引,看主题在那个页码。而对于mysql而言,如果需要查找某一行的值,可以先通过索引找对应的值,然后根据索引匹配的记录找到对应的数据行。然而,有时会发现,即使查询条件有索引,查询效率依然很慢。。。当然,大多数索引对于查询速度的提升还是非常可观的,我今天要说的是有索引却不走索引的几种情况。函数操作很多时候我们在查询数据的时候,会“拜托”函数帮忙。我们往往关注查询结果而忽略..转载 2020-12-19 23:23:36 · 133 阅读 · 1 评论 -
了解InnoDB底层原理
存储引擎存储引擎,我认为就是一种存储解决方案,实现了新增数据、更新数据和建立索引等等功能。有哪些已有的存储引擎可以让我们选择呢?InnoDB、MyISAM、Memory、CSV、Archive、Blackhole、Merge、Federated、Example常用的存储引擎目前就只有InnoDB和MyISAM。InnoDB是目前使用最广的MySQL存储引擎,MySQL从5.5版本开始InnoDB就已经是默认的存储引擎了。InnoDB的内存架构主要分为三大块,缓冲池(B...转载 2020-12-19 23:04:22 · 240 阅读 · 1 评论 -
Mysql四种常见数据库引擎
前言数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎存储引擎查看MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL5.1,可以使用:SHOW ENGINES命令来查看MySQL使用的引擎,命令的输出为(我用的Navica..转载 2020-12-19 22:12:54 · 272 阅读 · 1 评论 -
利用JDBC连接数据库以及单例模式
JDBC(Java DataBase Connection):Java连接数据库技术步骤:1.下载对应版本的驱动包2.在项目中引入mysql的数据库驱动包3.开始编码[天龙八部]4.使用Statement对象5.使用PreparedStatement预编译对象天龙八部:1)装载驱动2)获得连接3)定义SQL4)获得编译对象[预编译对象/参数赋值]...原创 2020-01-19 13:32:04 · 1255 阅读 · 2 评论 -
MySQL事务
参考博客:https://blog.csdn.net/dengjili/article/details/82468576?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160673882619725271029903%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160673882619725271029903&biz_id=原创 2020-11-30 21:34:12 · 240 阅读 · 0 评论 -
mysql-8.0.11-winx64安装 MySQL 服务时,出现 MySQL 服务无法启动
按照操作网上常规步骤在mysql的根目录下编写my.ini并创建data文件夹[client]port=3306default-character-set=utf8[mysqld]port=3306character_set_server=utf8basedir=%MYSQL_HOME%datadir=%MYSQL_HOME%\data[WinMySQLAdmin]%MYSQL_HOME%\bin\mysqld.exe故障现象1....原创 2020-11-23 21:15:02 · 732 阅读 · 3 评论 -
DCL语句和TCL语言
1.DCL语句1.创建用户create user 'zhangsan'@'localhost' identified by '123456';2.授权授予所有权限grant all on *.* to 'zhangsan'@'localhost';撤销授权revoke all on *.* from 'zhangsan'@'localhost';授予DML的权...原创 2020-01-19 13:31:37 · 371 阅读 · 0 评论 -
SQL 中 _和% 以及 =和like 的 区别
staff表:=和like区别:= 匹配一个精准值, like 可以匹配一个范围select * from staff where name = 'bob'; select * from staff where name like 'bob';_和%区别:_ 任意匹配一个字符,% 任意匹配多个字符 select * from staff...原创 2020-04-03 11:42:13 · 8223 阅读 · 8 评论 -
MySQL Workbeach数据建模,导入数据以及加密处理
使用的工具有:MySQL Workbeach,Spring Tool suite4以及阿里云数据库1.MySQL Workbeach构建数据库脚本表与表的关系:1:1, 1:n, n:m。通过外键关联表。设置相应的参数:新建图表:新建表:设置表的结构:设置外键约束:这样,两...原创 2020-03-31 19:26:50 · 780 阅读 · 1 评论 -
解决Windows10中mysql8重置密码或者忘记密码的问题
上一节的MySQL的配置安装里,并没有用到配置文件my.ini。那在MYSQL8.0.13如何解决密码重置问题呢。我去网上搜了好多的资料都是改配置文件my.ini的,后来终于找到了一条命令:操作步骤如下: 1.打开命令窗口cmd,输入命令:net stop mysql,停止MySQL服务,然后输入命令mysqld –skip-grant-tables以不输入密码的方式启动My...原创 2020-03-31 13:40:30 · 712 阅读 · 1 评论 -
windows完全卸载mysql服务的方法
1.控制面板——>卸载程序——>卸载mysql服务2.删除注册表上的相关信息按win+R键输入regedit打开注册表找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql右键删除...原创 2020-03-31 12:15:01 · 628 阅读 · 0 评论 -
MySQL Workbeach远程连接阿里云的数据库的操作
1.下载并安装MySQL Workbeach 具体操作可以去网上找2.修改root远程连接的权限把root设置为可远程连接的权限update user set host='%' where user='root';注意:一定要重启阿里云服务器上的数据库service mysql restart,现在可以连接阿里云上的数据库了3.打开...原创 2020-03-27 17:40:32 · 662 阅读 · 0 评论 -
MySQL中的视图和索引以及存储过程
1.视图 视图:是一张虚拟的表 视图中的数据是来源于基表【真实存在的表】2.如何创建视图create view emp_view as select empno,ename, sal,dname from emp join dept on emp.deptno=dept.deptno;create view emp_view(num,name,ye...原创 2020-01-19 13:31:46 · 315 阅读 · 0 评论 -
MySQL中的常用函数
1.字符串函数length(a) 获得字符串a的长度concat(a,b,c) 将多个值拼接成一个字符串trim(a) 去掉字符串a首尾的空格replace(a,b,c) 将字符串a中出现的b字符串替换成csubString(str,index,len) 从第i...原创 2020-01-19 13:31:21 · 293 阅读 · 0 评论 -
MySQL的查询操作
1.子查询1.将查询的结果集当做一张表再次进行查询[自连接查询]查询每个员工的编号,姓名和其上司的编号姓名select empno,ename,mgr from emp;select empno,ename from emp;select * from (select empno,ename,mgr from emp) a,(select empno,ename from ...原创 2020-01-19 13:31:07 · 298 阅读 · 0 评论 -
MySQL表的一些基本操作
1.表的基本操作部门表://部门表CREATE TABLE DEPT(DEPTNO int(2) not null PRIMARY KEY, //部门编号DNAME VARCHAR(14) , //部门名称LOC VARCHAR(13) //办公地点) ;雇员表://雇员表CREATE TABLE EMP(EMPNO int(4) not nul...原创 2020-01-18 11:40:28 · 189 阅读 · 0 评论 -
MySQL建表的一些约束条件
1.SQL :结构化查询语言(Structer Query Language)包含DDL,DCL ,DML,TCL四种语句DDL:create / alter / dropDCL: grant / revokeDML: select / update / insert / deleteTCL:rollback / commit / savepoint...原创 2020-01-18 11:40:14 · 706 阅读 · 0 评论 -
MySQL中的数据类型以及一些常见的命令
1.MySQL常见的命令 一个数据库实例可以包含多个数据库; 1. 查看当前实例中包含的数据库 show databases; 2.创建自己的数据库·create database stus; 3.使用数据库use stus; 4.一个数据库中可以包含多张表,一个表中包含多个多个字段 5.创建表...原创 2020-01-18 11:40:07 · 321 阅读 · 0 评论 -
MySQL数据库的安装与使用
1.数据库的一些认识 1.分类 文件型数据库 Excel关系型数据库 Access / SQLite MySQL / MS SQLServer Oracle / Sybase DB2非关系型数据库 MongoDB Redis2.持久化存储2. MySQL数据库的安装 下载安装...原创 2020-01-18 11:39:48 · 291 阅读 · 0 评论