MySQL 5.7.30 常用操作

一、密码

#修改密码
update mysql.user set authentication_string = password('123') where user = 'root' and host = 'localhost';

二、时区

#查看时区
show variables like '%time_zone';

#设置时区(重启失效)
set global time_zone = '+8:00';
flush privileges;

三、存储引擎

#查看支持的存储引擎
show engines;

#创建表时指定存储引擎
CREATE TABLE ai
(
    i bigint(20) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (i)
) ENGINE = MyISAM
  DEFAULT CHARSET = gbk;
  
#修改表的存储引擎
alter table table_name engine = innodb;

四、建表相关

#查看建表语句,\G是格式化
show create table ai \G;

#查看表状态
show table status like 'table_name' \G;

#检查表状态
check table table_name;

#修复表
repair table table_name;

#设置自动增长列(当插入0或null时实际插入的是增长值)
create table table_name
(
	i smallint not null auto_increment
)engine=innodb;
#强制设置自动增长列的初始值
alter table table_name auto_increment = n;
#查询当前线程最后插入记录使用的值(批量插入返回第一条)
select last_insert_id();

#关闭/打开外键的检查
set foreign_key_checks = 0/10:关闭   1:打开)

#给MEMORY表创建索引时,指定使用HASH还是BTREE
create index mem_hash using hash on table_name(id);

#修改表结构
ALTER TABLE <表名> [修改选项]
- ADD COLUMN <列名> <类型>
- CHANGE COLUMN <旧列名> <列名> <新列类型>
- ALTER COLUMN <列名> {
    SET DEFAULT <默认值> | DROP DEFAULT}
- MODIFY COLUMN <列名> <类型>
- DROP COLUMN <列名>
- RENAME TO <新列名> 
-

#添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在的字段名];
例: alter table actor add column age int after actor_id;

#修改字段数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
例:alter table actor modify age char(3);

#删除字段
ALTER TABLE <表名> DROP <字段名>;
例:alter table actor drop age;

#修改字段名称
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
例:alter table actor change actor_name actors_name char(100);

#修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
例:alter table actor rename to actors;

五、字符集

#查看所有字符集
show character set;
#显示所有的字符集和该字符集默认的校对规则
desc information_schema.character_sets;

#查看字符集的校对规则
show collation like 'gbk%';

#启动时指定服务器字符集
mysqld --default-character-set=gbk

#查询当前服务器的字符集
show variables like 'character_set_server';
#查询当前服务器的校对规则
show variables like 'collation_server';

六、导入导出

#【导出表结构】
#--default-character-set=gbk:设置以什么字符集连接
#-d 表示只导出表结构,不导出数据
#databasename,数据库名称
#createtab.sql,导出的文件名称
[root@localhost ~]# mysqldump -uroot -p --default-character-set=gbk -d databasename > createtab.sql

#【导出所有记录】
#--quick:该选项用于转储大的表。它强制msqldump从服务器一次一行地检索表中的行而不是检索所有行,并在输出前将它缓存到内存中。
#--no-create-info:不写重新创建每个转储表的CREATE TABLE语句
#--extended-insert:使用包括几个VALUES列表的多行INSERT语法。
#--default-character-set=latin1:设置以什么字符集连接
#databasename,数据库名称
#data.sql,导出的文件名称
[root@localhost ~]# mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 databasename > data.sql

七、触发器

#1、创建触发器【只能创建在永久表(Permanent Table)上,不能对临时表(Temporary Table)创建】
CREATE TRIGGER trigger_name trigger_time trigger_event
	ON tbl_name FOR EACH ROW trigger_stmt
#例子
delimiter //
create trigger tr_test
    after insert
    on actor
    for each row
begin
    insert into payment(staff_id, amount) values (new.actor_id, new.actor_id);
end //
------------------------参数说明 开始------------------------------------
1、trigger_time:触发时间
	- BEFORE  检查约束前触发
	- AFTER   检查约束后触发
2、trigger_event:触发事件
	- INSERT
	- UPDATE
	- DELETE
3、对同一个表相同触发时间的相同触发事件,只能定义一个触发器
4、new:更新后的记录
5、old:更新前的记录
6、对于有重复记录,需要进行UPDATE操作的INSERT,触发器执行顺序如下:
	- BEFORE INSERT
	- BEFORE UPDATE
	- AFTER UPDATE
   对于没有重复记录的INSERT,触发器执行顺序如下:
   	- BEFORE INSERT
   	- AFTER INSERT
------------------------参数说明 结束------------------------------------

#2、删除触发器
DROP TRIGGER [schema_name.]trigger_name

#3、查看触发器
show triggers \G  -- 所有触发器
select * from information_schema.triggers;
use information_schema;    desc triggers;

#4

八、事务

START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {
    0 | 1}
- START TRANSACTION:开始一项新的事务,会执行一个隐含的UNLOCK TABLES;
- BEGIN:开始一项新的事务
- COMMIT:提交事务
- ROLLBACK:回滚事务
- CHAIN:事务提交或回滚之后立即启动一个新事物,并且和刚才的事务具有相同的隔离级别
- RELEASE:事务提交或回滚之后断开和客户端的连接
- SET AUTOCOMMIT:修改当前连接的提交方式,1为自动提交,0为手动提交
#创建回滚点
savepoint point_name;

九、SQL Mode

#1、查询默认的SQL Mode
select @@sql_mode;

#2、修改SQL Mode
SET [SESSION | GLOBAL] sql_mode = 'modes';
	- SESSION:表示只在本次连接中生效
	- GLOBAL:表示在本次连接中并不生效,而对于新的连接则生效

你可能感兴趣的:(MySQL,mysql)