一篇!玩转!基础的数据库MySQL表的增删改查!!!

增删改查 即 增加(Create)、删除(Delete)、更新(Update)、查询(Select)

1 新增(Create)

语法:

insert  [into] table_name
 [(column [, column] ...)] 
 values (value_list) [, (value_list)] ...
 
alue_list: value, [, value] ...

--简单记忆
insert  [into] 表名 [列名] values (数据)
插入列数据,以“,”间隔

其中[]为可选项

例如:

drop table if exists student;
create table student(
   id int,
   school_id int comment '学号',
   name varchar(20) comment '姓名',
   qq_mail varchar(20) comment 'QQ邮箱'
   );

1.1 单行数据+全列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
insert into student values (1,20181101,'zhangsan',null),
insert into student values (2,20181102,'lisi',111111);

1.2 多行数据+指定列插入

insert into student(id,school_id,name) values
    (3,20181103,'wangwu'),
    (4,20181107,'zhaosi');

2 查找(Select)

例如:

--创建考试成绩表
drop table if exists exam_result;
create table exam_result(
id int,
name varchar(50),
chinese decimal(3,1),
math decimal(3,1),
english decimal(3,1)
);

--插入数据
insert into exam_result (id,name, chinese, math, english) values
 (1,'amy', 67, 98, 56),
 (2,'tom', 87.5, 78, 77),
 (3,'sweat', 88, 98.5, 90),
 (4,'mate', 82, 84, 67),
 (5,'perry', 55.5, 85, 45),
 (6,'sam', 70, 73, 78.5),
 (7,'rose', 75, 65, 30);

a)全列查找

select * from [表名];

在这里插入图片描述

b)指定列查找

-- 指定列的顺序不需要按定义表的顺序来
select[列名]from[表名];

在这里插入图片描述

c)带有表达式的查找

  • 表达式不包含字段
--查询学生的id,name,将第三列填10
select id, name, 10 from exam_result;

在这里插入图片描述

  • 表达式包含一个字段
-- 查询
--各学生的学号,姓名以及英语成绩加10分之后的成绩
select id, name, english + 10 from exam_result;

在这里插入图片描述

  • 表达式包含多个字段
--查询各位同学的学号,姓名以及总分
select id, name, chinese + math + english from exam_result;

在这里插入图片描述

d)查找的时候可以给指定列起别名

结果集中,表头的列名=别名
使用as,as 也可以省略

select id, name, chinese + math + english 总分 from exam_result;

在这里插入图片描述

e)去重查询 distinct

select distinct math from exam_result; 

select distinct math,name from exam_result; 
//必须两列都有同时重复的才可以

在这里插入图片描述

f)排序 order by

  • 默认升序排列 (也可以加asc升序)
select name,math from exam_result order by math;

在这里插入图片描述

  • 显式加上desc,降序
select name,math from exam_result order by math desc;

在这里插入图片描述

  • 排序也可以指定多个列排序
    多列排序到时候,是在第一列区分不出大小的时候,再按照第二列排。
select * from exam_result order by math desc;
select * from exam_result order by math desc,chinese desc;

在这里插入图片描述

g)条件查询 where

>、<、>=、<=、!=、= 、<=>(判断空is null)、between、and、or、in、like
insert into exam_result values(8,'flom',null,null,null);
select * from exam_result;
select name,english from exam_result where english < 60;
  • 使用like进行模糊查找(只要有一部分相同的就可以)
select name from exam_result where name like 't%';
  1. 通配符%
    % 是一个通配符,可以用来代替任意多个字符

t% 找出以t开头的字符串 ,如: t、test、taaaa
%t 找出以t结尾的字符串 ,如:cat、ttt、aaaat、t
%t% 找出包含t的字符串, 包含t即可

  1. 通配符_
    除%外,还有一个_,_只能代表一个字符
select name from exam_result where name like 't_';

select name from exam_result where name like 't__';

select name,chinese from exam_result where chinese like '8%';

h)分页查询 limit

select * from exam_result limit 3;
select * from exam_result limit 3 offset 0;//从第0条开始,默认也是
select * from exam_result limit 3 offset 3;//(这个better自己感觉)
select * from exam_result limit 6,3;	//从第六行开始找三个

例:找出成绩前三的同学。Desc降序

select name,chinese +math+English as total from exam_result order by total desc limit 3;找出成绩前三的同学。Desc降序

3 修改 (Update)

语法:

update[表名] set[列名]=[],[列名]=[]where[筛选条件]limit[前N条数据]

例:给总成绩最低的三名同学数学成绩加上30分:

update exam_result set math = math +30 order by chinese+math+English limit 3;

4 删除(Delete)

语法:

delete from  table_name [where ...] [order by ...] [limit ...]

--简单来说:
delete from [表名] where [筛选条件];

例如:

--删除整张表的信息,表结构还在
delete from student:
--删除学号为20181107的学生信息
delete from student where school_id = 20181107;

需要注意的是:
delete语句是以为单位删除的。
要想单独删除某一行,需要使用update把这个列的数据设为空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值