MySQL:CRUD

MySQL表的增删改查(操作的是表中的记录)

CRUD(增删改查)

  • C-Create新增
  • R-Retrieve检查,查询
  • U-Update更新
  • D-Delete删除

新增(Create)

语法:

单行数据+全列插入 

insert into 表名[字段一,字段二] values(值一,值二);

 通过看表的结果,我们可以看出内容已经写好

注:列和值的数据类型一定要匹配,如果不匹配,则无法写入数据表中

简写方式(可以将表后的字段进行省略)

指定列插入

只写一个name的值,那么其他的值则会默认为null

多行插入

 show databases;create database u;use u;create table student(id bigint,name varchar(50),math int,english int,chinese int);insert into  student(id,name,math,english,chinese)  values(1,'zhangsan',88,86,74);insert into  student(id,name,math,english,chinese)  values(2,'lisi',85,76,94);insert into  student(id,name,math,english,chinese)  values(3,'xiaoliu',65,96,84);
insert into  student  values(4,'xiaohe',95,76,89);insert into student(name) values('daliu');insert into student(id,name) values(5,'ni'),(6,'wo'),(7,'hao');

查询(Retrieve)

全列查询

select * from 表名

注:查询表中所有的元素是一个很危险的事情,有些数据库的表很大,如果要一次性全部查询,会导致服务器崩塌,所以在查询的时候要加许多的限制条件。

指定列查询

select 字段 +from 表名

查询的结果是一个表达式

1.在字段名后加一个10后,会在临时创建的表上添加一个全为10的新列。

2.在某一列成绩加10,会使临时创建的表整个列的成绩都加10

3.将三个成绩的相加可以求成绩之和

表达式的别名

1.select 字段名 as +别名+from 表名

2.select 字段名  +'别名'+from 表名

3.select 字段名  别名  from 表名

注:最简单的方法是select 字段名  别名  from 表名,最标准的方法是select 字段名 as  '别名'  from 表名

如果在别名中有空格等符号必须用  ' 别名 '的形式。

否则会报错

注:所以查询出来的表都是一个临时表,返回给我们,执行完就自动删除了。

 show databases;create database u;use u;create table student(id bigint,name varchar(50),math int,english int,chinese int);insert into  student(id,name,math,english,chinese)  values(1,'zhangsan',88,86,74);insert into  student(id,name,math,english,chinese)  values(2,'lisi',85,76,94);insert into  student(id,name,math,english,chinese)  values(3,'xiaoliu',65,96,84);
insert into  student  values(4,'xiaohe',95,76,89);insert into student(name) values('daliu');insert into student(id,name) values(5,'ni'),(6,'wo'),(7,'hao');select * from student;select name from student;select id,name,10 from student;select id,name,math+10 from student;select id,name,math+chinese+english from student;select id,name,math+chinese+english as 总分 from student;select id,name,math+chinese+english as '总分' from student;select id,name,math+chinese+english  '总分' from student;select id,name,math+chinese+english  总分 from student;select id,name,math+chinese+english  '总  分' from student;select id 编号,name 姓名,math 数学 ,chinese 语文,english 英语,math+chinese+english  总分 from student;

去重(distinct)

select 列名 from 表名

单独去重某一个列

去重好几个列

注:去重时所有的列都相同才会被认为是可以去重的

   select * from student;insert into  student  values(8,'xiaohai',88,76,89);select * from student;select distinct * from student;select distinct math from student;select math from student;select distinct math,chinese,english from student;insert into  student  values(9,'zhu',88,76,89);select distinct math,chinese,english from student;

排序

select 列名 from 表名 order by 列名[ASC/DESC ]

ASC(降序)

DESC(升序)

注:如果既不写ASC或者DESC的话,则会默认为ASC

注:NuLL数据排序,视为比任何的数据都小,包括负数,比负数都小,升序出现在最上面,降序出现在最下面。

可以使用表达式及别名进行排序

对多个字段进行排序的时候,排序的顺序与出现的先后顺序有关

先对数学按逆序排序,在数学排序的基础上对语文按顺序排序,再对英语按逆序进行排序。

注:MySQL中的null比较特殊

  • 无论和什么值进行运算,返回的值都是null。
  • null始值被判定为false。
  • null的值不是我们学习的其他语言中的0,在MySQL就是null。
  select chinese from student order by chinese asc;select math from student order by math desc;select math from student order by math ;select id 编号,name 姓名,math+chinese+english total from student order by total desc;select id 编号,name 姓名,math,chinese,english total from student order by math desc,chinese asc,english desc;

条件查询(where) 

可以通过条件查询,过滤掉一些不符合条件的记录,将符合条件的记录返回给用户

比较运算符

运算符

说明

>, >=, <, <=
大于,大于等于,小于,小于等于
=
等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>
不等于
BETWEEN a0ANDa1
范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN (option, ...)
如果是 option 中的任意一个,返回 TRUE(1)
IS NULL
是NULL
IS NOT NULL
不是NULL
LIKE
模糊匹配。 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字符 

 注:

模糊查询(LIKE):

字符后加 % 意思为只要是开头为xiao的,无论后面是什么,有多少个都符合条件。

 

字符后加 _ 意思为有几个 _ ,则在xiao后就有多少个字符。

small后有两个字符

small后有三个字符 

IS NULL

 

IS NOT NULL

 

逻辑运算符

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

注:

AND类似于Java中的 && ,OR类似于Java中的 || ,NOT类似于Java中的 !  

使用where的语法:select * from 表名 where 列名/表达式  运算符  条件

练习:

1.查询英语成绩<80分的同学及英语成绩

修改后:

select name,english from student where english<80;

注:自动过滤掉了值为null的列

2.查询语文成绩好于英语成绩的同学
 select name,english,chinese from student where chinese>english;

注 :在一行数据的不同列的同种数据类型是可以进行比较的,如果是不同行的数据,就算是数据类型相同也是无法比较数据的大小

3.查询总分在 260 分以下的同学

 select name,english+chinese+math total from student where (chinese+math+english)<260;

注:where中的语句不能用别名去当过滤的条件,使用了表达式就不能使用别名。

错误的示范:

为什么会出现这种情况呢?

出现这种情况跟MySQL中的SQL语句的执行顺序有关

  1. 如果在数据中查询某些条件,首先要确定表,执行from
  2. 在查询的过程中要根据查询的条件把符合条件的数据取出来,执行where子句
  3. 执行select后面指定的列,要把这些列加入到最终的结果中
  4. 排序操作,根据order by 将指定的列按排序规则进行最后的排序

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

 select name,chinese,english from student where chinese>80 and english>80;

 

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

 select name,chinese,english from student where chinese>80 or english>80;

注:

优先级:NOT>AND>OR,我们不需要记,只需要在使用的时候加括号。

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

select name,chinese from student where chinese between 80 and 90;
select name,chinese from student where chinese<=90 and chinese>=80;

也可以使用AND

 

 

7.查询语文成绩是74 或者 84分的同学及数学成绩 

mysql> select name,chinese from student where chinese in(84,74);
select name,chinese from student where chinese=74 or chinese =84;

也可以使用OR 

 

 分页查询(Limit

分页查询可以有效的控制一次性查询出来的条数,可以减小数据库服务器的压力,是一个非常友好的行为。

1.从 0 开始,筛选 n 条结果

select ... from   表名  [where ...]   [order  by ...]  limit n;

 n表示一次性查询出的条数

2.从 s 开始,筛选 n 条结果

select... from   表名   [where...]  [order  by...] limit s, n;
从0开始,限制两条
从2开始,限制两条

3.从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用

select... from   表名  [where...]  [order  by...] limit  n  offset  s;

 从0开始,限制两条

从2开始,限制两条 

练习:

按 id 进行分页,每页条记录,分别显示第 123

按顺序

select * from student where math order by id asc limit 2 offset 0;
select * from student where math order by id asc limit 2 offset 2;
select * from student where math order by id asc limit 2 offset 4;

按逆序

select * from student where math order by id desc limit 2 offset 0;
select * from student where math order by id desc limit 2 offset 2;
select * from student where math order by id desc limit 2 offset 4;

 

注:因为id为5,6,7都是NULL,所以默认不会读入。 

 修改(update)

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

 

练习

1.将xiaohe同学的数学成绩变更为 80 分

update student set math='80' where name='xiaohe' ;

 注:

2.将xiaoliu同学的数学成绩变更为 60 分,语文成绩变更为 70 分

update  表名  set  列=?,列=? where  限制的条件

update student set math=60 and chinese=70 where name='xiaoliu' ;

 

 

3.将总成绩倒数前三的 3 位同学的数学成绩加上3分 

原本成绩

select * from student;

进行修改

update student set math=math+3 where math order by math+english+chinese desc limit 3;

 修改后成绩

select * from student;

4.将所有同学的数学成绩更新为原来的 二分之一倍

原来的成绩

select * from student;

进行修改

update student set math =math*2 where math;

修改后的成绩

select * from student;

 

删除(delete)

delete   from   表名 [where ...] [order  by ...] [limit ...]

练习

1.将名字叫daliu的人删除
删除前
select * from student;
进行删除
delete from student where name='daliu';

删除后
select * from student;

 

2.将数学成绩倒数三名的人删除

删除前

select * from student order by math asc;

 

进行删除

 delete from student order by math asc limit 3;

删除后

select * from student;

 

注:在删除时如果不加where条件会怎么样?

会导致整张表全部被删除,所以一定要慎重!!!!

希望能对大家有所帮助!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7 node升级到node18

使用jenkins发布vue3项目提示node18安装失败 错误日志&#xff1a; /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node18/bin/node: /lib64/libm.so.6: version GLIBC_2.27 not found (required by /var/lib/jenkins/tools/jenkins.plugins.node…

万字长文解读深度学习——ViT、ViLT、DiT

文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;ViT1. ViT的基本概念2. ViT的结构与工作流程1. 图像分块&#xff08;Image Patch Tokenization&#xff09;2. 位置编码&#xff08;Positional Encoding&#xff09;3. Transformer 编码器&#xff08;Transformer En…

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件&#xff1a;若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类&#xff0c;对Excel大…

前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)

文章目录 1. npm (Node Package Manager)2. Yarn (Yarn Package Manager)3. pnpm4. Bower5. Parcel总结 前端开发中常用的包管理器主要有以下几个&#xff1a; 1. npm (Node Package Manager) 简介&#xff1a; npm 是 Node.js 的默认包管理器&#xff0c;也是最广泛使用的包…

Linux(CentOS)安装 Nginx

CentOS版本&#xff1a;CentOS 7 Nginx版本&#xff1a;1.24.0 两种安装方式&#xff1a; 一、通过 yum 安装&#xff0c;最简单&#xff0c;一键安装&#xff0c;全程无忧。 二、通过编译源码包安装&#xff0c;需具备配置相关操作。 最后附&#xff1a;设置 Nginx 服务开…

深度学习项目启动(笔记用)

深度学习项目启动 项目配置虚拟环境 项目配置虚拟环境

万字长文解读深度学习——卷积神经网络CNN

推荐阅读&#xff1a; 卷积神经网络&#xff08;CNN&#xff09;详细介绍及其原理详解 CNN笔记&#xff1a;通俗理解卷积神经网络 文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;主要组件输入层卷积层 (Convolutional Layer)批归一化层&#xff08;Batch Normalizat…

VBA10-处理Excel的动态数据区域

一、end获取数据边界 1、基本语法 1-1、示例&#xff1a; 2、配合row和column使用 2-1、示例1 2-2、示例2 此时&#xff0c;不管这个有数值的区域&#xff0c;怎么增加边界&#xff0c;对应的统计数据也会跟着变的&#xff01; 二、end的缺陷 若是数据区域不连贯&#xff0c;则…

Spring boot + Vue2小项目基本模板

Spring boot Vue2小项目基本模板 基本介绍基本环境安装项目搭建最终效果展示 基本介绍 项目来源哔哩哔哩的青戈&#xff0c;跟着学习搭建自己的简单vue小项目&#xff1b;看别人的项目总觉得看不懂&#xff0c;需要慢慢打磨 这里目前只简单的搭建了菜单导航和表格页面&#x…

“箱体分析”,箱体支撑压力位,分析市场方向 通达信主图 源码

使用技巧 该指标用于在通达信的K线图上绘制箱体分析图形&#xff0c;主要通过支撑位、波浪顶、箱体上下限等多个技术指标来识别股票的支撑和压力区域。 支撑位分析&#xff1a;可以帮助用户识别股价的支撑区域&#xff0c;并判断是否会反弹。 箱体震荡区间识别&#xff1a;通…

PICO+Unity MR视频透视

官方链接&#xff1a;视频透视 | PICO 开发者平台 在 PXR_Manager (Script) 面板上&#xff0c;勾选 Video Seethrough 选框 2.将 Clear Flags 设置为 Solid Color。颜色设置为黑色&#xff0c;Alpha 通道设置为完全透明 3.在代码中开启透视 using System.Collections; usin…

大学生福音!用gpt-4o和o1大模型拿捏大学化学作业

文章目录 零、前言一、使用GPT操作指导作业拍照使用o1-preview大模型小结 二、感受 零、前言 昨天发了gpt-4o拿捏大学物理作业&#xff0c;群友说&#xff0c;急需要一位化学老师指导 虚竹哥是宠粉的&#xff0c;连夜请了一位博士级的化学老师~ 一、使用GPT 操作指导 ChatG…

2024-11-12 学习人工智能的Day25 scikit-learn库初见

简简单单的数据集 from sklearn.datasets import load_iris/fectch 简单的引用世界数据集和玩具数据集方式 #下面是在获取数据集后常用的值 feature feature_names DESCR target target_names filename from sklearn.datasets import load_iris import numpy as np import…

2024 年将 Postman 文档导出为 HTML 或 Markdown

2024 年将 Postman 文档导出为 HTML 或 Markdown

访问网页的全过程(知识串联)

开发岗中总是会考很多计算机网络的知识点&#xff0c;但如果让面试官只靠一道题&#xff0c;便涵盖最多的计网知识点&#xff0c;那可能就是 网页浏览的全过程 了。本篇文章将带大家从头到尾过一遍这道被考烂的面试题&#xff0c;必会&#xff01;&#xff01;&#xff01; 总…

服务器硬件介绍

计算机介绍 现在的人们几乎无时无刻都在使用电脑&#xff01;而且已经离不开电脑了。像桌上的台式电脑(桌机)、笔记本电脑(笔电)、平板电脑、智能手机等等&#xff0c;这些东西都算是电脑。 台式机电脑介绍 计算机又被称为电脑。台式机电脑主要分为主机和显示器两个部分&…

04-HTTP协议、请求报文、响应报文

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

基于Multisim人数出入加减计数统计电路(含仿真和报告)

【全套资料.zip】人数出入加减计数统计电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 设计两路光控电路&#xff0c;一路放置在入口&#xff0c;另一路设置在出口&#xff0c;当有人…

车机安装第三方软件实现打开软件全屏教程

简介 越来越多的车友实现安装第三方软件了&#xff0c;但是有的车机的状态栏或者导航栏会遮挡安装的第三方软件。这样的话&#xff0c;第三方软件就会显示不全&#xff0c;体验感非常不好。所以&#xff0c;下面我教一下大家如何使用东君应用管家来实现打开第三方软件全屏。 全…

CLion配置QT开发环境

一、将qmake工程转为cmake工程&#xff08;方法一&#xff1a;用工具转换并做适当修改&#xff09; 1、工具链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1grW2QY3sW8X2JaHWM_ePPw 提取码&#xff1a;7at4 工具源码:https://github.com/milahu/qmake2cmake 2、执行…