MySQL常用命令与语句
阅读原文时间:2023年07月08日阅读:1

目录

Shell命令

mysql -uroot -p123 -h127.0.0.1 -P3306 #登录
mysqladmin kill ${processId} #杀掉进程ID
mysqldump -uroot -p123 test1 > test_with_data.sql
mysqldump -uroot -p123 test1 --ignore-table test1.user > test1_no_user.sql
mysqldump -uroot -p123 --databases --no-data test1 test2 > backup_no_data.sql
mysqldump -uroot -p123 --default-character-set=utf8 test2 > test2.sql # 导出数据
mysql -uroot -p123 --default-character-set=utf8 test2 < test2.sql; #导入数据
source /Users/Charles/test_20151207.sql; # 导入数据

查看系统信息

select version(); # 查询数据库版本
select @@version; # 查询数据库版本
select @@sql_mode;
select @@tx_isolation; #查看默认隔离级别
select @@autocommit; # 查询是否开启自动提交
show engines;

show processlist; #展示哪些线程正在运行,如果不使用full关键词,只显示每个查询的前100个字符)
show databases; #展示当前所有的数据库
show profiles;
show profile for query 60;

查看系统变量

show status; #显示数据库关联的配置的所有变量
show status like 'Threads%'; #查看mysql数据库连接数、并发数相关信息
show status like 'innodb_row_lock%'; #分析系统上的行锁的争夺情况
show variables; #显示数据库关联的配置的所有变量
show variables like '%version%';
show variables like '%max_connections%';
show variables like 'autocommit'; #1表示开启,0表示关闭
show variables like 'innodb_lock_wait_timeout'; #查询事务等待超时时间
show variables like '%profiling%';

设置系统变量

SET GLOBAL autocommit=1; # 开启自动提交
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;

数据库操作

create database charles;
drop database charles;
use charles;

查看表信息

show tables;
show table status; #查看所有表的统计信息
show create table test; #展示一个表的建表语句
show index from test; #查看索引信息
analyze table test; #重新统计表的信息,包括cardinality
desc test; #查看表字段信息

修改表语句

alter table table_name engine=innodb; #修改表的engine
alter table test rename to sample; #修改表名
alter table test default character set utf8; #修改表的编码格式
alter table test convert to character set utf8; #修改表的所有字段
alter table test auto_increment = 1; #重置表的自增ID


alter table test drop index idx_1;(删除索引)
alter table test add index idx_phone (phone_number) USING BTREE; #添加索引)
alter table test add unique key `idx_invoice` (`invoice_no`,`invoice_code`) USING BTREE;
alter table test add unique (`day`,`shift_id`,`config_id`,`type`);
alter table test add constraint agg_unique unique (`day`,`shift_id`,`type`);(添加unique)


alter table test add constraint `test_ibfk_1` foreign key (`ebox_id`) references `ebox` (`eid`) on update cascade; #添加外键
alter table test drop foreign key test_ibfk_1; #删除外键


alter table test add column sex char(1) default null comment '识别' after name; #添加备注和顺序
alter table test drop column title; #删除字段
alter table test modify column pdf_path varchar(255) not null default ''; #修改字段长度
alter table test change sex gender char(1); #修改列名1
alter table test change sex gender char(1) character set utf8 not null; #修改列名2

查询常用语句

select * from test where time <= now() - INTERVAL 900 SECOND;

select group_concat(column_name separator ',') from information_schema.columns
where table_schema = 'charles' and table_name = 'test'; #查询表的所有列名

SELECT * FROM information_schema.COLUMNS WHERE table_schema='test' AND column_key='PRI' AND data_type='int'; #查询表的列名信息

SELECT @scanBatchNo := GROUP_CONCAT("'", SCAN_BATCH_NO, "'") FROM test; #把查询结果赋值给变量