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包括了四种特性:
①原子性;②一致性
③隔离性;④持久性
来源:CSDN
作者:一只小小小小菜
链接:https://blog.csdn.net/weixin_38179563/article/details/104475767