首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL基础合集

performance_schema:主要存储数据库服务器性能参数 mysql:主要存储系统的用户权限信息 test:MySQL数据库管理系统自动创建的测试数据库,任何用户都可以使用 用户数据库:...语法:INSERT INTO 表名 [(字段名列表)] VALUES (值列表); 注意: 字段名是可选的,如省略则依次插入所有字段 多个列表和多个值之间使用逗号分隔 值列表和字段名列表一一对应...如插入的是表中部分数据,字段名列表必填 示例: INSERT INTO `student`(`loginPwd`,`studentName`,`gradeId`,`phone`,`bornDate...`) VALUES('123','黄小平',1,'13956799999','1996-5-8'); 5、DML语句--插入多条数据记录 语法:INSERT INTO 新表(字段名列表)VALUES(值列表...、UPDATE 或 DELETE 语句或其他子查询中的查询 2)子查询在WHERE语句中的一般用法 语法:SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询) 注:将子查询和比较运算符联合使用

1.3K30

深入浅出MySQL - MyISAM有趣的那些“锁”事儿

因此,当Innodb的SQL处理语句没有用到索引时(如全表扫描),InnoDB会放弃使用行级别锁定而改用表级别的锁定,造成并发性能的大幅阳痿; 目录 一、MySQL表级锁的几种模式 二、如何加表锁 三、...- 通过系统变量配置 - 在SQL语句中配置 2、并发插入 总结 一、MySQL表级锁的几种模式   MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)和表排他写锁(Table...语句中配置   在SQL语句中临时配置:只对该SQL有效 提高优先级操作关键字: HIGH_PRIORITY,HIGH_PRIORITY可以使用在SELECT和INSERT操作中,让MYSQL知道,这个读操作优先进行...,可以设置为0、1、2: concurrent_insert=2,无论MyISAM表中有没有空洞,都允许在表尾并发插入记录; concurrent_insert=1,如果MyISAM表中没有空洞(即表的中间没有被删除的行...设为2,属于用空间来换时间的策略,来解决应用中对同一表 SELECT 读操作和 INSERT 插入操作的冲突问题。

65020
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Sqoop工具模块之sqoop-export 原

    这可能进一步导致后续作业由于在某些情况下插入冲突而失败,或导致其他数据中的重复数据。那么这种情况下就可以通过指定临时表来解决此问题,该阶段性数据最终在单个事务中移动到目标表中。...三、插入与更新 1、插入 默认情况下,sqoop-export将新行添加到表中;每行输入记录都被转换成一条INSERT语句,将此行记录添加到目标数据库表中。...如果数据库中的表具有约束条件(例如,其值必须唯一的主键列)并且已有数据存在,则必须注意避免插入违反这些约束条件的记录。如果INSERT语句失败,导出过程将失败。...否则这个模式会将所有数据都以insert语句插入数据库中。(这是我踩过的一个坑)。...四、导出的相关问题 1、原子性 导出由多个线程并行执行。每个线程使用一个连接,单独的连接到数据库;这些线程之间有独立的事务。 Sqoop使用多行INSERT语法为每个语句插入最多100条记录。

    7K30

    MySQL 海量数据优化(理论+实战) 吊打面试官

    一、准备表数据 咱们建一张用户表,表中的字段有用户ID、用户名、地址、记录创建时间,如图所示 OK,接下来准备写一个存储过程插入一百万条数据 CREATE TABLE `t_user` ( `id...分解关联查询 例如这条语句 可以分解成 7.小表驱动大表 即小的数据集驱动大的数据集。如:以t_user,t_order两表为例,两表通过 t_user的id字段进行关联。...会检查这个查询语句是否命中查询缓存中的数据。...如果查询中包含任何用户自定义函数、存储函数、用户变量、临时表、mysql库中的系统表,其查询结果都不会被缓存。...:某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。

    45420

    搞懂这些SQL优化技巧,面试横着走

    详情见《MySql中如何用exists代替in》如下: -- 不走索引 select * from A where A.id in (select id from B); -- 走索引 select *...正确使用hint优化语句 MySQL中可以使用hint指定优化器在执行时选择或忽略特定的索引。...根据这个原理,应将过滤数据多的条件往前放,最快速度缩小结果集。 三、增删改 DML 语句优化 1. 大批量插入数据 如果同时执行大量的插入,建议使用多个值的INSERT语句(方法二)。...这比使用分开INSERT语句快(方法一),一般情况下批量插入效率有几倍的差别。...减少SQL语句解析的操作,MySQL没有类似Oracle的share pool,采用方法二,只需要解析一次就能进行数据的插入操作; 在特定场景可以减少对DB连接次数 SQL语句较短,可以减少网络传输的IO

    91620

    SQL优化最干货总结 – MySQL(2020最新版)

    详情见《MySql中如何用exists代替in》如下: -- 不走索引 select * from A where A.id in (select id from B); -- 走索引 select *...正确使用hint优化语句 MySQL中可以使用hint指定优化器在执行时选择或忽略特定的索引。...根据这个原理,应将过滤数据多的条件往前放,最快速度缩小结果集。 三、增删改 DML 语句优化 1. 大批量插入数据 如果同时执行大量的插入,建议使用多个值的INSERT语句(方法二)。...这比使用分开INSERT语句快(方法一),一般情况下批量插入效率有几倍的差别。...减少SQL语句解析的操作,MySQL没有类似Oracle的share pool,采用方法二,只需要解析一次就能进行数据的插入操作; 在特定场景可以减少对DB连接次数 SQL语句较短,可以减少网络传输的IO

    75110

    MySQL - SQL优化干货总结(吐血版)

    详情见《MySql中如何用exists代替in》如下: -- 不走索引 select * from A where A.id in (select id from B); -- 走索引 select *...正确使用hint优化语句 MySQL中可以使用hint指定优化器在执行时选择或忽略特定的索引。...根据这个原理,应将过滤数据多的条件往前放,最快速度缩小结果集。 三、增删改 DML 语句优化 1. 大批量插入数据 如果同时执行大量的插入,建议使用多个值的INSERT语句(方法二)。...这比使用分开INSERT语句快(方法一),一般情况下批量插入效率有几倍的差别。...减少SQL语句解析的操作,MySQL没有类似Oracle的share pool,采用方法二,只需要解析一次就能进行数据的插入操作; 在特定场景可以减少对DB连接次数 SQL语句较短,可以减少网络传输的IO

    1.3K40

    MySQL优化

    在早期的 **MySQL** 中 **slave** 的 **SQL** 线程是单线程的,**Master** 可以支持 **SQL** 语句的并行执行,配置了多少的最大连接数就是最多同时多少个 **SQL...当要减少主从同步的延迟,减少 **SQL** 执行造成的等待时间,就可以使用 **MySQL 5.6** 版本中支持的多库并行复制,该方式是在 **Slave** 上让多个 **SQL** 语句可以并行执行...当使用该方式时,数据库的从库中的 **SQL** 线程就可以并发执行。但在大部分情况下都是单库多表的情况,在一个数据库中可以实现并行复制主要是因为数据库本身就是支持多个事务同时操作的情况。...在分库分表中存在两种: 垂直分库:主要解决减少并发压力问题,把一个数据库按照业务拆分成不同的数据库; 水平分库:主要解决存储瓶颈问题,把单张表的数据按照一定的规则分布在多个数据库上。...teacher_contact tc WHERE t.tid = c.tid AND t.tcid = tc.tcid AND ( c.cid = 2 OR tc.tcid = 3 ); 在往表中插入了三条数据之后再查询的顺序为

    66420

    MySQL 的自增主键一定是连续

    .frm 的本地文件中,在 MySQL 安装目录下的 data 文件夹下可以找到这个 .frm 文件: 从上述表结构可以看到,表定义里面出现了一个 AUTO_INCREMENT=2,表示下一次插入数据时...自增值不连续场景 4 对于批量插入数据的语句,MySQL 有一个批量申请自增 id 的策略: 语句执行过程中,第一次申请自增 id,会分配 1 个; 1 个用完以后,这个语句第二次申请自增 id,会分配...注意,这里说的批量插入数据,不是在普通的 insert 语句里面包含多个 value 值!!!...举个例子,假设我们现在这个表有下面这些数据: 我们创建一个和当前表 test_pk 有相同结构定义的表 test_pk2: 然后使用 insert...select 往 teset_pk2 表中批量插入数据...唯一键冲突 事务回滚 批量插入(如 insert...select 语句) @分享原创技术干货和成长经验.

    3.8K10

    MySQL操作之用户管理权限管理:(DC)(五)

    Insert_priv:插入权限。 Update_priv:更新权限。 数据类型都是枚举类型Enum。 默认值为:N(没有权限)。 3. 安全列 用户管理用户的安全信息,其中包含6个字段。...权限列 Select_priv 确定用户是否可以通过SELECT命令选择数据 2. 权限列 Insert_priv 确定用户是否可以通过INSERT命令插入数据 2....权限列 Shutdown_priv 确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎 3....语句: CREATE USER `user02`@`127.0.0.1` IDENTIFIED BU `123` 3. 使用Insert语句创建用户 在User表添加数据。...当MySQL启动时,会加载这些表,并将权限信息读取到内存中。 Create和Drop权限:可以创建数据库、表、索引,或者删除已有的数据库、表、索引。

    40220

    MySQL存储过程,视图,用户管理

    group by select语句中包含order by select语句中包含union或者union all等集合运算符 where子句中包含子查询 from中包含多的个表 视图列中包含计算列 基表中存在非空约束...可以直接通过修改这个表中的字段来为用户赋予权限 Select_priv。确定用户是否可以通过SELECT命令选择数据。 Insert_priv。确定用户是否可以通过INSERT命令插入数据。...确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎。 Process_priv。...例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户。 References_priv。...此权限是在MySQL 5.0中引入的。 Alter_routine_priv。确定用户是否可以修改或删除存储函数及函数。此权限是在MySQL 5.0中引入的。 Create_user_priv。

    93300

    MySQL INSERT的4种形态

    墨墨导读:MySQL中常用的四种插入数据的语句: insert ,insert select,replace into,insert into on duplicate key update,以下详述这四种插入数据的语句...INSERT语句是最常见的SQL语句之一,MySQL中INSERT有其他形态的插入数据方式。...下面了解一下MySQL中常用的四种插入数据的语句: INSERT INTO 1. insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;除了这个之外还有一些配合的参数...所以这样的写法对数据的安全性是没有保障的。 延迟插入和替换在MySQL 5.6中是不推荐的。在MySQL 5.7,MySQL 8.0中,不支持延迟。...注意:当从同一个表中选择和插入时,MySQL创建一个内部临时表来保存SELECT中的行,然后将这些行插入到目标表中。

    1.6K20

    删除行对MySQL序列有这么多影响?

    二、场景演示 设置为AUTO_INCREMENT属性后,每一次插入数据都会向前增加一位数,但是如果删除行后,序列会怎么样呢?...| | 5 | whale | | 7 | Horse | | 8 | Kangaroo | +----+----------+ 5 rows in set (0.00 sec) 在插入新数据后...对于每次数据进行插入,都会从AUTO_INCREMENT列中获取最大值,在进行偏移量增加。如默认的偏移量为1。...1 | +-----------------------+-------+ 1 row in set (0.00 sec) 说明:对于最大值获取,不是简单使用max函数,这样并不准确,因为在并行事务中...,可能会有其他会话进行插入更改,因此当前会话max值并不是准确的,同时还会存在自增长字段的值之间发生冲突,所以MySQL会调用LAST_INSERT_ID(),返回最新AUTO_INCREMENT最大值

    89820

    你需要了解关于MySQL锁的知识点,都列在这里了!

    使用的语义为: 共享锁之间不互斥,简记为:读读可以并行 排他锁与任何锁互斥,简记为:写读,写写不可以并行 可以看到,一旦写数据的任务没有完成,数据是不能被其他任务读取的,这对并发度有较大的影响。...间隙锁的主要目的,就是为了防止其他事务在间隔中插入数据,以导致“不可重复读”。如果把事务的隔离级别降级为读提交(Read Committed, RC),间隙锁则会自动失效。 5....插入意向锁,是间隙锁(Gap Locks)的一种(所以,也是实施在索引上的),它是专门针对insert操作的。多个事务,在同一个索引,同一个范围区间插入记录时,如果插入的位置不冲突,不会阻塞彼此。...举个例子(表依然是如上的例子lock_example,数据依然是如上),事务A先执行,在10与20两条记录中插入了一行,还未提交: insert into t values(11, xxx); 事务B...后执行,也在10与20两条记录中插入了一行: insert into t values(12, ooo); 因为是插入操作,虽然是插入同一个区间,但是插入的记录并不冲突,所以使用的是插入意向锁,此处A

    89710

    MySQL自增主键为什么不连续

    不同的引擎对于自增值的保存策略不同: MyISAM引擎的自增值保存在数据文件中 InnoDB引擎的自增值保存在内存里,但是在MySQL8.0以后,该自增值才可以被持久化:MySQL5.7以前,自增值没有持久化每次重启后第一次打开表的时候...,会找自增值的最大值max(id),然后将最大值加1作为这个表的自增值;MySQL8.0版本会将自增值的变更记录在redo log中,重启时依靠redo log恢复。...自增值的修改机制 自增值的修改行为如下: 如果插入数据时id字段指定为0、null或者未指定值,那么就把该表的AUTO_INCREMENT值填到自增字段 如果插入数据时id字段指定了具体的值,就直接使用语句里指定的值...1 继续执行插入数据操作,但是由于c=1的记录已经存在,所以会返回Duplicat key error,语句返回 上述执行过程可以看出,自增值的修改是在真正插入数据的操作之前,如果数据真正插入的时候异常...值设置为1,对于insert...select这种无法提前知道申请多少个id,那就在需要的时候申请1个,如果有10w行数据那就需要申请10万次,对于批量插入数据的语句,MySQL有一个批量申请自增id的策略

    8.4K20

    39 | 自增主键不连续

    在 MySQL 8.0 版本,将自增值的变更记录在了 redo log 中,重启的时候依靠 redo log 恢复重启之前的值。...自增值修改机制 在插入一行数据的时候,自增值的行为如下: 如果插入数据时 id 字段指定为 0、null 或未指定值,那么就把这个表当前的 AUTO_INCREMENT 值填到自增字段; 如果插入数据时...values(null,2,2); //插入的行是(3,2,2) 原因分析,为什么不能回退: 假设有两个并行执行的事务,在申请自增值的时候,为了避免两个事务申请到相同的自增 id,肯定要加锁,然后顺序申请...t2 values(null, 5,5); insert…select,实际上往表 t2 中插入了 4 行数据。...之后,再执行 insert into t2 values(null, 5,5),实际上插入的数据就是(8,5,5)。 小结 在 MyISAM 引擎里面,自增值是被写在数据文件上的。

    4.9K10

    总结MySQL 的一些知识点:MySQL 插入数据

    MySQL 插入数据 MySQL 表中使用INSERT INTOSQL语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。...语法 以下为向MySQL数据表插入数据通用的INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...fieldN )...通过命令提示窗口插入数据 以下我们将使用 SQL INSERT INTO语句向 MySQL 数据表 kxdang_tbl 插入数据 实例 以下实例中我们将向 kxdang_tbl 表插入三条数据: root...在以上实例中,我们并没有提供 kxdang_id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。...,并插入数据表中: 添加数据 <?

    60020

    MySQL重大Bug!自增主键竟然不是连续递增

    (2,1,1),由于已存在c=1,所以报Duplicate key error 语句返回 该表的自增值已经改成3,是在真正执行插入数据之前。...其实,在MySQL 5.1版本之前,并不是这样的。 MySQL 5.0时,自增锁的范围是语句级别:若一个语句申请了一个表自增锁,该锁会等语句执行结束以后才释放。...这里的“批量插入数据”,包含如下语句类型: insert … select replace … select load data 在普通insert语句包含多个value值的场景,即使innodb_autoinc_lock_mode...因此,对于批量插入数据语句,MySQL提供了批量申请自增id的策略: 语句执行过程中,第一次申请自增id,会分配1个 1个用完以后,这个语句第二次申请自增id,会分配2个 2个用完以后,还是这个语句,第三次申请自增...…select实际上往t2中插入4行数据。

    2.6K00
    领券