mysql增删改查要用事务吗_数据库的增删改查、事务与索引
数据库的增删改查、事务与索引
增删改查
一、查询(SELECT)
二、添加(INSERT)
三、删除(DELETE)
四、更改(UPDATE)
事务
一、事务的概念
二、MySQL数据库中操作事务命令
三、JDBC中使用事务
四、事务的四大特性(ACID)
索引
一、创建索引的好处
二、创建索引的坏处
三、应该在哪些列上创建索引
四、不应该在哪些列上创建索引
五、数据库索引在什么情况下失效
增删改查
一、查询(SELECT)
select 的语法:
select 列名称 from 表名称 (其中 * 代表选择显示全部的列)
Distinct (防止重复输出数据)
语法 SELECT DISTINCT 列名称 FROM 表名称
带有条件的查询 where
语法 : select 列名称 from 表名称 where 列 运算符 值
(运算符有=、<=、!=、>=、、<>、like、between)
例如:
select name,sex from empolyee where age=19 and sex="女" or name like '李%'
排序(ORDER BY)、分组(GROUP BY)
二、添加(INSERT)
语法: INSERT INTO 表的名称 values(值1,值2,值3…)
或者可以指定特定的列来进行插入数据操作
INSERT INTO table_name (列1,列2,…) VALUES (值1,值2,…)
INSERT INTO table_name (列1,列2,…) VALUES (值1,值2,…),(值3,值4),(值5,值6)
例如:
insert into empolyee (name,sex,age) values ('李四','男',21)
添加通过SELECT查询出来的数据:
insert into Employees (FirstName,LastName)/*给特定的两列添加数据,此表的主键已经设置为自增,所以不需要添加值*/
select FirstName,LastName
from Employees
where EmployeeID=1
三、删除(DELETE)
语法:DELETE FROM 表的名称 WHERE 条件
例如:
delete from empolyee where id=2
四、更改(UPDATE)
语法: update 表的名称 set 列名称=新值 where 列名称=某值
例如:
update empolyee set name='李四',sex='女' where name='张三'
事务
一、事务的概念
事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。
例如:A——B转帐,对应于如下两条sql语句:
update from account set money=money+100 where name='B';
update from account set money=money-100 where name='A';
二、MySQL数据库中操作事务命令
开启事务(start transaction)
提交事务(commit)
回滚事务(rollback)
三、JDBC中使用事务
当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句。 若想关闭这种默认提交方式,让多条SQL在一个事务中执行,可使用下列的JDBC控制事务语句
Connection.setAutoCommit(false);//开启事务(start transaction)
Connection.rollback();//回滚事务(rollback)
Connection.commit();//提交事务(commit)
设置事务回滚点
在开发中,有时候可能需要手动设置事务的回滚点,在JDBC中使用如下的语句设置事务回滚点
Savepoint sp = conn.setSavepoint();
Conn.rollback(sp);
Conn.commit();//回滚后必须通知数据库提交事务
四、事务的四大特性(ACID)
1. 原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。 比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行失败
2.一致性(Consistency)
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
以转账为例子,A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000,这个就是事务的一致性。
3.隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
4.持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
索引
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中表的数据.索引的实现通常使用B树和变种的B+树(mysql常用的索引就是B+树) 除了数据之外,数据库系统还维护为满足特定查找算法的数据结构,这些数据结构以某种方式引用数据.这种数据结构就是索引
一、创建索引的好处
通过创建索引,可以在查询的过程中,提高系统的性能
通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间
二、创建索引的坏处
创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增大
索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大
在对表中的数据进行增加删除和修改时需要耗费较多的时间,因为索引也要动态地维护
三、应该在哪些列上创建索引
经常需要搜索的列上
作为主键的列上
经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
经常需要根据范围进行搜索的列上
经常需要排序的列上
经常使用在where子句上面的列上
四、不应该在哪些列上创建索引
查询中很少用到的列
对于那些具有很少数据值的列.比如人事表的性别列,bit数据类型的列
对于那些定义为text,image的列.因为这些列的数据量相当大
当对修改性能的要求远远大于搜索性能时.因为当增加索引时,会提高搜索性能,但是会降低修改性能
五、数据库索引在什么情况下失效
条件中用or(这就是为什么少用or的原因)
//使用or,又想索引生效,只能将or条件中的每个列都加上索引
对于多列(复合、联合)索引,不是使用的第一部分,则不会使用索引。(最左匹配原则或者叫做最左前缀原则)
like的模糊查询以%开头,索引失效
如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引
如果MySQL预计使用全表扫描要比使用索引快,则不使用索引
判断索引列是否不等于某个值时。‘!=’操作符
对索引列进行运算。这里运算包括±*/等运算
索引字段进行判空查询时。也就是对索引字段判断是否为NULL时
范围列可以用到索引(联合索引必须是最左前缀),但是范围列后面的列无法用到索引
mysql增删改查要用事务吗_数据库的增删改查、事务与索引相关推荐
- mysql事务并发控制_数据库 事务并发控制
事务是一个逻辑工作单元, SQLServer 2005 提供了几种自动的可以通过编程来完成的机制,包括事务日志. SQL 事务控制语句,以及事务处理运行过程中通过锁定保证数据完整性的机制.当用户对数据 ...
- mysql分库分表事务控制_数据库分库分表之后,你是如何解决事务问题?
我们需要接受失望,因为它是有限的:我们不会失去希望,因为它是无穷的. 一.概述 随着时间和业务的发展,数据库中表的数据量会越来越大,相应地,数据操作,增删改查的开销也会越来越大.因此,把其中一些大表进 ...
- mysql 事务原子性_数据库事务原子性、一致性是怎样实现的?
先借用前辈的一句话:数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别. 隔离性分为四个级别: 1读未提交:(Read Uncommitted) 2读已提 ...
- mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...
整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Inte ...
- mysql行级视图与列级视图_[数据库]--DML、DDL、TCL语言
DML语言(数据操作语言) 1.插入语句insert 语法1: insert into 表名(列名...) values(值...) 注意: 1.插入的值的字段必须和值匹配 2.插入的值的类型必须和字 ...
- 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)
二.事务 介绍锁之前,咱们先介绍一下 什么叫做事务. 事务就是一组对数据库的一系列的操作,要么同时成功,要么同时失败. 1.事务的特性(ACID): 原子性:事务是整个操作,不可分割,要么都成功,要么 ...
- vs连接mysql建一个表并增删查改_VS连接SQL Server数据库,增删改查详细教程(C#代码)...
工具: 1.Visual Studio (我使用的是vs2013) 2.SQL Server (我使用的是sql server2008) 操作: 1.打开SQL Server,打开后会看到数据库的初 ...
- mysql id会用完吗_数据库自增ID用完了会怎样?
起步 对DBA来说这应该是送分题吧.而我是突如其来的想法想测试下的.正常来说程序员是不会关心自增ID用完的情况的. 以 Mysql 为例,它支持的最大的整型是 unsigned bigint,上限是 ...
- mysql查询前5000条记录分页显示_数据库 完整的查询语句,查询顺序及分页显示功能...
基本的查询语句 select (* | 字段名 | 四则运算 | 聚合函数) from 表名称; 取别名 当字段名显示较长时 可以添加别名 select 字段名 as 别名 from 表名称; ...
最新文章
- nyoj 234 吃土豆
- python 提交form-data之坑
- 【计算机视觉】深度相机(六)--Kinect v2.0 手势样本库制作
- (转)致李开复博士的一封信
- linux分区大容量加入lvm,linux 添加磁盘+lvm扩容
- LOG4J 警告错误处理办法(转)
- java求阶乘的程序_按要求编写Java程序(阶乘)
- where is application controller bound to application main view
- CSS画各种二维图形
- 一个备份sql server文件.bak还原成两个数据库
- Docker,容器,虚拟机和红烧肉
- pyqt5框内显示图像_【好工具】VisualStudio下图像调试神器
- 抱薪者说 | 廿七喜得子老王为名忧,论坛聚英豪树鑫拔头筹
- ue4蓝图运行顺序_如何从零基础慢慢学习到UE4的顺序?
- windows11系统下vone客户端连接服务器失败,请确认网络连接是否正常解决方案
- 如何ping通github
- html 格式化金额显示
- linux之sed命令详解
- 安规之电气间距和爬电距离
- CPT101-小豪的笔记
热门文章
- stm32驱动lcd段码io配置_LCD驱动型单片机与段码液晶屏配合使用参考
- sdut4259种西瓜 [原题: 2018西安邀请赛K题]【线段树】
- Java SE 学习笔记 第二记
- 第5-4课:欧拉图与弗罗莱(Fleury)算法
- HTML三只松鼠怎么编写,网易新闻三只松鼠:2019防骗模拟考试
- 操作系统读者写者问题代码实现
- 第二类读者写者问题:写者优先
- vue H5跳转小程序
- 《Enforcing geometric constraints of virtual normal for depth prediction》论文笔记
- 再见,季后赛的马刺!再见,老爷子!