数据库基础知识

家住魔仙堡 提交于 2020-02-24 15:53:41

1、进入mysql

登陆数据库 mysql -uroot -p

2、增删改查

对应操作 命令 备注
insert into 表名(字段1,字段2,…) values(值1,值2,…);
delete from 表名 where…;
update 表名 set 修改的值 where …;
select 字段 from 表名 where …;
左右连接查询 命令
左连接 select * from table1 left join table2 on table1.name = table2.name;
右连接 select * from table1 right join table2 on table1.name = table2.name;

3、数据库索引
① mysql的底层引擎为InnoDB,索引是一种数据结构;
② 在mysql中采用的方式为B-tree,一般情况下,B-tree和B+tree索引相同;
③ B-tree的高度决定了索引搜索的次数,3层也就是搜索三次即可找到目标数据;
④ B-tree的数据都是存放在叶节点当中;

对应操作 命令 备注
创建单值索引 create index 索引名 on 表名(字段);
创建唯一索引 create unique index 索引名 on 表名(字段); 字段属性为primary key的为主键索引,主键索引不允许出现null
创建联合索引 create index 索引名 on 表名(字段1,字段2,…); 遵循最左匹配原则,先从最左索引开始,索引不一定全部使用
查看索引 show index on 表名;

下面语句也可创建索引:

alter table 表名 add index 索引名(需要创建索引的字段)

4、数据库锁机制

  • 锁的分类:
根据类型 特点
操作类型
a.读锁 (共享锁 读锁:多个数据可以同时进行,互不干扰;
b.写锁(互斥锁 读锁:多个数据可以同时进行,互不干扰;写锁:当前写操作未执行完毕,无法进行其他读写操作
操作范围
a.表锁 表锁:一次性对一张表加锁,存储引擎MyISAM默认使用,特点是开销小,加锁快,无死锁,缺点是锁的范围大,容易发生锁冲突,并发度低
b.行锁 一次性对一条数据加锁,存储引擎InnoDB默认使用,特点是开销大,加锁慢,容易发生死锁;锁的范围较小,不容易发生所冲突,并发度高(很小概率发生高并发问题:脏读,幻读,不可重复读)
c.页锁

△死锁:各自对数据进行了锁,并且需要对方的数据,但是双方因为上了锁,互相给不了数据,发生死锁。

  • 锁操作:
锁操作 命令 备注
增加锁 lock table 表1 read/write , 表2 read/write , …;
查看加锁的表 show open tables; 结果右边的值In_use/Name_locked如果为1,代表已加锁
读锁 lock table 表1 read; 如果用户对表1加读锁,只能对表1进行读操作,不能进行写操作,不能对其他表进行读写操作;其他用户只能对表1进行读操作,可以对其他表进行读写操作

mysql包括了四种特性:

①原子性;②一致性
③隔离性;④持久性
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!