mysql alter atafter_MySQL 常用操作

库和表

删除库

drop database 数据库名;

修改库名称

比如源库名称为 db1,要改为 db2.

2种方式:

mysqldump 先导出db1,再导入到db2

mysqldump -uroot -p'password' --default-character-set=utf8 -R --triggers --events --opt --set-gtid-purged=off --hex-blob --single-transaction --master-data=2 db1>db1_export.sql

mysql>create databse db2;

mysql>use db2;

mysql>source db1_export.sql;

新建库,然后将 db1的所有表 rename 到db2,操作如下:

create database db2;

rename db1.user to db2.user;

rename db1.xxx to db2.xxx;

...

这种速度比较快,可以用脚本循环 rename 表名

删除表

drop table 表名;

表字段

desc 表

查看所有表字段

show create table 表

查看建表语句

添加字段

# 添加主键

alter table user add column id bigint(11) not Null auto_increment primary key;

# 在开头添加 first

alter table user add column address varchar(64) not null first;

# 在 sex 字段后面添加 after sex

alter table user add column address varchar(64) not null after sex;

修改字段

alter table user modify column sex tinyint(1) default 0 after name;

删除字段

alter table user drop column address;

json 字段(5.7及以上)

建表

CREATE TABLE `tb_json` (

`id` BIGINT(11) NOT NULL AUTO_INCREMENT,

`content` JSON NULL DEFAULT NULL,

PRIMARY KEY (`id`)

);

添加值

INSERT into tb_json(content) VALUES ('{"id":1,"name":"zhangsan","sex":"男"}');

更新值

update tb_json set content=JSON_SET(content, '$.sex', "女") where id=1;

查询

mysql> SELECT content,JSON_EXTRACT(content, '$.sex') from tb_json;

+---------------------------------------------+--------------------------------+

| content | JSON_EXTRACT(content, '$.sex') |

+---------------------------------------------+--------------------------------+

| {"id": 1, "sex": "女", "name": "zhangsan"} | "女" |

+---------------------------------------------+--------------------------------+

索引

添加索引

# 主键索引

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` );

# 普通索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column` );

# 唯一索引

ALTER TABLE `table_name` ADD UNIQUE INDEX index_name ( `column` );

# 复合索引

ALTER TABLE `table_name` ADD INDEX index_name( `column1`, `column2`, `column3`);

删除索引

ALTER TABLE user DROP INDEX idx_name;

修改索引

先删除,再新建

ALTER TABLE `user` DROP INDEX idx_name;

ALTER TABLE `user` ADD INDEX idx_name(`name`);

连接数

查看、设置最大连接数

查看

show variables like 'max_connections';

设置

set GLOBAL max_connections = 10240;

可以在 /etc/my.cnf 或 my.ini 里面设置数据库的最大连接数

[mysqld]

max_connections = 10240

当前占用连接

root 用户能看到所有

其他用户只能看到自己的

show processlist; # 100条

show full processlist; # 所有

其他

show status like '%变量%';

变量

解释

Aborted_clients

由于客户没有正确关闭连接已经死掉,已经放弃的连接数量

Aborted_connects

尝试已经失败的MySQL服务器的连接的次数

Connections

试图连接MySQL服务器的次数

Created_tmp_tables

当执行语句时,已经被创造了的隐含临时表的数量

Delayed_insert_threads

正在使用的延迟插入处理器线程的数量

Delayed_writes

用INSERT DELAYED写入的行数

Delayed_errors

用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数

Flush_commands

执行FLUSH命令的次数

Handler_delete

请求从一张表中删除行的次数

Handler_read_first

请求读入表中第一行的次数

Handler_read_key

请求数字基于键读行

Handler_read_next

请求读入基于一个键的一行的次数

Handler_read_rnd

请求读入基于一个固定位置的一行的次数

Handler_update

请求更新表中一行的次数

Handler_write

请求向表中插入一行的次数

Key_blocks_used

用于关键字缓存的块的数量

Key_read_requests

请求从缓存读入一个键值的次数

Key_reads

从磁盘物理读入一个键值的次数

Key_write_requests

请求将一个关键字块写入缓存次数

Key_writes

将一个键值块物理写入磁盘的次数

Max_used_connections

同时使用的连接的最大数目

Not_flushed_key_blocks

在键缓存中已经改变但是还没被清空到磁盘上的键块

Not_flushed_delayed_rows

在INSERT DELAY队列中等待写入的行的数量

Open_tables

打开表的数量

Open_files

打开文件的数量

Open_streams

打开流的数量(主要用于日志记载)

Opened_tables

已经打开的表的数量

Questions

发往服务器的查询的数量

Slow_queries

要花超过long_query_time时间的查询数量

Threads_connected

当前打开的连接的数量

Threads_running

不在睡眠的线程数量

Uptime

服务器工作了多少秒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值