mysql数据库常用命令

1、mysql基础操作命令
1.1 数据库操作
命令 作用
select database(); 查询当前使用的数据库名称
drop database runoob; 删除数据库
1.2 增删改查操作
命令 作用
update table set value=num; 更新数据记录
delete from table; 删除记录
insert into table(id,name) value(1,’name’); 插入记录
select * from table; 查询数据
1.3 索引操作
命令 作用
create index indexname on table_name (column_name) 创建索引
alter table tablename add index indexname(columnname) 修改表结构(添加索引)
drop index indexname on mytable; 删除索引的语法
alter table testalter_tbl modify i int not null;
alter table testalter_tbl add primary key (i);
添加主键索引,主键作用于列上(可以一个列或多个列联合主键)
alter table testalter_tbl drop primary key; 删除主键
show index from table_name; \g 显示索引信息
1.4 表操作
命令 作用
alter table t_user add column user_age int(11) default null comment ‘年龄’ after user_email; 插入表字段
alter table tbl drop i int; 删除tbl表的i字段,类型为int
alter table tbl modify c char(10); 字段c的类型从char(1)改为char(10)
alter table tbl change i j bigint; 在 change 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。
create table employee2 like employee; 复制一张表
insert into employee2 select * from employee; 将一张表的数据插入另一张表
alter table tbl rename to tbl1; 修改表名
delete from table; 记录日志之后清空表
truncate table table; 不记录日志清空表(不可恢复)
drop table table_name; 删除表(表结构也会清空)
alter table table_name auto_increment=1; 重置表自增字段值序号
1.5 mysql函数
函数 作用
(case field
when 1 then ‘下雪’
when 2 then ‘下雨’
else ‘晴天’
end) 天气
对查询结果进行判断,显示不同的状态,如果field字段查询结果为1则下雪,如果为2则是下雨,相当于java的switch语句。
group by field 根据field字段将表查询结果进行分类。
count(filed) 查询field字段的记录数,如果为*则是所有的记录数。
sum(filed) 对查询的filed字段求和
2、mysql数据导入导出
  • 使用 SELECT … INTO OUTFILE 语句导出数据
    查看数据库允许的输出路径path:SHOW VARIABLES LIKE "secure_file_priv";
    导出查询结果:select * from table into outfile 'path';
  • 导出SQL格式的数据
    导出表数据:mysqldump -u root -p database table > save.sql
    导出指定数据库:mysqldump -u root -p database > save.txt
    导出所有数据库:mysqldump -uroot -p'Hello!23456' --events --all-databases --default-character-set=utf8 --hex-blob > /var/www/dbdump/alldb/my.sql
  • 将备份的数据库导入到MySQL服务器中
    导入表数据:source save.txt;
    导入数据库:mysql -u root -p database < dump.txt
3、mysql数据账号管理
  • 首次安装mysql没有密码验证,开启密码验证

    • 进入mysql数据库:use mysql;
    • 更改root用户密码:
      update user set password=password('password') where user='root';
      alter user user() identified by 'jing1995';
    • 重启mysql生效:service mysqld restart
  • mysql忘记密码免密登录

    • 停止mysql: service mysqld stop
    • my.cnf中添加skip-grant-tables
    • 启动mysql可以免密登录
  • mysql添加用户

    • 指定ip连接
      create user 'user'@'localhost' identified by 'password';
    • 允许所有ip连接(用通配符%表示)
      create user 'user'@'%' identified by 'password';
  • mysql删除用户
    DROP USER username@localhost;

  • 修改后刷新权限
    FLUSH PRIVILEGES;

  • 为新用户授权数据库访问权限

    • 基本格式如下:
      grant all privileges on 数据库名.表名 to '新用户名'@'指定ip' identified by '新用户密码';
    • 允许访问所有数据库下的所有表
      grant all privileges on *.* to '新用户名'@'指定ip' identified by '新用户密码';
    • 指定数据库下的指定表
      grant all privileges on test.test to '新用户名'@'指定ip' identified by '新用户密码';
  • 设置用户操作权限

    • 设置用户拥有所有权限也就是管理员
      grant all privileges on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION;
    • 拥有查询权限
      grant select on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION;
    • 其它操作权限说明,select查询 insert插入 delete删除 update修改
    • 设置用户拥有查询插入的权限
      grant select,insert on *.* to '新用户名'@'指定ip' identified by '新用户密码' WITH GRANT OPTION;
    • 取消用户查询的查询权限
      REVOKE select ON what FROM '新用户名';
4、mysql union 操作符
  • 描述
    mysql union 操作符用于连接两个以上的 select 语句的结果组合到一个结果集合中。多个 select 语句会删除重复的数据。
  • 语法
    1
    2
    3
    4
    5
    6
    7
    8
    mysql union 操作符语法格式:
    select expression1, expression2, ... expression_n
    from tables
    [where conditions]
    union [all | distinct]
    select expression1, expression2, ... expression_n
    from tables
    [where conditions];
  • 参数
    expression1, expression2, ... expression_n: 要检索的列。
    tables: 要检索的数据表。
    where conditions: 可选, 检索条件。
    distinct: 可选,删除结果集中重复的数据。默认情况下 union 操作符已经删除了重复数据,所以 distinct 修饰符对结果没啥影响。
    all: 可选,返回所有结果集,包含重复数据。