MySQL常用命令

1. 简介

MySQL是工作中最为常用的关系型数据库管理软件。

用于自学请自行下载安装 MySQL免费社区版

本文档仅简要介绍日常工作中的常见用法,仅供参考。想要详细了解其用法,推荐阅读列表:

若感觉英文教程难以阅读,推荐阅读菜鸟教程提供的免费中文版 MySQL 教程

若觉得命令行使用起来不够方便,推荐使用 Navicat Premium,支持多种数据库,不过该软件是收费的。也可使用官方提供的免费的 MySQL Workbench

2. 常用命令一览表

命令功能
help查看命令行帮助
quit/exit断开数据库连接
create database创建数据库
show databases查看数据库列表
use选择数据库
drop database删除数据库
create role创建角色
drop role删除角色
create user创建用户
drop user删除用户
grant为用户或角色授权
revoke收回用户或角色授权
show grants查看用户和角色授权
create table创建表格
show tables查看表格列表
describe查看表格定义
alter table更新表格定义
drop table删除表格
rename table重命名
show create table查看创建表格的SQL语句
insert向表格中插入数据
update更新表格中的数据
delete删除表格中的数据
truncate table清空表格中的数据
select查询表格数据
begin开始事务
rollback回滚事务
commit提交事务

3. 基础命令

3.1. 连接数据库

在本机安装好数据库服务器或者数据库客户端后,可以使用mysql命令来连接数据库,常用选项有:

  • -h 指定数据库服务器IP地址,默认为本机地址localhost
  • -P 指定数据库服务器端口号,默认为3306
  • -u 指定登录用户名
  • -p 指定登录密码

可通过mysql --help命令了解其他用法

例1,连接本地数据库:

> mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.1.0 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

例2,连接远端数据库:

> mysql -h 192.168.1.2 -P 3306 -u root -p
Enter password: ***
Welcome to the MySQL monitor.  Commands end with ; or \g.
... ...
mysql>

连接数据库成功后会显示数据库版本信息和一些提示信息,提示连接成功之后就可以在mysql>提示符后执行相关命令了。

3.2. 查看命令行帮助

例1,使用help(缩写为?\?)命令来查看帮助:

mysql> help

For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
... ...

For server side help, type 'help contents'

例2,使用help contents命令来查看服务器端帮助:

mysql> help contents
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
   Account Management
... ...

例3,查看指定功能类型命令:

mysql> help Data Definition
You asked for help about help category: "Data Definition"
For more information, type 'help <item>', where <item> is one of the following
topics:
   ALTER DATABASE
... ...

例4,查看具体命令的帮助:

mysql> help CREATE DATABASE
Name: 'CREATE DATABASE'
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...
... ...

URL: https://dev.mysql.com/doc/refman/8.1/en/create-database.html

可以通过帮助信息中的URL查看官方在线帮助文档

3.3. 断开数据库连接

使用quitexit\q命令来端口数据库连接:

mysql> quit
Bye

4. 数据库管理

4.1. 创建数据库

输入help create database查看命令帮助。

创建数据库:

create database if not exists mydatabase
    character set utf8mb4
    collate utf8mb4_general_ci;

其中,mydatabase为数据库名,if not exists表示数据库不存在时才创建,character set指定默认字符集,collate指定默认排序规则。

4.2. 查看数据库列表

输入help show查看命令帮助。

查看数据库列表:

show databases;

4.3. 选择数据库

输入help use查看命令帮助。

选择指定数据库:

use mydatabase;

4.4. 查看当前选择的数据库

输入help select查看命令帮助。

查看当前数据库:

select database();

4.5. 删除数据库

输入help drop database查看命令帮助。

删除数据库:

drop database if exists mydatabase;

5. 权限管理

角色和用户用于权限管理,可以为用户直接授权,也可以为角色授权后再为用户授权对应的角色。

5.1. 创建角色

输入help create role查看命令帮助。

创建角色:

create role if not exists developer, tester;

5.2. 为角色授权

输入help grant查看命令帮助。

为角色授权:

grant all on mysql.* to developer;
flush privileges;

5.3. 收回角色权限

输入help revoke查看命令帮助。

收回角色权限:

revoke all on mysql.* from developer;
flush privileges;

5.4. 删除角色

输入help drop role查看命令帮助。

删除角色:

drop role if exists developer;
flush privileges;

5.5. 创建用户

输入help create user查看命令帮助。

创建名为jack的用户,允许从任意地址登录,将密码设置为123456

create user if not exists jack@'%' identified by '123456';

5.6. 为用户授权

输入help grant查看命令帮助。

例1,通过为用户分配角色来授权(with admin option 表示用户可将权限分配给其他人):

grant developer to jack with admin option;
flush privileges;

例2,直接为用户授权:

grant all on mysql.* to jack;
flush privileges;

5.7. 查看用户列表

SELECT User, Host FROM mysql.user;

其中Host列表示对应用户允许登录的地址,%表示允许从任意地址登录,localhost表示只允许从本机登录。

5.8. 查看用户或角色授权信息

输入help show grants查看命令帮助。

例1,查看当前用户授权信息:

show grants;

例2,查看指定角色或用户授权信息:

show grants for developer;
show grants for jack;

5.9. 收回用户授权

输入help revoke查看命令帮助。

例1,收回用户角色权限:

revoke if exists developer from jack;
flush privileges;

例2,收回用户指定权限:

revoke if exists all on mysql.* from jack;
flush privileges;

5.10. 删除用户

输入help drop user查看命令帮助。

删除指定用户:

drop user if exists jack;
flush privileges;

6. 表格管理

由于本章节命令未在表格名前添加数据库名的前缀,因此执行示例命令之前需要使用use命令选择数据库

6.1. 创建表格

输入help create table查看命令帮助。

访问MySQL 8.2 数据类型了解表格列支持的数据类型。

创建表格常用选项:

  • auto_increment 声明自增字段(整型)
  • comment 为列或者表添加备注
  • not null 声明列为非空
  • default 为列指定默认值
  • unique key 声明唯一索引
  • key 声明普通索引
  • using 指定索引类型
  • engine 指定存储引擎
  • charset 指定字符集
  • collate 指定排序方式

例1,创建雇员表:

create table if not exists `employee` (
    `id` bigint unsigned auto_increment primary key comment '雇员ID',
    `name` varchar(40) not null comment '姓名',
    `sex` char(4) not null comment '性别',
    `birthday` date not null comment '生日',
    `telephone` char(12) not null comment '手机号码',
    `is_chinese` bool default true comment '是否为中国人',
    unique key i_telephone(telephone) using btree,
    key i_birthday(birthday) using btree
) engine=innodb default charset=utf8mb4 collate=utf8mb4_general_ci comment '雇员基本信息';

6.2. 查看表格列表

show tables;

6.3. 查看表格结构

例1,通过describe命令查看表格结构:

describe employee;

例2,通过show命令查看表格结构:

show columns from employee;

例3,通过show命令查看表格索引:

show index from employee;

6.4. 更新表格结构

创建表格之后,可能需要根据业务需求更新表格结构。

输入help alter table查看命令帮助。

例1,添加列:

alter table employee add column `addr` varchar(100) not null comment '家庭住址';

例2,修改列:

alter table employee modify column `addr` varchar(200) not null comment '家庭住址';
alter table employee alter column `addr` set default 'China';
alter table employee change column `addr` `address` varchar(100) not null default 'China' comment '家庭住址' after `telephone`;

例3,删除列:

alter table employee drop column `address`;

例4,添加索引:

alter table employee add key i_name(`name`) using btree;

例4,删除索引:

alter table employee drop key i_name;

6.5. 删除表格

输入help drop table查看命令帮助。

drop table if exists employee;

6.6. 重命名表格

输入help rename table查看命令帮助。

例1,使用rename table命令重命名表格:

rename table employee to worker;

例2,使用alter table命令重命名表格:

alter table employee rename worker;

6.7. 复制表结构到新表

输入help create table查看命令帮助。使用like关键字指定使用已有表格作为模板创建新表。

create table worker like employee;

6.8. 基于已有表格数据创建新表

输入help create table查看命令帮助。创建新表时可使用*指定所有列,也可以指定部分列,或者添加筛选条件只选取部分数据。

create table worker select * from employee;

创建的新表与已有表格结构不完全一致,丢失了列auto_increment属性和索引信息。

6.9. 查看创建表格的SQL语句

输入help show create table查看命令帮助。

show create table employee;

7. 表格数据管理

7.1. 向表格中插入数据

输入help insert查看命令帮助。

例1,在命令行中输入待插入的数据:

insert into employee (`name`, `sex`, `birthday`, `telephone`, `is_chinese`) 
values 
    ('XiaoMing', '男', '1970-01-01', '13666666666', true),
    ('Lucky', '女', '1980-01-01', '13777777777', false);

例2,插入其他表格中的数据:

insert into worker select * from employee;

7.2. 更新表格中的数据

输入help update查看命令帮助。

update employee set `name` = 'LiXiaoming', `birthday` = '1970-02-02' where `name` = 'XiaoMing';

7.3. 删除表格中的数据

输入help delete查看命令帮助。

例1,删除指定数据:

delete from employee where `name` = 'LiXiaoming';

例2,删除所有数据(记录较多时使用truncate table命令更高效):

delete from employee;

7.4. 清空表格中的数据

输入help truncate table查看命令帮助。truncate table可简写为truncate

truncate employee;

8. 表格数据查询

输入help select查看命令帮助。

select命令功能强大用法很多,此处仅介绍其常见用法。

若需多表联查,输入help join查看命令帮助。

select命令常用子句:

  • where 指定筛选条件
  • distinct 用于去除重复结果
  • group by 用于查询分组后的结果
  • order by 用于对查询结果进行排序
  • limit 限制查询结果记录数量
  • offset 指定查询记录开始位置

例1,按姓名查询员工信息

select * from employee where `name` = 'Jack';

例2,去除重复的员工姓名:

select distinct `name` from employee;

例3,按性别查询员工数量:

select sex, count(*) as cnt from employee group by sex;

例4,查询最年轻的员工:

select * from employee order by birthday desc limit 1 offset 0;

9. 事务

推荐阅读MySQL事务和锁定语句了解事务。

输入help transaction查看事务相关命令列表。

9.1. 开始事务

输入help begin查看命令帮助。

begin

9.2. 回滚事务

输入help rollback查看命令帮助。

rollback

9.3. 提交事务

输入help commit查看命令帮助。

commit

10. 其他

MySQL还有很多其他本文档未涉及到的功能,包括:

  • 视图
  • 函数和存储过程
  • 备份和恢复
  • 表格数据导入和导出
  • 分区
  • ……

请自行阅读MySQL 用户手册深入学习。

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值