mysql常见操作

函数:https://blog.csdn.net/sinat_38899493/article/details/78710482

导入导出
导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名,如

  ./mysqldump -u root -p userinfo > /home/appadmin/data/infobak.sql

创建数据库

CREATE DATABASE IF NOT EXISTS aux_business DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

更新密码

  update mysql.user set password=password('ACr8X*2G') where user='root';

创建用户

CREATE USER 'appadm'@'%' IDENTIFIED BY 'sdPlcOjULIefds0RqjYzCi8';
    
select host,user from mysql.user;

授权

grant all privileges on *.* to root@'%' identified by 'ACr8X*2G'; 
grant all privileges on *auxmeeting.* to 'aux'@'%'identified by 'aux999' with grant option;
grant select,insert,update,delete on test.* to appadm@"localhost" identified by "123456"; 
grant alter on test.* to appadmuser@"localhost" identified by "123456"; 
grant lock tables on appadm.* to appadmuser@'localhost';
grant drop on appadm.* to appadmuser@'localhost';
grant drop on appadm.* to appadmuser@'%';

flush privileges;

show

1. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称。 
2. show databases; -- 显示mysql中所有数据库的名称。 
3. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。 
4. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。 
5. show index from table_name; -- 显示表的索引。 
6. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。 
7. show variables; -- 显示系统变量的名称和值。 
8. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。 
9. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。 
10. show privileges; -- 显示服务器所支持的不同权限。 
11. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。 
12. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。 
13. show engines; -- 显示安装以后可用的存储引擎和默认引擎。 
14. show innodb status; -- 显示innoDB存储引擎的状态。 
15. show logs; -- 显示BDB存储引擎的日志。 
16. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。 
17. show errors; -- 只显示最后一个执行语句所产生的错误。 
18. show [storage] engines; --显示安装后的可用存储引擎和默认引擎。

创建表

create table person(id int not null auto_increment,
    name varchar(8),
    birthday datetime,
    constraint pk__person primary key(id));

增删改查

INSERT INTO student(id,name,grade) VALUES (1,'zhangshan',98);
INSERT INTO student SET id=4,name='zhaoliu',grade=72;
INSERT INTO student VALUES (5,‘lilei’,99),(6,'hanmeimei',87),(8,'poly',76);

TRUNCATE TABLE student;

UPDATE student SET name=‘caocao’,grade=50 WHERE id=1;

DELETE  FROM student WHERE id=7;

1.修改表名

alter table test_a rename to sys_app;

2.修改表注释

alter table sys_application comment '系统信息表';

3、添加字段

ALTER TABLE card_apply ADD (qr_fileid VARCHAR (64) COMMENT '二维码文件id',manager_add_time INT (11) UNSIGNED DEFAULT '0' COMMENT  '升级为经理的时间')

4、修改字段

alter table sys_application  modify column app_name varchar(20) COMMENT '应用的名称';
4、
增加主键 
alter table t_app add aid int(5) not null ,add primary key (aid); 
alter table t_app add aid int(5) not null auto_increment ,add primary key (aid); 

修改

alter table t_app  modify column aid int(5) auto_increment ;
alter table t_app change name app_name varchar(20) not null;


在某个字段后增加字段
alter table `t_app` add column gateway_id int  not null default 0 AFTER `aid`; #(在哪个字段后面添加)  
调整字段顺序 
alter table t_app  change gateway_id gateway_id int not null after aid ; #(注意gateway_id出现了2次)

删除字段

alter table t_app drop aid; 

索引

1、主键索引 PRIMARY KEY
2、唯一索引 UNIQUE

ALTER TABLE user ADD UNIQUE (name);

ALTER TABLE user ADD UNIQUE (name,age);--创建唯一组合索引

3、普通索引 INDEX

ALTER TABLE user ADD INDEX index_name (name);

4、组合索引 INDEX

ALTER TABLE user ADD INDEX index_name(name, age);

5、全文索引 FULLTEXT

ALTER TABLE user ADD FULLTEXT (remark);

索引设计的原则
适合索引的列是出现在where子句中的列,或者连接子句中指定的列

基数较小的类,索引效果较差,没有必要在此列建立索引

使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间

不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。
通过SHOW STATUS LIKE 'Handler_read%';查看索引的使用情况:

你可能感兴趣的:(mysql常见操作)