数据库的增删改查、事务与索引

增删改查

一、查询(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增删改查要用事务吗_数据库的增删改查、事务与索引相关推荐

  1. mysql事务并发控制_数据库 事务并发控制

    事务是一个逻辑工作单元, SQLServer 2005 提供了几种自动的可以通过编程来完成的机制,包括事务日志. SQL 事务控制语句,以及事务处理运行过程中通过锁定保证数据完整性的机制.当用户对数据 ...

  2. mysql分库分表事务控制_数据库分库分表之后,你是如何解决事务问题?

    我们需要接受失望,因为它是有限的:我们不会失去希望,因为它是无穷的. 一.概述 随着时间和业务的发展,数据库中表的数据量会越来越大,相应地,数据操作,增删改查的开销也会越来越大.因此,把其中一些大表进 ...

  3. mysql 事务原子性_数据库事务原子性、一致性是怎样实现的?

    先借用前辈的一句话:数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别. 隔离性分为四个级别: 1读未提交:(Read Uncommitted) 2读已提 ...

  4. mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...

    整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Inte ...

  5. mysql行级视图与列级视图_[数据库]--DML、DDL、TCL语言

    DML语言(数据操作语言) 1.插入语句insert 语法1: insert into 表名(列名...) values(值...) 注意: 1.插入的值的字段必须和值匹配 2.插入的值的类型必须和字 ...

  6. 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)

    二.事务 介绍锁之前,咱们先介绍一下 什么叫做事务. 事务就是一组对数据库的一系列的操作,要么同时成功,要么同时失败. 1.事务的特性(ACID): 原子性:事务是整个操作,不可分割,要么都成功,要么 ...

  7. vs连接mysql建一个表并增删查改_VS连接SQL Server数据库,增删改查详细教程(C#代码)...

    工具: 1.Visual Studio (我使用的是vs2013) 2.SQL Server  (我使用的是sql server2008) 操作: 1.打开SQL Server,打开后会看到数据库的初 ...

  8. mysql id会用完吗_数据库自增ID用完了会怎样?

    起步 对DBA来说这应该是送分题吧.而我是突如其来的想法想测试下的.正常来说程序员是不会关心自增ID用完的情况的. 以 Mysql 为例,它支持的最大的整型是 unsigned bigint,上限是 ...

  9. mysql查询前5000条记录分页显示_数据库 完整的查询语句,查询顺序及分页显示功能...

    基本的查询语句​ select (* | 字段名 | 四则运算 | 聚合函数) from 表名称; 取别名 当字段名显示较长时 可以添加别名​ select 字段名 as 别名 from 表名称;​ ...

最新文章

  1. nyoj 234 吃土豆
  2. python 提交form-data之坑
  3. 【计算机视觉】深度相机(六)--Kinect v2.0 手势样本库制作
  4. (转)致李开复博士的一封信
  5. linux分区大容量加入lvm,linux 添加磁盘+lvm扩容
  6. LOG4J 警告错误处理办法(转)
  7. java求阶乘的程序_按要求编写Java程序(阶乘)
  8. where is application controller bound to application main view
  9. CSS画各种二维图形
  10. 一个备份sql server文件.bak还原成两个数据库
  11. Docker,容器,虚拟机和红烧肉
  12. pyqt5框内显示图像_【好工具】VisualStudio下图像调试神器
  13. 抱薪者说 | 廿七喜得子老王为名忧,论坛聚英豪树鑫拔头筹
  14. ue4蓝图运行顺序_如何从零基础慢慢学习到UE4的顺序?
  15. windows11系统下vone客户端连接服务器失败,请确认网络连接是否正常解决方案
  16. 如何ping通github
  17. html 格式化金额显示
  18. linux之sed命令详解
  19. 安规之电气间距和爬电距离
  20. CPT101-小豪的笔记

热门文章

  1. stm32驱动lcd段码io配置_LCD驱动型单片机与段码液晶屏配合使用参考
  2. sdut4259种西瓜 [原题: 2018西安邀请赛K题]【线段树】
  3. Java SE 学习笔记 第二记
  4. 第5-4课:欧拉图与弗罗莱(Fleury)算法
  5. HTML三只松鼠怎么编写,网易新闻三只松鼠:2019防骗模拟考试
  6. 操作系统读者写者问题代码实现
  7. 第二类读者写者问题:写者优先
  8. vue H5跳转小程序
  9. 《Enforcing geometric constraints of virtual normal for depth prediction》论文笔记
  10. 再见,季后赛的马刺!再见,老爷子!