首页 > 数据库 >MySQL 的增删改查

MySQL 的增删改查

时间:2024-10-01 16:34:06浏览次数:6  
标签:exam chinese 改查 查询 result MySQL 增删 select name

MySQL 的增删改查

1. CRUD

  • 注释:在SQL中可以使用“--空格+描述”来表示注释说明
  • CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。
create table student(id int,name varchar(20));

1.1 新增

语法:

insert [into] table_name [column] values(values_list);

这里 into 可加可不加

column 是表中属性 这里后面会说

values_list 这里是 按照表属性的顺序来添加数据

1.1.1 单行添加

insert into student values(1,"张三");

这里可以用中文 是因为 在创建数据表的时候用了 utf8;

这的 字符串 可以用 单引号 也可用双引号

1.1.2 指定列插入

insert into student (id) values (2);

这里的意思是 添加一个 id为 2的数据 其余为默认值 null

1.1.3 多行插入

insert into student values(3,"李四"),(4,"王五");

这里有一个要注意的点

多行插入的效率比 单行插入要高

datatime 类型如何填入?

可以用一个固定的字符串来表示日期

insert into student values(1,'张三','2000-01-01 12:00:00');

表示现在的时间可以直接用 函数 now();

insert into student values(2,'李四',now());

1.2 查询

select 条件查询的执行顺序

  1. 遍历表中每个记录
  2. 把当前值带入条件,根据条件进行筛选
  3. 如果合格记录条件成立,就要保留,进行列上的表达式计算

1.2.1 全列查询

语法:select*from + 要查询的表

select*from exam_result;

把表中所有的行和列 全部展示出来

*表示通配符 表示所有列

危险操作:

  1. 读取硬盘,把硬盘的 IO 跑慢了, 此时程序的其他部分像访问就 非常慢
  2. 操作网络,也可能把网卡跑满,此时其他客户端想通过网络访问服务器 也非常慢

1.2.2 指定列查询

 select id,name,birthday from exam_result;

1.2.3 查询字段为表达式

select name,english-10 from exam_result;

注意 这个并不会改变我们的原始数据 只是在最终响应里做了计算

进行查询的时候,是把服务器这里的数据提取迟来,返回客户端,并且以 临时表的形式进行展示

所以 这里只是修改了 临时表

可以计算每个同学的总成绩

select name,chinese+english+math from exam_result;

查询时可以进行简单的统计操作

1.2.4 查询的时候 指定别名(给表也可以)

select 表达式 as 别名 from 表名;

1.2.5 去重

select distinct 列名 from 表名;

效率很低

1.2.6 排序

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

asc 为升序

desc 为降序

默认 asc

这里 前面的列名 是 返回临时表中展现的 后面的 列名 是 依靠这个列来排序的意思

  1. 没有 order by 字句的查询 ,返回的顺序是未定义,永远不要依赖这个数据
  2. null 数据排序 视为比任何值小,升序时出现在最上面
  3. null 跟 任何数 相加 还是 null

加入 上面的别名 (注意顺序)

select name,chinese+math+english as total from exam_result order by total desc;

对多个字段进行排序 这里的意思是这样的

优先数学降序 然后如果数学成绩相同 则看英语成绩升序排序

select name,chinese,english,math from exam_result order by math desc,english, chinese desc;

1.2.7 条件查询 where

比较运算符:

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

逻辑运算符

运算符 说明
and 多个条件必须都为 TRUE(1),结果才是 TRUE(1)
or 任意一个条件为 TRUE(1), 结果为 TRUE(1)
not 条件为 TRUE(1),结果为 FALSE(0)

这里注意

  1. null 默认为 false
  2. where 条件可以使用表达式,但不能用别名
  3. and的优先级高于or 这边不建议记 如果需要优先进行可以直接用 ();
  • 基本查询

    select name,chinese from exam_result where chinese > 80;
    select name,chinese+math+english 总分 from exam_result where chinese+math+english < 200;
    
  • and 与 or

    select * from exam_result where chinese > 80 and english < 70;
    select * from exam_result where chinese > 80 or english < 70;
    
  • between ... and ...

    select name,english,chinese from exam_result where chinese between 80 and 90;
    
  • in

    select name,chinese from exam_result where chinese in (98,87,82,88);
    
  • 模糊查询like

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

    select name from exam_result where name like '孙%';// 孙悟空 孙权
    

    孙% 查询开头为 孙的

    %孙 查询 结尾为孙的

    %孙% 查询包含孙的

    通配符 _ 匹配一个字符

    select name from exam_result where name like '孙_';// 孙权
    select name from exam_result where name like '孙__';// 孙悟空
    
  • Null 的查询 这里要注意

    select * from exam_result where chinese = null;
    

    我们使用 = 查询null 即使有 null 也会显示 没有

    因为 在 mySQL 中 null 默认为 false

    当他 查询到 null 会被认为是 空 然后 空又默认为 false 所以咧 无法查询到结果

    这里就要使用:

     select * from exam_result where chinese <=> null;//可以看到多个列
     select * from exam_result where chinese is null;//只能看到一个列
     select * from exam_result where chinese <=> english;
    

1.2.8 分页查询 limit

语法:

select * from exam_result limit 3;
select * from exam_result limit 3 offset 3;

查询 开头三行数据

offset 的意思是 偏移量

标签:exam,chinese,改查,查询,result,MySQL,增删,select,name
From: https://www.cnblogs.com/ljy2003/p/18442953

相关文章

  • MySQL
    MySQL1.前情提要MySQL是一个数据库软件MySQL是一个“客户端-服务器”结构的软件客户端(Client):主动发起请求的一方服务器(Server):被动接受请求的一方他们是通过网络进行通信的客户端给服务器发起的数据称为请求(Request)服务器给客户端返回的数据称为响应(Respons......
  • 【MySQL】MySQL 数据库主从复制详解
    目录1.基本概念1.1主从架构1.2复制类型2.工作原理2.1复制过程2.2主要组件3.配置步骤3.1准备工作3.2在主服务器上配置3.3在从服务器上配置4.监控和维护4.1监控复制状态4.2处理复制延迟4.3故障恢复5.备份策略5.1逻辑备份与物理备份5.2增量备份6.使......
  • MySQL数据库用户权限控制的实现方法
            控制用户权限在任何数据库管理系统中都是一个重要的需求。合理的权限管理能够保障数据的安全性和完整性。下面我们将讨论如何使用数据库来控制用户的权限,尤其是对于MySQL数据库的具体实现。1.概述权限控制通常涉及到以下几个方面:用户角色:定义不同的用户角......
  • Java项目实战II基于Java+Spring Boot+MySQL的大创管理系统(源码+数据库+文档)
    目录一、前言二、技术介绍三、系统实现四、文档参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者一、前言在当前创新创业氛围浓厚的背景下,大学生创新创业项目(简称“大创”)如雨后春笋般涌现,为校园内外注入了无限活力。然而,项目......
  • Java项目实战II基于Java+Spring Boot+MySQL的免税商品优选购物商城(源码+数据库+文档)
    目录一、前言二、技术介绍三、系统实现四、文档参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者一、前言随着全球贸易的日益繁荣和消费者需求的多样化,免税商品购物已成为众多旅行者和消费者的热门选择。为了提供一个更加便捷......
  • 【编程小白必看】MySQL 聚合函数操作秘籍一文全掌握
    【编程小白必看】MySQL聚合函数操作秘籍......
  • MySql学习笔记:什么是数据库?
    数据库的概念:         数据库(Database),简而言之可视为数字化的文件柜,是一个长期储存在计算机内有组织的、统一管理的数据集合,用于存储和管理大量相关信息。        数据库是一个按数据的结构来存储和管理数据的计算机系统,也就是说,数据库通常有两方面含义:......
  • 【深入浅出MySQL】「性能调优」高性能查询优化MySQL的SQL语句编写
    总体优化大纲(1)优化查询性能:通过索引降低全表扫描频率提升数据库查询性能的途径时,一个关键的战略就是降低全表扫描的频次。因为全表扫描往往会消耗显著的计算资源,从而导致查询过程变得迟缓且效率低下,为了有效地提高查询的响应速度和整体性能。优化方向那些在where筛选条件和orderby......
  • 搞懂MySQL 子查询,事务,权限并附加MySQL实战
    摘要:    本文主要用来讲解和介绍MySQL数据库中有关子查询,事务,权限等部分的内容,并附加了场景模拟和实战练习。用于快速掌握和理解子查询,事务,权限这些部分的语法和知识点。1.子查询子查询:一个sql语句嵌套了另一个或者多个查询语句。1.1子查询的四种结果标量子查询:返......
  • MySQL之多表关系篇与多表查询篇
    学习前思路拆解:1.理解数据为什么要拆表存储2.明白多表有几种数据关系3.掌握表关系限制的语法并实现4.掌握多表查询语法和练习数据库多表关系1.为什么要拆表存储数据?因为将数据全部存储在一个表中,容易出现数据冗余。例子:学生表和学生成绩表不拆表存储:拆表存储: ......