MySQL
文章平均质量分 78
hello_cmy
这个作者很懒,什么都没留下…
展开
-
自增主键用完了怎么办?
这篇咱们来聊一聊mysql表的主键问题。先抛出两个问题:问题一:是使用uuid还是自增主键?问题二:如果自增主键用完了,如何解决?那么遇到这种问题怎么来回答呢?我们这篇文章就来解决一下上述问题。问题一:是使用uuid还是自增主键?最好是用自增主键,主要是以下两个原因:1. 如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。 2. 如果使用非自增主键(如uuid),由于每次插入主键的值近似于随机,因此每次新纪原创 2021-01-19 15:19:23 · 939 阅读 · 0 评论 -
MySQL索引(聚簇索引和非聚簇索引)
MySQL索引1、前提MySQL索引一直是面试中的常客,一提起索引,很多人都能答出来我知道Hash索引和B+树索引,Hash是比较简单的,那么B+树索引就有点复杂了。在创建表的时候,我们可以看到引擎有MyISAM , InnoDB等等,这两种是我们经常说到的,从5.5版本及以后引擎就默认为InnoDB了,也说的是从5.1版本之后就默认是InnoDB了,不过这个不用纠结,反正现在使用的mysql基本都默认引擎为InnoDB,我们这篇文章都是基于InnoDB来说的。[外链图片转存失败,源站可能有防盗链机原创 2021-01-15 16:10:57 · 512 阅读 · 0 评论 -
分数排名
题目编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。±—±------+| Id | Score |±—±------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 | 4.00 || 6 | 3.65 |±—±------+例如,根据上述给定的 Scores 表,你的查.原创 2020-08-25 17:59:40 · 503 阅读 · 0 评论 -
第N高的薪水
编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。±—±-------+| Id | Salary |±—±-------+| 1 | 100 || 2 | 200 || 3 | 300 |±—±-------+例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。±-----------------------+| getNthHighestSalar原创 2020-08-24 17:10:27 · 157 阅读 · 0 评论 -
mybatis将list数据插入到数据库中
前提需求在最近几天的业务需求中,遇到了将list数据插入到数据库中,或者是将list中的数据查询出来,查询的话,我第一个想法就是写个简单的sql语句,在循环中执行sql语句,但是这样会消耗很大,不能这样使用,那么就只能将循环写到sql语句中。自然就想到用mybatis中动态sql,foreach。具体的代码讲解InventoryDetail@Table(name = "t_inventory_detail")public class InventoryDetail { /**.原创 2020-08-18 11:54:59 · 2553 阅读 · 0 评论 -
SQL中INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN的使用
目录1. SQL JOIN2. INNER JOIN3. LEFT JOIN4. RIGHT JOIN5. FULL JOIN1. SQL JOIN简单介绍SQL JOIN 子句是基于表之间的共同字段,把来自多个表的行连接就是结合起来。分类INNER JOIN: 如果表中有至少一个匹配,则返回行。LEFT JOIN: 即使右表中没有匹配,也从左表中返回所有的行。RIGHT JOIN: 即使左表中没有匹配,也从右表中返回所有的行。FULL JOIN: 只要有一个表中存在匹配,就返回行。原创 2020-08-18 10:55:10 · 675 阅读 · 0 评论 -
SQL练习三
1、获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date=‘9999-01-01’。结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_no。CREATE TABLE dept_emp (emp_no int(11) NOT NULL,dept_no char(4) NOT NULL,from_dat...原创 2020-04-28 21:36:02 · 199 阅读 · 0 评论 -
SQL练习二
1、 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数tCREATE TABLE salaries (emp_no int(11) NOT NULL,salary int(11) NOT NULL,from_date date NOT NULL,to_date date NOT NULL,PRIMARY KEY (emp_no,from_date));select...原创 2020-04-27 20:37:28 · 177 阅读 · 0 评论 -
SQL练习
SQL练习1、 查找最晚入职员工的所有信息 CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT NU...原创 2020-04-21 10:15:05 · 284 阅读 · 0 评论 -
浅显了解MySQL索引
目录1、什么是索引2、索引的分类3、Mysql如何为表字段添加索引?4、最左前缀原则索引在数据库中是很重要的一个点,很重要,很重要,很重要!重要的事情说三遍!1、什么是索引MySQL官方都索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。一句话来解释:索引是数据结构。2、索引的分类主键索引(PRIMARY KEY) 唯一的标识,主键不可重...原创 2020-04-10 15:56:21 · 135 阅读 · 0 评论 -
MySQL存储引擎
MySQL存储引擎1、常用命令查看存储引擎#查看MySQL提供的所有存储引擎show engines;#查看默认的存储引擎show variables like '%storage_engine%';可以自己在电脑上查看一下,MySQL当前默认的存储引擎是InnoDB。在5.5版本之前默认的存储引擎是MyISAM。2、MyISAM 和 InnoDB 区别是否支持行级锁 ...原创 2020-04-10 15:52:38 · 147 阅读 · 0 评论 -
事务、并发事务的问题、事务隔离
目录1、什么是事务2、事务的四大特性(ACID)3、并发事务带来的问题4、事务隔离1、什么是事务事务是逻辑上的一组操作,要么都执行,要么都不执行。比如转账例子。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保...原创 2020-04-10 10:09:04 · 360 阅读 · 0 评论 -
MySql中的CURRENT_TIMESTAMP
在设计数据库表中的时间字段时,有两个比较方便的操作。DEFAULT CURRENT_TIMESTAMP表示当插入数据的时候,该字段默认值为当前时间ON UPDATE CURRENT_TIMESTAMP表示每次更新这条数据的时候,该字段都会更新成当前时间这两个操作是mysql数据库本身在维护,所以可以根据这个特性来生成【创建时间】和【更新时间】两个字段,且不需要代码来维护如下:...原创 2020-03-12 20:00:04 · 593 阅读 · 0 评论 -
mysql避免重复插入数据ignore
ignore保证表中不会有重复的数据插入。现在我们往tags表中插入一条数据,主键是自增的。第一次插入数据,插入数据成功。第二次插入同样的数据,注意这里返回的是0。没有插入成功。我们查看一下表中的数据,只有一条数据。...原创 2020-03-09 11:39:50 · 337 阅读 · 0 评论 -
SQL Limit语句
要检索查询返回的行的一部分,请使用LIMIT和OFFSET子句。 以下说明了这些子句的语法:SELECT column_listFROM table1ORDER BY column_listLIMIT row_count OFFSET offset;在这个语法中,row_count确定将返回的行数。 OFFSET子句在开始返回行之前跳过偏移行。 OFFSE...原创 2020-03-09 10:04:46 · 3955 阅读 · 0 评论 -
sql 语句left join on
left join 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。LEFT JOIN 关键字语法select column_name(s)from table_name1left join table_name2 on table_name1.column_name=table_name2.column_nam...原创 2020-03-09 09:09:14 · 1010 阅读 · 0 评论 -
数据库中select, where, group by, having ,order by的执行顺序
where:数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用。group by:对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。having:用于对where和group by查询出来的分组经行过滤,查出满足条件的分组结果。它是一个过滤声明,是在查询返...原创 2020-03-03 10:05:46 · 1046 阅读 · 0 评论 -
安装mysql8.0压缩版
官网下载很慢的话(我先是去mysql官网下载的,发现没有64位的,凉凉,幸好同学给我发了一个)。使用下面我提供的网盘地址下载。链接:https://pan.baidu.com/s/1kDCbdrVufKUY6Fi3RG032A提取码:vojs很重要的声明:在你正式安装之前一定要删干净之前安装的mysql,切勿有所残留。不然很有可导致你后续安装失败。安装:1.解压到你安装路径。我...原创 2020-02-18 15:31:26 · 195 阅读 · 0 评论 -
[ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
今天在GitHub上看了一个项目,用Navicat for MySQL导入数据库脚本时,报了这个错误。[ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'报错原因:生成转储文件的数据库版本为8.0,要导入sql文件的数据库版本为5.6,因为是高版本导入到低版本,引起1273错误解决方法:打开sql文件,将文件中的所有utf8m...原创 2019-12-25 10:01:22 · 574 阅读 · 0 评论 -
数据库连接池
数据库连接池: 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。原理: 连接池基本的思想是在系统初始化的时候,将数据库连接池作为对象存储在内存中,当用户需要访问数据库时,并...原创 2019-08-01 09:20:10 · 221 阅读 · 0 评论 -
MySQL_增删改语句
Statement 对象调用方法:public int executeUpdate(String sqlStatement);通过参数sqlStatement指定的方式实现对数据库表中记录的更新,删除和添加操作。更新:update 表名 set 字段 = 新值 where <条件子句>删除:delete from 表名 whe...原创 2019-05-28 11:39:36 · 122 阅读 · 0 评论 -
MySQL—连接查询
前提是已在数据库mis中建过student,course,sc表并插入了一些数据。(在前面已介绍过)(1)查询“cs”系男学的选课情况select sc.* from sc,studentwhere sc.sno=student.snoand sdept='cs' and ssex='男';(2)查询选修了“数据库”课程的学生姓名select sname from sc,cou...原创 2019-04-03 09:53:57 · 330 阅读 · 0 评论 -
MySQL—单表查询
Create database <数据库名>; //创建数据库如Create database mis;Show databases; //展开数据库;use <数据库名>;如use mis;//使用当前数据库例子:建立教学数据库基本表,定义主码,姓名不能重复,成绩小于等于100,并录入模拟数据。student(sno,s...原创 2019-03-20 09:54:35 · 615 阅读 · 2 评论