MySQL基础——增删查改(基础)

这篇具有很好参考价值的文章主要介绍了MySQL基础——增删查改(基础)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.前言

2.铺垫

3.正片


1.前言

  经过前面一段时间数据结构基础的学习,现在我们终于来到了MySQL的学习。我们先简单介绍一下什么是数据库。

为了解决海量文件的存储与管理问题,专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据 库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。

数据库大体可以分为关系型数据库非关系型数据库 。

而本次我们要学习的MySQL属于是关系型数据库。

关系型数据库是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个 关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

MySQL基础——增删查改(基础)  这里我们简单了解一下他们的关系即可,没有太多要求。

当然这里我们已经默认大家配置好了MySQL的环境了,如果大家对于该部分还有别的疑问,还请自行查阅网上资料解决。(其实是我懒不想写了) 

2.铺垫 

 在正式进入我们增删查改的操作之前,我们先了解一下数据库的基本结构。

MySQL基础——增删查改(基础)

我们可以看到我们每个数据库之间是相对独立的,并且每个数据库之间又有若干个数据表。

所以我们接下来我们看到有关数据库的一些基本操作:

-- 显示当前数据库
show databases;
-- 创建数据库
create database xxx;
-- 使用
use xxx;
-- 删除数据库(危险操作)
drop database xxx;

 首先我们注意到的是“-- “这个其实就是我们MySQL中的注释的意思,别忘了--后面的空格 

 然后可能会有细心的读者注意到好像网上一些MySQL教程好像用的都是大写字母,这里给大家说明一下,在MySQL中我们大小写均可以

其次当我们需要操作某个数据库的表时,我们要先对其进行use操作。 

 之后我们看到有关的相关操作:

-- 查看当前数据库的所有表
show tables;
-- 查看表结构
desc 表名;
-- 创建表
create table 表名(
    field1 datatype,
    field2 datatype,
    field3 datatype
);
-- 删除表(危险操作)
drop table 表名;

 其中当我们创建表时格式是 类型名+数据类型,和我们以往接触的编程语言不太相同。

 既然提到了数据类型,那我们接下来看到在MySQL中常用数据类型:

INT:整型

DECIMAL(M, D):浮点数类型(更加精确)

FLOAT(M,D): 浮点数类型

VARCHAR(SIZE):字符串类型

TIMESTAMP:日期类型

其中varchar是一个可变长度字符串数组,size参数代表了最长字符长度,decimal以及float的参数M和D分别代表有效长度和小数点后最大长度

接下来我们看到表结构所代表的含义:

MySQL基础——增删查改(基础)

3.正片

前面铺垫了那么久,我们终于可以进入正片了,接下来我们看到关于表的增删查改操作。

3.1 新增 CREATE

在向表中插入数据之前我们先创建一张表

注意:如果我们创建表时变量名使用了sql中的关键字,那么我们需要用反引号`来把他引起来

-- 创建一张学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
   id INT,
   sn INT,
   name VARCHAR(20),
   qq_mail VARCHAR(20) 
);

3.1.1 单行数据 + 全列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
insert into student values (100, 10000, '唐三藏', NULL);
insert into student values (101, 10001, '孙悟空', '11111');

其格式为 insert into 表名 values(数据1,数据2,数据3,数据4) ;

3.1.2 多行数据 + 指定列插入 

-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
insert into student (id, sn, name) values
 (102, 20001, '曹孟德'),
 (103, 20002, '孙仲谋');

 其格式为 insert into 表名(变量1名字,变量2名字,变量3名字)vs

(变量1,变量2,变量3),

(变量1,变量2,变量3);

 3.2 查询 Retrieve

同样在查询前我们先创建一张表

-- 创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
 id INT,
 name VARCHAR(20),
 chinese DECIMAL(3,1),
 math DECIMAL(3,1),
 english DECIMAL(3,1)
);
-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
 (1,'唐三藏', 67, 98, 56),
 (2,'孙悟空', 87.5, 78, 77),
 (3,'猪悟能', 88, 98.5, 90),
 (4,'曹孟德', 82, 84, 67),
 (5,'刘玄德', 55.5, 85, 45),
 (6,'孙权', 70, 73, 78.5),
 (7,'宋公明', 75, 65, 30);

3.2.1 全列查询

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。
SELECT * FROM exam_result;

 顾名思义他会返回表中的全部数据,但是这个操作在面对大量数据时可能会导致服务器直接死机

注意:我们这里实际上只是从服务器返回了一张虚拟的表到客户端上,并没有对实际的服务器端上的数据进行操作,接下来的操作无特殊说明均是如此

 3.2.2 指定列查询

-- 指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam_result;

 格式为select 查询列1,查询列2,查询列3 from 表名;

3.2.3 查询字段为表达式 

-- 表达式不包含字段
SELECT id, name, 10 FROM exam_result;
-- 表达式包含一个字段
SELECT id, name, english + 10 FROM exam_result;
-- 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam_result;

我们查询的结果就是表达式的运算结果,但是要注意表达式左右两边必须是相同类型的数据类型

 MySQL基础——增删查改(基础)

 比如我们执行上面第三个表达式就会得到以下结果。

注意:

1.此时原表的数据依旧不会被改变

2.运算得出的数据会尽可能显示出来,不受原来数据类型的限制 

当然我们发现查询得到的列名字也变成了我们的表达式,但是我们可以使用as来为其指定别名

SELECT id, name, chinese + math + english as total FROM exam_result;

比如像上面这样,当然as可以省略(不推荐)。得到的结果如下图。

MySQL基础——增删查改(基础)

 3.2.4 去重:DISTINCT

有时我们发现数据库中存在一些重复数据,我们如何筛选出那些不重复的数据呢?这时我们需要用到DISTINCT这个关键字。

SELECT DISTINCT math FROM exam_result;

 比如我们要对数学成绩去重就是以上SQL语句。

其格式为 select distinct 查询列1,查询列2 from 表名;

只有当所有查询列的信息都相同时数据才会被去重

3.2.5 排序:ORDER BY

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] 
 ORDER BY column [ASC|DESC], [...];

1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面 

 比如我们对之前创建的表格执行以下语句可以得到:

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

MySQL基础——增删查改(基础) 可以看到它确实按照成绩升序来排名了。 

当然它也可以对多个字段进行排序,排序优先级随书写顺序 

-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result 
 ORDER BY math DESC, english, chinese;

3.2.6 条件查询:WHERE

顾名思义在我们数据库查询的过程中可以对查询的数据进行限制,只有满足条件的数据才会被筛选出来显示。我们会用到关键字where,这个类似于我们其他语言的if语句

在此之前我们先了解一下MySQL的比较运算符:

MySQL基础——增删查改(基础)

 逻辑运算符:

MySQL基础——增删查改(基础)

注意:

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

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

3.MySQL中 ”=“就是等于的意思,这点和其他语言有所不同

4.SQL默认情况下对WHERE XX!=NULL和WHERE XX=NULL的判断会永远返回0,却不会提示语法错误。所以我们需要使用”<=>“来或者 is null来判断是否为null。

下面我们简单看一下几个例子:

-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
-- 查询总分在 200 分以下的同学
SELECT name, chinese + math + english 总分 FROM exam_result 
 WHERE chinese + math + english < 200;

 当然我们需要注意一下like在执行模糊查询时:

-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权

3.2.7 分页查询:LIMIT 

类似于我们平时使用搜索引擎时的翻页,我们在MySQL进行查询时也可以指定查询的条目数量,其语法格式如下:

-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

 主要有limitoffset两个关键字,其中limit决定查询数目上限,offest决定从何处开始查询

3.3 修改Update 

顾名思义就是修改表中的数据,该操作会对实际的数据库产生影响。其语法如下:

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

这样看可能会比较抽象,我们结合实例来看,还是之前创建的成绩表。 

-- 将孙悟空同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';
-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT
3;
-- 将所有同学的语文成绩更新为原来的 2 倍
UPDATE exam_result SET chinese = chinese * 2;

其实修改的语法并不难,主要要将我们之前学的比较运算符和逻辑控制符灵活运用即可 。

3.4 删除 Delete

 WRRNING:该操作相比删库更加危险,不要随意在生产环境中执行!

其语法如下:

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

比如我们要删除一名同学的成绩:文章来源地址https://www.toymoban.com/news/detail-461084.html

-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = '孙悟空';

到了这里,关于MySQL基础——增删查改(基础)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL——表的增删查改

    目录 一.Create(创建) 1.单行数据 + 全列插入 2.多行数据 + 指定列插入 3.插入否则更新 4. 替换 二.Retrieve(读取) 1. select 列 查询 2.where 条件 3.结果排序 4.筛选分页结果 三.Update (修改) 四.Delete(删除) 1.删除数据 2.删除整张表数据 3.截断表 4.去重表数据 五.聚合函数 六.g

    2024年02月04日
    浏览(67)
  • 【MySql】表的增删查改

    说明: field 表示列名 datatype 表示列的类型 character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准 collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准 现在创建一张表user1: 创建表user2: 存储引擎不同,此时我们查看user1和user2:建表的时候

    2024年02月08日
    浏览(53)
  • 【MySQL】MySQL表的增删查改(初阶)

    据库最主要的操作就是增(create)删(update)改(retrieve)查(delete)。(CURD) 注意:进行增删改查操作的时候,请务必选中数据库。 SQL中使用 insert 来表示新增。 注意: 每次新增,都是直接新增一行。(一条记录) value后面()中的内容,个数和类型要和表的结构匹配。 在SQL中,’

    2023年04月08日
    浏览(38)
  • Mybatis基础---------增删查改

    目录结构 增删改 1、新建工具类用来获取会话对象 2、加入junit依赖 3、通过映射传递属性 之前的sql语句全部写在了映射文件中,然而在实际应用时是通过映射传递属性的,也就是java对象对应sql语句中的占位符属性,属性名一般和java对象中的属性名相同,我们只需要用#{}作为

    2024年01月17日
    浏览(46)
  • 【MySQL】表的增删查改(进阶)

    目录 1.数据库约束 1.1NOT NULL:非空约束 1.2UNIQUE:唯一值约束 1.3DEFAULT:默认值约束 1.4PRIMARY KEY:主键约束 1.5FOREIGN KEY:外键约束 1.6CHECK约束 2.表的设计 2.1一对一 2.2一对多 2.3多对多 3.新增 4.查询 4.1聚合查询 4.1.1聚合查询 4.1.2GROUP BY 4.2联合查询 4.2.1内连接  4.2.2外连接 4.2.3自连

    2024年02月11日
    浏览(43)
  • 【MySQL】库和表的增删查改

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、库的操作 1、创建数据库 2、数据库所使用的编码 2.1查询编码集和校验集 2.2查看数据库的字符集和校验集 2.3创建数

    2024年02月08日
    浏览(56)
  • MySQL 数据库 【增删查改(二)】

    目录 一、表的设计  1、一对一 2、一对多  3、多对多 二、新增  三、查询 1、聚合查询 (1)聚合函数: (2) group by 子句 (3)having  2、联合查询 (1)内连接 (2)外连接  (3)自链接  (4)子查询 (5)合并查询 四、总结 此处只是讨论一些比较基本的设计表的方法原则 设计数据库的

    2024年02月14日
    浏览(81)
  • 【MySQL】基本查询(表的增删查改)

    CRUD : 四种操作 Create(创建), Retrieve(读取), Update(更新), Delete(删除) 创建一张学生表 查询展示 查询展示 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败 可以选择性的进行同步更新操作 语法: 插入主键冲突把插入操作该为更新操作 创建一张表 全列查询 – 通常

    2024年02月15日
    浏览(46)
  • 【MySQL】数据表的增删查改

    C:Create增加 R:Retrieve查询 U:Update更新 D:Deleta删除 添加数据是对表进行添加数据的,表在数据库中,所以还是得先选中数据库,选中数据库还在进行一些表得操作 现在我们有一张 student 表,里面有两个属性分别为:id和name 接下来我们就给student这个表进行添加数据 选中数

    2024年02月04日
    浏览(61)
  • [MySQL]MySQL表中数据的增删查改(CRUD)

    CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除),也就是增删查改。 语法: column为属性列。 values为数据。 1.1 单列插入 方式1: 省略属性列 insert [into] table_name values (data1, data2 …); 由于省略了属性列,因此需要包含每个属性列的对应数据。 方式2: 不省略属性列

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包