【MySQL】MySQL数据库关于数据表的增删查改

新增

在向数据表新增数据之前,要首先选中数据库.

单行插入

insert into 表名 values (,...);

image-20220307185506393

多行插入

insert into 表名 values (,...),(,...)...;

image-20220307193157483

建议,如果插入的数据很多的话,使用多行插入的方法.

查询

全列查询

select * from 表名;

image-20220307193138396

通常情况下不建议使用 * 进行全列查询

  1. 查询的列越多,意味着需要传输的数据量越大;

  2. 可能会影响到索引的使用

*表示为通配符,表示一个表中更多所有列.

这里查找的结果是一个"临时表",而创建的表的数据全部在硬盘上.而这里的临时表不是在硬盘上,而是在内存中,随着数据进行输出后,数据也被释放了,

image-20220307190416382

指定列查询

select 列名,列名... from 表名;

image-20220307193310109

在查询的时候,会显示的告诉数据库要查哪些列,数据库会有针对性性的进行返回数据.

相比较全列查询,指定列查询要高效的多.

同样的,这里显示的也是一个临时表,不会对数据库中的原始数据产生任何影响.

指定查询字段为表达式

例如:这里查询姓名和对应的总成绩,sql语句应该这样写:

image-20220307193359745

临时表的结果的数据类型不一定和原始表的数据类型完全一致,临时表的类型会自动的适应,保证结果的正确.

上述操作,都是针对一个或者多个列进行运算操作,行与行之间互不影响.

查询字段指定别名

上一个查询过程中,最后的结果的列名是chinese+math+english,看起来格外不舒服,这时候就可以使用指定别名的方法:

select column [AS] 别名 from 表名;

image-20220307193426303

通过制定别名的方法,可以避免得到的临时表,名字乱的问题.,同时as可以省略.

去重distinct

针对查询的结果,将重复的记录去掉.

image-20220307193924297

从执行结果可以看到,加了distinct的sql语句,最后输出的结果中,只剩下了一个98.

如果针对多列进行去重,那么就得这多个列同时相同才可以去重.

image-20220307194330028

排序

针对查询结果(临时表)进行排序

select 列名... from 表名 order by 列名 asc/desc;

asc :升序 排序默认升序

desc:降序

针对数学成绩进行升序排序

image-20220307194653479

向数据库查询结果,如果不去指定排序,此时查询结果的顺序是不可预期的.

针对数学成绩进行降序排序

image-20220307195336053

如果数据库中有带NULL值的,就会被认为是最小的.升序排在最前面,降序排在最后面

image-20220307195829659

排序也可以根据别名进行排序

image-20220307195930477

条件查询 :where

运算符说,明
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,NULL不安全,例如NULL=NULL的结果就是NULL
<=>等于,NULL安全,例如NULL<=>NULL的结果是true
!=,<>不等于
between a0 and a1范围匹配,[a0,a1],如果a0 <= value <=a1,返回true
in(option,…)如果option中的任意一个,返回true
is null是null
is not null不是null
like模糊匹配,%代表任意多个(包括0个);_代表任意一个字符

逻辑运算符:

运算符说明
and多个条件必须都为true,结果才是true
or任意一个条件为true,结果为true
not条件为true,结果为false

  1. WHERE条件可以使用表达式,但不能使用别名。

  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

基本查询

查询英语不及格的同学及英语成绩 ( < 60 )

image-20220307201434410

查询语文成绩好于英语成绩的同学

image-20220307201601780

查询总分在 200 分以下的同学

image-20220307201818741

AND与OR

查询语文成绩大于80分,且英语成绩大于80分的同学

image-20220307202045352

查询语文成绩大于80分,或英语成绩大于80分的同学

image-20220307202144484

and和or的优先级

and的优先级高于or,所以如果需要先执行or的时候,需要加括号.

范围查询

  • between…and…

查询语文成绩在 [80, 90] 分的同学及语文成绩

image-20220307202446080

也可以使用and实现

image-20220307202601644

  • in

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

image-20220307202715571

使用or实现

image-20220307202839391

模糊查询

% 匹配任意多个(包括 0 个)字符

image-20220307202952262

_ 匹配严格的一个任意字符

image-20220307203102050

NULL 的查询:IS [NOT] NULL

image-20220307203450859

分页查询limit

起始下标为 0

分页查询第一页,limit 3表示只取前三个。

image-20220307204055648

如果要取4-6。

image-20220307204317425

查找总成绩前三名的学生姓名

image-20220307204706552

修改

UPDATE 表名 SET column = expr [, column = expr ...]
 [WHERE ...] [ORDER BY ...] [LIMIT ...]

将孙悟空同学的数学成绩变更为 80 分

image-20220307205026401

将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

image-20220307205224124

删除

DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除孙悟空同学的考试成绩

image-20220307205420654

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值