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.)条件
对于比较运算符后三中查询的举例说明
#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).常见聚合函数
(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;
评论区