MySQL的最全常用SQL语句 —— 一文可以快速熟悉回忆sql语句

Posted 猿小付

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL的最全常用SQL语句 —— 一文可以快速熟悉回忆sql语句相关的知识,希望对你有一定的参考价值。

📖本篇内容:mysql的常用指令 —— 一文可以快速熟悉、回忆Sql语句

📆 最近更新:2022年1月10日 MySQL的常用指令

🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)

🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 关爱程序猿,从你我做起

MySQL的常用指令

写在前面

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

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

1、启动MySQL服务 net start mysql

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

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

PS C:\\WINDOWS\\system32> net start mysql
MySQL 服务正在启动 ....
MySQL 服务已经启动成功。

2、关闭MySQL服务器 net stop mysql

2、关闭MySQL服务器 net stop mysql

PS C:\\WINDOWS\\system32> net stop mysql
MySQL 服务正在停止..
MySQL 服务已成功停止。

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

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

PS C:\\WINDOWS\\system32> 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:\\AppServ\\MySQL\\bin\\mysql.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> drop table user;
Query OK, 0 rows affected (0.47 sec)

9、查看详细建库信息

9、查看创建库的详细信息 show create database 库名;

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 字段 fromorder 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>

注意找到规律哦~

五、操作数据表与数据之间的连接查询

1、准备工作

准备工作

创建三张表:user、role、user_role

并且插入数据 用于连接查询。

mysql> use test ;
Database changed
mysql> create table `role`(
    -> `id` int not null primary key,
    -> `name` varchar(64) ,
    -> `nameZh` varchar(64)
    -> )engine = innodb default charset = utf8以上是关于MySQL的最全常用SQL语句 —— 一文可以快速熟悉回忆sql语句的主要内容,如果未能解决你的问题,请参考以下文章

一文学完所有的Hive Sql(两万字最全详解)

一文简述-MySql性能查询常用语句

MySQL进阶系列: 一文详解explain各字段含义

万字长文!全网最全最细MySQL sql语句大全(建议收藏)

MySQl之最全且必会的sql语句

一文讲清,MySQL的执行计划