修改用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
查看数据库编码格式
- 查看数据库编码格式: show variables like 'character_set_database';
- 查看数据表的编码格式:show create table <表名>;
- 查看 MySQL 数据列(column)的字符集:show full columns from <表名>;
- 创建数据库时指定数据库的字符集:create database <数据库名> character set utf8;
- alter database mydb DEFAULT CHARACTER SET utf8;
- 修改数据库的编码格式:alter database <数据库名> character set utf8;
- 修改数据表格编码格式:alter table <表名> character set utf8;
- 修改表的默认字符集和所有列的字符集: ALTER TABLE table_name CONVERT TO CHARACTER SET character_name
- 修改字段编码格式:alter table <表名> change <字段名> <字段名> <类型> character set utf8;
- 查看当前安装的 MySQL 所支持的字符集:show charset;
- 在 my.cnf 修改默认的服务器字符集:character-set-server=utf8
改表结构
1)添加字段:alter table table_name add column column_name varchar(64) AFTER `uid` ; (在哪个字段后面添加)
2)删除字段:alter table table_name drop column column_name;
3)修改字段类型:
alter table 表名 modify column 字段名 类型; 【修改列类型】
alter table 表名 change 旧字段名 新字段名 类型; 【修改列名和列类型】
4)添加外键:
alter table users add constraint users_ibfk_1 FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`);
5)修改表的默认字符集和所有列的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET character_name
查看索引
mysql> show index from tblname; mysql> show keys from tblname;
添加索引
# 主键索引 mysql> ALTER TABLE `table_name` ADD PRIMARY KEY ('column');
# 新增列,并设为主键,first 放在首列
mysql> ALTER TABLE table_name add column id int unsigned NOT NULL AUTO_INCREMENT primary key COMMENT '主键' FIRST; # 唯一索引 mysql> ALTER TABLE `table_name` ADD UNIQUE index_name (`column`) # 普通索引 mysql> ALTER TABLE `table_name` ADD INDEX index_name ( `column`) # 全文索引 mysql> ALTER TABLE `table_name` ADD FULLTEXT (`column`) # 多列索引 mysql> ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`)
也可以使用 create index 语句创建索引:
CREATE INDEX index_name ON table_name (column_list); CREATE UNIQUE INDEX index_name ON table_name (column_list);
table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
删除索引
DROP INDEX index_name ON talbe_name; ALTER TABLE table_name DROP INDEX index_name; ALTER TABLE table_name DROP PRIMARY KEY;
其中,前两条语句是等价的,删除掉table_name中的索引index_name。
第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
修改索引
在MySQL中并没有提供修改索引的直接指令,一般情况下,我们需要先删除掉原索引,再根据需要创建一个同名的索引,从而变相地实现修改索引操作。
撤回 with grant option 权限
mysql> revoke grant option on *.* from 'user'@'localhost';
重命名表: rename table old_name to new_name;
获取当前日期时间:
> select current_date(); +----------------+ | current_date() | +----------------+ | 2017-11-06 | +----------------+ > select current_time(); +----------------+ | current_time() | +----------------+ | 14:32:46 | +----------------+ > select current_timestamp(); +---------------------+ | current_timestamp() | +---------------------+ | 2017-11-06 14:32:53 | +---------------------+
安装插件,如:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; mysql> INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';
卸载插件:
mysql> UNINSTALL PLUGIN plugin_name;
查看表锁:
mysql> show open tables where in_use > 0; mysql> show table status;
insert ignore into
当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。
replace into
如果存在primary or unique相同的记录,则先删除掉,再插入新记录(影响的行数为2)。如果没有冲突,同 insert into 语句。
REPLACE INTO test(title,uid) VALUES ('1234657','1001');
修改字段顺序
ALTER TABLE `tb_position` CHANGE `area` `area` VARCHAR(50) AFTER `city`;