插入操作:
原组值得插入
最基本的插入方式
insert into tablename values(val1,val2,....)
如果表名之后没有列,那么只能将所有的列都插入
insert into tablename (col1,col2,....)values(val1,val2,....)
可以指定向哪些列中插入数据,要遵从表的规范
查询结果的插入
创建表的其他方式
create table tablename1 as select * from tablename2
复制表的结构和数据,但不会复制里面的约束
create table tablename1 as select * from tablename2 where 1=2
复制表的结构
删除操作:
删除满足条件的数据
delete from tablename where 条件
把整张表的数据全部清除
delete from tablename
tuncate跟delete有所不同,delete在进行删除的时候经过事务,而truncate不经过事务,一旦删除就是永久删除,不具备回滚的操作
truncate tablename 效率高,但容易发生误操作,不建议使用
更新操作:
update tablename set col1 = value1 , col2 = vlaue2 where 条件
可以更新或修改满足条件的一个列或者多个列
增删改是数据库常用的操作,在进行操作的时候都需要事务的保证
事务变得非常关键:
最主要的目的是为了数据的一致性
如果同一份数据,在同一个时刻只能有一个人访问,就不会出现数据错乱的问题,但是在现在项目中,更多的是并发访问,并发访问的同时带来的是数据的不安全,也就是不一致性
如果要保证数据的安全,最主要的方式就是加锁的方式MVCC
事务的延伸:
最基本的数据库事务
声明事务
分布式事务
为提高效率,可能多个操作会在同一个事务中执行,那么就有可能部分成功,部分失败,基于这种情况就需要控制事物的控制
如果不保证事务的话,会造成脏读,不可重复读,幻读