mysql 常用命令
-
表中设置联合unique
alter table role_function_view_relative add unique(`role_id`,`func_id`);
-
删除主键
alter table table_test drop primary key;
3. 新增主键 (注:在增加主键之前,必须先把反复的id删除掉 )
alter table table_test add primary key(id);
-
查询mysql的版本号
select version();
5. 查看当前会话是否自动提交事务
show variables like "autocommit”;
6. 查看当前会话锁等待超时时间限制,默认为50S
show variables like "Innodb_lock_wait_timeout";
7. 查看锁表情况
show status like 'Table%';
-- Table_locks_immediate 指的是能够立即获得表级锁的次数
-- Table_locks_waited 指的是不能立即获取表级锁而需要等待的次数
8. 查看正在被锁定的的表
show OPEN TABLES where In_use > 0;
-
创建索引
1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (
`column`
)
3.添加INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
-
添加外键
alter table t_book add constraint `fk` foreign key (`bookTypeId`) references t_booktype(`id`)
11. InnoDB行锁实现方式
InnoDB行锁是通过索引上的索引项来实现的,这一点MySQL与Oracle不同,后者是通过在数据中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味者:只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁!。
-
查询数据库表大小
select
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
order by TABLE_ROWS desc
SQL优化:
连接查询 > 嵌套查询: https://www.acfun.cn/v/ac11760731
SQL逻辑处理顺序: