MySQL的常用指令

写在前面



因为最近在复习Java的基础框架、也复习到了数据库的相关知识、这里就是整合了所有在开发项目与学习当中用到的最常用最常用的操作命令,囊括了项目实战案例,也囊括了所有操作的SQL语句,可以让你快速过一遍SQL语句,加深基础知识,学习复习时会更有余力,我也相信这篇文章会让你快速回忆起绝大部分的操作数据库的知识点,就说这么多啦~毕竟文章才是重点!!


一、通过命令行操作数据库服务的常用指令

1、启动MySQL服务 net start mysql

1、启动Mysql服务器(这里使用的是PowerShell进行的测试) net start mysql


注意:需要用管理员权限来启动命令行哦~


PS C:WINDOWSsystem32> net start mysql

MySQL 服务正在启动 ....

MySQL 服务已经启动成功。

2、关闭MySQL服务器 net stop mysql

2、关闭MySQL服务器 net stop mysql


PS C:WINDOWSsystem32> net stop mysql

MySQL 服务正在停止..

MySQL 服务已成功停止。

3、连接MySQL服务器 mysql -u root -p

3、连接MySQL服务器 mysql -u root -p


PS C:WINDOWSsystem32> mysql -u root -p #-u 用户名 -p 用户的密码 -h 主机地址

Enter password: ************

Welcome to the MySQL monitor.  Commands end with ; or g.

Your MySQL connection id is 8

Server version: 8.0.25 MySQL Community Server - GPL


Type 'help;' or 'h' for help. Type 'c' to clear the buffer.


mysql>

4、断开MySQL服务器的连接 exit

4、断开MySQL服务器的连接 exit


mysql> exit

Bye

5、查看当前MySQL服务器的信息 status

5、查看当前MySQL服务器的信息 status


mysql> status

--------------

G:AppServMySQLbinmysql.exe  Ver 14.12 Distrib 5.0.51b, for Win32 (ia32)


Connection id:          10

Current database:

Current user:           root@localhost

SSL:                    Not in use

Using delimiter:        ;

Server version:         8.0.25 MySQL Community Server - GPL

Protocol version:       10

Connection:             localhost via TCP/IP

Server characterset:    utf8mb4

Db     characterset:    utf8mb4

Client characterset:    utf8mb3

Conn.  characterset:    utf8mb3

TCP port:               3306

Uptime:                 2 min 30 sec


Threads: 2  Questions: 7  Slow queries: 0  Opens: 117  Flush tables: 3  Open tables: 36  Queries per second avg: 0.046

--------------

收起

二、操作数据库的常用指令

1、查看所有的数据库 show databases

1、查看当前MySQL服务器下的所有的数据库


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| alascanfudb        |

| information_schema |

| mybatis            |

| mysql              |

| performance_schema |

| vhr                |

| vueblog            |

+--------------------+

7 rows in set (0.10 sec)

2 、创建数据库create database 数据库名

2、创建一个数据库 名称为ordertest || create database 数据库名;


mysql> create database ordertest;

Query OK, 1 row affected (0.17 sec)

3、删除数据库 drop database 数据库名

3、删除名称为ordertest的数据库 drop database 数据库名;


mysql> drop database ordertest;

Query OK, 0 rows affected (0.29 sec)

4、选择数据库 use 数据库名

4、选中指定的数据库进行操作,在创建表之间务必选择数据库 use 数据库名;


mysql> use ordertest;

Database changed

5、显示数据库中的所有表 show

5、显示数据库中的所有表 show tables;


mysql> show tables;

Empty set (0.00 sec)

6 、创建一张表(实战)

6、创建一张表 (实战演示)


CREATE TABLE `user` (

`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,

`uid` INT ( 11 ) DEFAULT NULL,

`Date` date DEFAULT NULL COMMENT '入职日期',

`Salary` INT ( 11 ) DEFAULT NULL COMMENT '薪资',

`remark` VARCHAR ( 255 ) DEFAULT NULL COMMENT '备注',

PRIMARY KEY ( `id` ),

CONSTRAINT `adjustsalary_ibfk_1` FOREIGN KEY ( `eid` ) REFERENCES `employee` ( `id` )

) ENGINE = INNODB DEFAULT CHARSET = utf8;

建表说明


可以在字段后NOT NULL代表当前键值不能为空,DEFAULT NULL 代表设置了默认值为null,INT ( 11 )代表此字段为INT类型且占11位,COMMENT '薪资'代表的是为当前字段添加备注薪资,**PRIMARY KEY (id)**设置 id 字段为主键,同时设置了外键约束。ENGINE = INNODB DEFAULT CHARSET = utf8;设置了数据库引擎为INNODB 并且默认编码方式为UTF-8。

7、显示表中字段 desc 表名

7、显示表的字段 desc 表明;


mysql> desc user;

+--------+--------------+------+-----+---------+----------------+

| Field  | Type         | Null | Key | Default | Extra          |

+--------+--------------+------+-----+---------+----------------+

| id     | int          | NO   | PRI | NULL    | auto_increment |

| uid    | int          | YES  |     | NULL    |                |

| Date   | date         | YES  |     | NULL    |                |

| Salary | int          | YES  |     | NULL    |                |

| remark | varchar(255) | YES  |     | NULL    |                |

+--------+--------------+------+-----+---------+----------------+

5 rows in set (0.00 sec)

8、删除表 drop table 表名

8、删除表 drop table 表名;


mysql> show create database ordertest;

| Database  | Create Database                                            

| ordertest | CREATE DATABASE `ordertest` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |


1 row in set (0.00 sec)

10、查看详细建表信息

10 、查看创建表的详细信息 show create table 表名;


mysql> show create table user;


| Table | Create Table                                                    

| user  | CREATE TABLE `user` (

 `id` int NOT NULL AUTO_INCREMENT,

 `uid` int DEFAULT NULL,

 `Date` date DEFAULT NULL COMMENT '鍏ヨ亴鏃ユ湡',

 `Salary` int DEFAULT NULL COMMENT '钖祫',

 `remark` varchar(255) DEFAULT NULL COMMENT '澶囨敞',

 PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3         |


1 row in set (0.00 sec)

三、操作表的结构常用指令

1、修改字段的类型 alter table 表名 modify 字段 字段类型;


mysql> alter table user modify `Salary` varchar(32);

Query OK, 0 rows affected (1.41 sec)

Records: 0  Duplicates: 0  Warnings: 0

2、添加新的字段 alter table 表名 add 字段 字段类型;


 


mysql> alter table user add age int(8);

Query OK, 0 rows affected, 1 warning (0.65 sec)

Records: 0  Duplicates: 0  Warnings: 1

3、添加字段到指定位置之后 alter table 表名 add 字段 字段类型 after 字段;


 


mysql> alter table user add sex int(8) after age;

Query OK, 0 rows affected, 1 warning (1.49 sec)

Records: 0  Duplicates: 0  Warnings: 1

4、删除表中字段 alter table 表名 drop 字段;


 


mysql> alter table user drop sex;

Query OK, 0 rows affected (1.41 sec)

Records: 0  Duplicates: 0  Warnings: 0

5、修改指定的字段 alter table 表名 change 原字段名 新字段名 字段的类型;


 


mysql> alter table user change uid userid int(8);

Query OK, 0 rows affected, 1 warning (0.63 sec)

Records: 0  Duplicates: 0  Warnings: 1

四、操作表中数据的常用指令

先在数据库中创建一张表user


mysql> CREATE TABLE `user`(

   -> `id` INT(8) NOT NULL PRIMARY KEY,

   -> `username` varchar(32) DEFAULT NULL ,

   -> `password` varchar(32) DEFAULT NULL

   -> ) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Query OK, 0 rows affected, 2 warnings (1.17 sec)

1、增加数据

1、增加数据


-- 第一种方式 insert into 表名 values(值1,值2,...)

mysql> insert into user values(1,'root','root');

Query OK, 1 row affected (0.59 sec)

-- 第二种方式 常用!!!

mysql> insert into user(id,username,password) values (2,'admin','admin');

Query OK, 1 row affected (0.89 sec)

-- 第三种方式 插入多条数据

mysql> insert into user(id,username,password) values(1,'root','root'),(2,'admin','admin'),(3,'Alascanfu','123456');

Query OK, 3 rows affected (0.12 sec)

Records: 3  Duplicates: 0  Warnings: 0

2、修改数据

2、删除数据


-- 删除一条数据 delete from 表名 where 条件

mysql> delete from user where id = 2;

Query OK, 1 row affected (0.04 sec)

-- 删除表中所有数据

mysql> delete from user ;

Query OK, 2 rows affected (0.36 sec)

3、更新数据

3、更改数据


-- 更新数据 update 表名 set字段1 = 值1, 字段2 = 值2 where 条件

mysql> update user set password = '123' where id = 3;

Query OK, 1 row affected (0.54 sec)

Rows matched: 1  Changed: 1  Warnings: 0

4、查询数据

4、查询数据


-- 查询表中所有数据 select * from 表名

mysql> select * from user;

+----+-----------+----------+

| id | username  | password |

+----+-----------+----------+

|  1 | root      | root     |

|  2 | admin     | admin    |

|  3 | Alascanfu | 123      |

+----+-----------+----------+

3 rows in set (0.00 sec)

-- 查询指定字段数据 select * from

mysql> select username from user;

+-----------+

| username  |

+-----------+

| root      |

| admin     |

| Alascanfu |

+-----------+

3 rows in set (0.00 sec)

-- 条件查询数据 select 字段 from 表名 where 条件 重要!!!

-- where 条件后面跟的条件

--     关系:>,<,>=,<=,!=  

--     逻辑:or, and

--     区间:id between 4 and 6 ;闭区间,包含边界

收起

5、排序查询

5、排序查询


-- select 字段 from 表 order by 字段  排序关键词(desc 降序 | asc 升序)

mysql> select * from user order by id desc;

+----+-----------+----------+

| id | username  | password |

+----+-----------+----------+

|  3 | Alascanfu | 123      |

|  2 | admin     | admin    |

|  1 | root      | root     |

+----+-----------+----------+

3 rows in set (0.00 sec)

-- 多字段排序查询

select 字段 from 表 order by 字段1  desc |asc,...字段n desc| asc;

6、函数应用查询

6、 常用函数查询


-- 去重 distinct()  统计总数sum()   计算个数count()  平均数avg()  最大值max() 最小数min()

mysql> select a.class,a.score

   -> from student a

   -> where (select count(*) from student where class=a.class and a.score<score)<3

   -> order by a.class,a.score desc;

+--------+-------+

| class  | score |

+--------+-------+

| class1 |    95 |

| class1 |    82 |

| class1 |    14 |

| class2 |    95 |

| class2 |    85 |

| class3 |    88 |

+--------+-------+

6 rows in set (0.03 sec)

7、分组数据查询

7、分组进行查询


-- 分组查询

mysql> select count(sex)as sexnum,sex from user group by sex;

+--------+-------+

| sexnum | sex   |

+--------+-------+

|      3 | man   |

|      1 | woman |

+--------+-------+

2 rows in set (0.00 sec)

-- 分组查询带有条件

mysql> select count(sex)as sexnum,sex from user group by sex having sexnum > 1;

+--------+------+

| sexnum | sex  |

+--------+------+

|      3 | man  |

+--------+------+

1 row in set (0.00 sec)

8、分页数据查询

8、分组数量查询


select * from 表名 limit 偏移量,数量

说明:

不写偏移量的话就是默认的为0

实现分页的时候必须写偏移量

偏移量怎么计算?:

limit (n-1)*数量 ,数量

startIndex = (index-1)*3

SELECT * FROM table LIMIT [offset,] [rows] | rows OFFSET offset;


mysql> select * from user limit 0,1;

+----+------+------+

| id | name | sex  |

+----+------+------+

|  1 | root | man  |

+----+------+------+

1 row in set (0.00 sec)


mysql> select * from user limit 0,2;

+----+-------+------+

| id | name  | sex  |

+----+-------+------+

|  1 | root  | man  |

|  2 | admin | man  |

+----+-------+------+

2 rows in set (0.00 sec)


mysql> select * from user limit 1,1;

+----+-------+------+

| id | name  | sex  |

+----+-------+------+

|  2 | admin | man  |

+----+-------+------+

1 row in set (0.00 sec)


mysql> select * from user limit 2,1;

+----+------+-------+

| id | name | sex   |

+----+------+-------+

|  3 | hhxf | woman |

+----+------+-------+

1 row in set (0.00 sec)


mysql> select * from user limit 0;

Empty set (0.00 sec)


mysql> select * from user limit 1;

+----+------+------+

| id | name | sex  |

+----+------+------+

|  1 | root | man  |

+----+------+------+

1 row in set (0.00 sec)


mysql>

收起

注意找到规律哦~


欢迎留言