Mysql常用指令

1、DDL语句

1.1 数据库操作

 #1.登录指令:
 mysql -u root -p,密码:123456
 #2.查询所有数据库
 show databases;
 #3.查询当前数据库
 select database();
 #4.创建数据库
 create database;
 #5.删除数据库
 drop database;
 #6.使用(跳转到某数据库)
 use 数据库名

1.2表操作

1.2.1表的创建相关操作

 #1.创建表
 create table 表名(
     字段1 字段1类型[COMMENT 字段1注释],
     字段2 字段2类型[COMMENT 字段2注释],
     ......
      字段n 字段n类型[comment 字段n注释]
 )[comment 表注释];
 #2.查询当前数据库所有表
 show tables;
 #3.查询表结构
 desc 表名;
 #4.查询指定表的建表语句
 show create table 表名;

1.2.2表的修改相关操作

 #1.往表结构中增加字段
 alter table 表名 add 字段名 类型(长度) [comment注释] [约束];
 #2.修改字段名和字段类型
 alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
 #3.修改数据类型
 alter table 表名 modify 字段名 新数据长度(长度);
 #4.修改表名
 alter table 表名 rename to 新名;
 #5.删除字段
 alter table 表名 drop 字段名;
 #6.删除表
 drop table [if exists] 表名;
 #7.删除指定表,并重新创建该表(作用是将该表数据全部清空,得到一张全新的空表,但结构不变);
 truncate table 表名;

2、DML语句

2.1添加数据(insert)

 #1.给指定字段添加数据
 insert into 表名(字段1,字段2,...) values(值1,值2,...);
 #2.给全部字段添加数据:INSERT INTO 表名 VALUES(值1,值2,…);
 insert into 表名 values(值1,值2,...);
 #3.批量添加数据:
 为指定字段添加
 insert into 表名(字段1,字段2,...) values(值1,值2,…),(值1,值2,…),(值1,值2,…);
 为表中全部字段添加
 insert into 表名 values(值1,值2…),(值1,值2…),(值1,值2…);

注意:

  • 1.插入数据时,指定字段顺序要与值的顺序一一对应;

  • 2.字符串和日期型数据应包含在引号中;

  • 3.插入的数据大小应该在字段的规定范围内。

2.2修改数据(update)

 #修改数据语法
 update 表名 set 字段1 = 值1,字段2 = 值2, ... [where条件];

注意:

  • 若不加where语句,则修改整张表的字段名

2.3删除数据(delete)

 #删除数据语法
 delete from 表名 [where 条件];

注意:

  • 1.delete的条件可以有也可以没有,若没有条件则会删除整张表的所有数据;

  • 2.delete语句不能删除某一个字段的值(可以用UPDATE将该字段的值置为NULL)

3、DQL语句

3.1基础查询

 #(1).查询多个字段
 ​
 #1.查询指定多个字段
 select 字段1,字段2, ... from 表名;
 #2.查询整张表
 select * from 表名;
 ​
 #(2).设置别名
 #语法
 select 字段1 [as 别名1], 字段2 [as 别名2]... from 表名;
 ​
 #(3).去除重复记录
 #语法
 select distinct 字段列表 from 表名;

3.2条件查询

(1).基本语法

 #语法
 select 字段列表 from 表名 where 条件列表;

(2.)条件

image-20250327233930618

对于比较运算符后三中查询的举例说明

#1.in(…),可以用于查询如:查询年龄等于18或20或40的员工信息
select * from emp where age in(18,20,40);

#2.like 占位符,用于模糊匹配,比如查询姓名为两个字的员工信息
select * from emp where name like '__';

#又如查询身份证号末尾是X的员工信息
select * from emp where idcard like '%X';

3.3聚合查询

(1).什么是聚合函数

概念:将一列数据作为一个整体,进行纵向计算,作用于某一列(字段)

(2).常见聚合函数

image-20250327234043170

(3).语法

#语法:select 聚合函数(字段列表) from 表名;

#统计员工数量
select count(*) from emp;

#统计有身份证号的员工数量(聚合函数不会统计NULL)
select count(idcard) from emp;

#统计员工最大年龄
select max(age) from emp;

#统计西安地区员工的年龄之和
select sum(age) from emp where workaddress = '西安';

注意:NULL值不参与所有聚合函数的计算

3.4分组查询

(1).语法

#语法:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

where与having的区别:

  • 执行时机不同:where是分组前进行过滤,不满足where条件的不参与分组;having对分组后的结果进行过滤

  • 判断条件不同:where不能对聚合函数进行判断,而having可以

(2).示例

基础查询

#根据性别分组,统计男性员工与女性员工数量
select gender, count(*) from emp group by gender;
#根据性别分组,统计男员工与女员工的平均年龄
select gender, avg(age) from emp group by gender;

分组查询

#查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

3.5排序查询

(1).语法

#语法
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;

(2).排序方式

ASC:升序(默认值)
DESC:降序

注意:如果是多字段排序,只有当第一个字段值相同时,才会根据第二个字段进行排序

3.6分页查询

(1).语法

#语法:SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;
select 字段列表 from 表名 limit 起始索引, 查询记录数;

注意

  • 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数

  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL是LIMIT

  • 如果查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 10

(2).例子

#查询第1页员工数据,每页展示10条数据
select * from emp limit 0, 10;
#查询第2页员工数据,每页展示10条数据(起始索引 = (页码 - 1) * 页展示记录数)
select * from emp limit 10, 10;