MySQL 从零开始:04 增删改查

文章目录

  • 1、准备工作
  • 2、insert 增加数据
    • 2.1 添加所有列的数据
    • 2.2 添加部分列
    • 2.3 一次插入多条数据
  • 3、delete 删除记录
  • 4、update 更新记录
  • 5、select 查询记录
    • 5.1 查询所有行所有列
    • 5.2 查询指定行的所有列
    • 5.3 查询所有行的指定列
    • 5.4 查询指定行的指定列

在上一小节中介绍了 MySQL 数据库的一些最最最基础的入门级也是必须要掌握的10条语句,本节将继续深入学习 MySQL 的增删改查语句。本节讲的增删改查是相对于 而言的。

1、准备工作

想要对表进行增删改查,首先应该有张表,假设我们要统计大学同学工作之后的工作情况,建立了如下表格:

姓名性别公司工资

准备工作:

mysql> create database salarydb;
Query OK, 1 row affected (0.01 sec)mysql> use salarydb;
Database changed
mysql> create table class(-> id int primary key auto_increment,-> name varchar(10) not null default '',-> gender char(1) not null default '',-> company varchar(20) not null default '',-> salary decimal(6,2) not null default 0.00-> )engine myisam charset utf8;
Query OK, 0 rows affected, 1 warning (0.04 sec)mysql> show tables;
+--------------------+
| Tables_in_salarydb |
+--------------------+
| class              |
+--------------------+
1 row in set (0.00 sec)mysql> desc class;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| name    | varchar(10)  | NO   |     |         |                |
| gender  | char(1)      | NO   |     |         |                |
| company | varchar(20)  | NO   |     |         |                |
| salary  | decimal(6,2) | NO   |     | 0.00    |                |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

执行结果:

01.准备工作

此处建立了一个表,但是不要困惑于建表语句里面的数据类型等,后续会详细讲解。

表创建完成之后要设置一下 数据库的字符集,因为我们要使用到中文:

set names gbk;

02.设置字符集

2、insert 增加数据

MySQL 通过 INSERT INTO SQL语句来插入数据,其语法为:

# 插入一行
insert into tablename (field1, field2, ..., fieldN)values(value1, value2, ..., valueN);# 插入多行
insert into tablename (field1, field2, ..., fieldN)values(value1, value2, ..., valueN),(value1, value2, ..., valueN),...(value1, value2, ..., valueN);

如果数据是字符型,必须使用单引号或者双引号,如:“张三”。

2.1 添加所有列的数据

下面向该表中添加几条数据:

mysql> insert into class (id,name,gender,company,salary)-> values (1,'张三','男','网易',9367.84);

一定要记住每个数据段或者字段后面加个空格,比如上面指令第一行最后要加上一个空格。

03.插入一条数据

另外如果我们要添加所有列的数据可以使用如下语法:

insert into tablename VALUES(value1, value2, ..., valueN);

例如:

mysql> insert into class-> values (2,'李四','男','百度',8987.63);

执行结果:

04.插入数据省略列名

2.2 添加部分列

有时候我们不需要添加所有列的数据,比如 司徒小翠 在一个保密机构工作,其公司名称和薪水都不能透露,我们可以使用如下语句插入数据:

mysql> insert into class (name,gender)-> values ('司徒小翠','女');

执行结果:

05.插入数据部分列

本条记录省略了 id、company和salary 字段,因为id 设置为了自增,所以为3,company 与 salary 都设置了默认值,由于插入时没有指定值,所以就使用了默认值。

2.3 一次插入多条数据

为了省事,我们可以一次性插入多条数据:

mysql> insert into class (name,gender,company,salary)-> values-> ('石中玉','男','腾讯',7878.32),-> ('石中坚','男','腾讯',8234.17);

执行结果:

06.插入数据多条记录

3、delete 删除记录

要从表中删除数据,请使用MySQL delete语句。下面说明了delete语句的语法:

delete from table_name
where condition;

此处的删除是指删除表中的一条记录,也就是一行数据。

现在把 张三 的记录删掉,为什么呢?因为他的工资最高。

mysql> delete from class-> where salary>9000;

此语句以薪水作为条件,下面以 姓名 作为筛选条件删除 李四 的记录:

mysql> delete from class-> where name='李四';

执行结果:

07.删除数据

当然,where 后面的条件可以叠加,例如:

mysql> delete from class-> where salary>9000 and gender='男';

如果你看了上一节的教程,应该记住了这条语句:

delete * from tablename;

它实现的功能是删除表中的所有记录。

4、update 更新记录

我们使用update语句来更新表中的现有数据。也可以使用update语句来更改表中单个行,一组行或所有行的列值,其语法如下:

update table_name set column_name1 = expr1,column_name2 = expr2,...
wherecondition;

在上面update语句中:

  • 首先,在update关键字后面指定要更新数据的表名。
  • 其次,set子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。
  • 第三,使用 where 子句中的条件指定要更新的行。where 子句是可选的。 如果省略where子句,则update语句将更新表中的所有行。

石中玉 在腾讯工作了一年后跳槽到了 阿里巴巴,其工资也涨到了 9999.99,使用以下语句更新该条记录:

mysql> update class set-> company='阿里',-> salary=9999.99-> where name='石中玉';

执行结果:

08.更新数据

注:一定要填写 where 后面的 condition,否则整个表的该列都会被修改。

5、select 查询记录

使用select语句从表或视图获取数据。表由行和列组成,我们往往只想看到子集行,列的子集或两者的组合。select语句的结果称为结果集,它是行列表,每行由相同数量的列组成。

select语句控制要查看哪些行和列,其基本语法为:

select column_name1, column_name2, ...
fromtablename
whereconditions

5.1 查询所有行所有列

delete * from tablename; 中的 ***** 一样,select 也可以和其结合:

mysql> select * from class;

执行结果:

09.查询所有行所有列

5.2 查询指定行的所有列

mysql> select * from class-> where id>3;

执行结果:

10.查询指定行的所有列

5.3 查询所有行的指定列

mysql> select id,name,salary from class;

执行结果:

11.查询所有行的指定列

5.4 查询指定行的指定列

mysql> select id,name,salary from class-> where id>3;

执行结果:

12.查询指定行的指定列

至此数据库的增删改查的基本语法都已介绍了,当然增删改查还有高级的用法,以后有机会讲到。

最后再次强调:一定要记住每个数据段或者字段后面加个空格,尤其是多行语句时每行末尾不要丢掉空格。

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

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

相关文章

太阳能4G无线灌溉控制器,助力智慧灌溉,节水增产—蜂窝物联网

传统灌溉费时费力,不仅缺乏灌溉程度的把控,而且带来一系列的水资源浪费和土地盐碱化问题。福建蜂窝物联网科技自主研发的太阳能4G无线灌溉控制器应用了物联网技术和移动互联网技术,能实现对灌溉设备的统一管理和远程控制,结合土壤…

FridaHook(二)——Native层函数

By ruanruan,2022.04.19 0x00 前言 下面是学习用Frida hook Native层的导出函数和未导出函数的记录。 demo下载链接:https://pan.baidu.com/s/1ZCIeJXzeTpQ8uJ9Ew5nnGQ 提取码:z94i 0x01 Hook导出函数 1、apk相关信息 关键代码&#xff…

GPT-4与DALL·E 3:跨界融合,开启绘画与文本的新纪元

在人工智能的发展浪潮中,MidTool(https://www.aimidtool.com/)的GPT-4与DALLE 3的集成代表了一个跨越式的进步。这一集成不仅仅是技术的结合,更是艺术与文字的完美融合,它为创意产业带来了革命性的变革。本文将探讨GPT…

HCIA-Datacom题库(自己整理分类的)_09_Telent协议【13道题】

一、单选 1.某公司网络管理员希望能够远程管理分支机构的网络设备,则下面哪个协议会被用到? RSTP CIDR Telnet VLSM 2.以下哪种远程登录方式最安全? Telnet Stelnet v100 Stelnet v2 Stelnet v1 解析: Telnet 明文传输…

C++模板——(4)C++泛型编程与标准模板库简介

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 勤奋,机会,乐观…

Java环境准备:JDK与IDEA

新手小白学Java–环境准备篇 文章目录 新手小白学Java--环境准备篇第1节 JDK的下载与安装第2节 IDEA的下载与安装第3节 使用IDEA创建第一个Java项目第4节 使用小技巧查看电脑的操作系统版本显示出文件的后缀名IDEA 修改字体大小IDEA 修改显示主题色IDEA 修改单行注释的颜色IDEA…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-4系统的可控性Controllability(LTI)线性时不变

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-4系统的可控性Controllability-LTI线性时不变

软件开发平台应用价值高吗?

我们都知道,随着行业的进步和社会的发展,低代码开发平台也拥有了非常可观的发展前景。利用软件开发平台,可以实现提质增效的办公效率,办公流程化发展也将提上日程。那么,您知道软件开发平台都拥有哪些优势特点吗&#…

ApolloCarla联合仿真基本操作

Apollo 系统架构 CANBus:对接车辆的底盘,做一些数据的收发,如油门,方向盘转角 HDMap: 给localization提供定位图层的信息给perception一些车道线、道路拓扑、红绿灯的信息(超时空感知)&#x…

geemap学习笔记045:单波段图像梯度计算

前言 求图像的梯度,一般是指在灰度图像或者彩⾊图像上的操作。数字图像是离散的点值谱,也可以叫⼆维离散函数。图像的梯度就是这个⼆维离散函数的求导。下面将详细介绍earth engine中单波段图像的梯度计算。 1 导入库并显示地图 import ee import gee…

医药公司重金请我用Ruby采集国产药品官方数据

爬虫程序是由一系列的代码组成的,通过这些代码,爬虫程序可以从网页中获取信息。今天有个医药公司想要一些药品数据,让我里一共Ruby编写一个爬虫程序,采集一些他们需要的药品数据信息,术业有专攻所以就找我这位大神过去…

MCU FT61F14x入门

目录 前言一、CMIDE的使用二、系统时钟与睡眠2.1 上电复位 (POR)与系统复位2.2 振荡器和系统时钟2.3 SLEEP睡眠模式 (POWER-DOWN)2.4 低电压检测/比较器 (LVD) 三、I/O端口与中断四、串口USART五、定时器六、ADC七、EEPROM 前言 FT61F14x是辉芒微电子的微控制器,是一…

BFC 2024寻龙之旅奇幻启程,龙运市集化身沪上摩登祈福地

2024年1月20日起,BFC外滩金融中心(下称BFC)“有龙则灵LONGTIME”奇幻秘境重磅登陆外滩,以东方传统文化为载体,打造当代都市传奇新篇。巨型金红神龙空降BFC,以波澜壮阔之势开启新春之旅。外滩枫径龙运市集迎…

uni微信小程序强制用户更新版本

强制更新的代码参考官方文档 uni.getUpdateManager() | uni-app官网 我这边的如下: //检查版本更新const updateManager uni.getUpdateManager();updateManager.onCheckForUpdate(function (res) {// 请求完新版本信息的回调console.log(res.hasUpdate, "是…

【深度学习目标检测】十三、基于深度学习的血细胞识别(python,目标检测,yolov8)

血细胞计数是医学上一种重要的检测手段,用于评估患者的健康状况,诊断疾病,以及监测治疗效果。而目标检测是一种计算机视觉技术,用于在图像中识别和定位特定的目标。在血细胞计数中,目标检测技术可以发挥重要作用。 首先…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑨

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷9 目录 需要竞赛软件包环境以及备赛资源可私信博主!!! 2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷9 模块一 …

Kubernetes/k8s的存储卷/数据卷

k8s的存储卷/数据卷 容器内的目录和宿主机的目录挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会回复到初始状态 一旦回到初始状态,所有的后天编辑的文件都会消失…

Java零基础教学文档第四篇:HTML_CSS_JavaScript(1)

今日新篇章 【CSS】 【主要内容】 CSS简介 CSS基础语法 CSS选择器 CSS常用属性 CSS元素分类 CSS定位 【学习目标】 1.CSS的简介 1.1 CSS定义与解释** CSS是Cascading Style Sheets(层叠样式表单)的简称,CSS就是一种叫做样式表&…

2024年了,Layui再战三年有问题不?

v2.9.3 2023-12-31 2023 收官。 form 优化 input 组件圆角时后缀存在方框的问题 #1467 bxjt123优化 select 搜索面板打开逻辑,以适配文字直接粘贴触发搜索的情况 #1498 Sight-wcgtable 修复非常规列设置 field 表头选项时,导出 excel 出现合计行错位的…

Ubuntu系统中指定端口防火墙状态查询与操作

浏览器访问: 如果遇到如山图所示的情况,既有可能是防火墙的问题。具体解决方案参照如下: 1.指定端口的防火墙状态查询 (1)查询命令 sudo ufw status | grep 8081/tcp #其中8081为要查询的端口号 如果端口是打开的…