目录

  • 0. 注: 字符串编码方式查询
  • 1. CRUD
  • 2. 新增(Create)
    • 2.1 单行数据 + 全列插入
    • 2.2 多行数据 + 指定列插入
  • 3. 查询(Retrieve)(查询操作不影响数据库本身数据)
    • 3.1 全列查询
    • 3.2 指定列查询
    • 3.3 查询字段为表达式
    • 3.4 别名
    • 3.5 去重:DISTINCT
    • 3.6 排序:ORDER BY
    • 3.7 条件查询:WHERE
    • 3.8 分页查询:LIMIT
  • 4. 修改(Update) (修改操作是发生在数据库里面的)
  • 5. 删除(Delete)
  • 6. 内容重点总结

0. 注: 字符串编码方式查询

show variables like 'character%';

1. CRUD

所谓增删查改

  • 注释:在SQL中可以使用“–空格+描述”来表示注释说明
  • CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写

2. 新增(Create)

语法:

insert into table_name[(column [, column] ...)] values (value_list) [, (value_list)] ...value_list: value, [, value] ...

举列:
创建一张学生表

DROP TABLE IF EXISTS student;
CREATE TABLE student (id INT,sn INT comment '学号',name VARCHAR(20) comment '姓名',qq_mail VARCHAR(20) comment 'QQ邮箱'
);

2.1 单行数据 + 全列插入

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

2.2 多行数据 + 指定列插入

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

3. 查询(Retrieve)(查询操作不影响数据库本身数据)

  • 查询出来的结果是临时的放在内存里面的,重命名等操作不影响数据库本身数据

语法:

SELECT[DISTINCT] {* | {column [, column] ...} //去重[FROM table_name] [WHERE ...]//条件查询[ORDER BY column [ASC | DESC], ...]//排序 :升序|降序LIMIT ...

举列:
创建考试成绩表

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.1 全列查询

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


查询成功!

3.2 指定列查询

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

3.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;

3.4 别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称

语法:

SELECT column [AS] alias_name [...] FROM table_name;
-- 结果集中,表头的列名=别名
SELECT id, name, chinese + math + english 总分 FROM exam_result;

3.5 去重:DISTINCT

使用distinct关键字对某列数据进行去重:

-- 98 分重复了
SELECT math FROM exam_result;

-- 去重
select distinct math from exam_result;

3.6 排序:ORDER BY

语法:

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY column [ASC|DESC], [...];
  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
  • 查询考试成绩,按数学成绩降序排序:
select name,math from exam_result order by math desc;

  • 使用表达式及别名排序
-- 查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result ORDER BY chinese + english + math DESC;
SELECT name, chinese + english + math as total FROM exam_result ORDER BY total DESC;

  • 可以对多个字段进行排序,排序优先级随书写顺序
-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result ORDER BY math DESC, english, chinese;

3.7 条件查询:WHERE

比较运算符:

逻辑运算符:

注:

  1. WHERE条件可以使用表达式,但不能使用别名。
  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

案例:

  • 基本查询:
-- 查询英语不及格的同学及英语成绩 ( < 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;

  • AND与OR:
-- 查询语文成绩大于80分,且英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 and english > 80;

-- 查询语文成绩大于80分,或英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 or english > 80;

-- 观察AND 和 OR 的优先级:
SELECT * FROM exam_result WHERE chinese > 80 or math>70 and english > 70;
SELECT * FROM exam_result WHERE (chinese > 80 or math>70) and english > 70;



显然:

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

  • 范围查询:

  1. between and
 -- 查询语文成绩在 [80, 90] 分的同学及语文成绩
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
-- 使用 AND 也可以实现
SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese
<= 90;


2. IN

-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
-- 使用 OR 也可以实现
SELECT name, math FROM exam_result WHERE math = 58 OR math = 59 OR math
= 98 OR math = 99;

  • 模糊查询:LIKE
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权

% 相当于通配符

-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权

  • NULL 的查询:IS [NOT] NULL
-- 查询 语文成绩是null的同学select name,chinese from exam_result where chinese is null;

-- 查询 语文成绩是不是null的同学select name,chinese from exam_result where chinese is not null;

3.8 分页查询:LIMIT

语法:

-- 起始下标为 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;

案例:按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页:

//第一页select id,name,math from exam_result order by id limit 3 offset 0;
//第二页
select id,name,math from exam_result order by id limit 3 offset 3;
//第三页  如果结果不足三个 不会有影响
select id,name,math from exam_result order by id limit 3 offset 6;

4. 修改(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 位同学的数学成绩加上 10 分(不要加的太大 以防结果超出定义的范围)
UPDATE exam_result SET math = math + 10 ORDER BY chinese + math + english LIMIT 3;

-- 将所有同学的语文成绩更新为原来的 0.5 倍
UPDATE exam_result SET chinese = chinese / 2;

5. 删除(Delete)

语法:

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

案例:

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

-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (id INT,name VARCHAR(20)
);

-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');-- 删除整表数据
DELETE FROM for_delete;



删表操作相当于清空表里数据,但是表还在(盒子还在),依旧可以进行插入

6. 内容重点总结

  • 新增
// 单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
-- 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);
  • 查询
-- 全列查询
select * from 表
-- 指定列查询
select 字段1,字段2... from 表
-- 查询表达式字段
select 字段1+100,字段2+字段3 from 表
-- 别名
select 字段1 别名1, 字段2 别名2 from 表
-- 去重DISTINCT
select distinct 字段 from 表
-- 排序ORDER BY
select * from 表 order by 排序字段
-- 条件查询WHERE:
-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR (8)NOT
select * from 表 where 条件
  • 修改
update 表 set 字段1=value1, 字段2=value2... where 条件
  • 删除
delete from 表 where 条件
  • over

【MySQL】数据库2- MySQL表的增删改查(基础)相关推荐

  1. django2 mysql驱动_Django框架学习(二)Django连接Mysql数据库,实现表的增删改查

    创建一个Django项目 方法: 1.使用 django-admin.py 管理工具来创建项目 2.用Pycharm专业版可以直接创建Django 项目 我直接用Pycharm创建的项目,比较简单,也 ...

  2. 【数据库02】==== 表的增删改查(基础)

    这里写目录标题 新增 单行数据+全列 多行数据+指定列 示例 查询 全列查询 指定列查询 查询字段为表达式 别名 去重:DISTINCT 排序:ORDER BY 条件查询:WHERE 案例 分页查询 ...

  3. MySQL数据库安装以及SQL基本增删改查

    目录 1.介绍下数据库 1.1.DB概念和特点 1.2.常见DB软件 1.3.数据库结构 2.MySQL安装与使用 2.1.安装 2.2.卸载 2.3.MySQL服务启动与关闭 2.4.MySQL登录 ...

  4. Unity 2021连接外网数据库,建表,增删改查遇到的问题记录

    目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...

  5. MySQl建库建表及增删改查

    通过可视化工具建库建表 创建数据库 CREATE DATABASE studb2 CHAR SET utf8; 切换数据库(使用use 将数据库切换到 studb2) USE studb2 ; 在st ...

  6. mysql查询添加数据库表_MySQL数据库篇之表的增删改查

    主要内容: 一.表介绍 二.创建表 三.查看表结构 四.修改表结构 五.复制表 六.删除表 1️⃣ 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称 ...

  7. 医院信息管理系统(Python与MySQL数据库的连接与相关增删改查操作)

    题目意义 医院信息管理是一项琐碎.复杂而又十分细致的工作,这关系到医院体系能否运行起来这一关乎国民健康水平的重大问题.我们只有利用好了医院中每个医生.护士的各项资源,才能使得医院系统能够有序而条理的进 ...

  8. sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾

    参考链接: SQL教程 MySQL教程 一.创建数据库语法 --用master数据库 use master --判断数据库是否存在,若存在则删除 if exists (select * from sy ...

  9. Hadoop之Hive数据库和表的增删改查(DDL)

    Hive QL 是Hive支持的类似SQL的查询语言.Hive QL大体可以分为DDL.DML和UDF语言.DDL语言主要是创建数据库.创建表.数据库和表的删除:DML主要进行数据的添加.查询:UDF ...

  10. R操作MySQL数据库创建表、删除表、增删改查(CRUD)

    R操作MySQL数据库创建表.删除表.增删改查(CRUD) 关系数据中的数据是按照一定范式去存储的.当我们需要非常高级和复杂的Sql查询就可以使用关系数据库的数据资产.不光java和python可以容 ...

最新文章

  1. 我对虚拟化的认识(一)
  2. java游戏2333整合包,我的世界魔法荣耀
  3. 深入理解 Session 与 Cookie
  4. 权限管理说明-以Linux为例
  5. 提里奥·弗丁(魔兽世界里的NPC)
  6. 最强整理!字节跳动历年Android中高级面试题全收录!附超全教程文档
  7. 【CSS3】制作带光晕的网页“Button“
  8. c/c++教程 - 2.4.2.6 初始化列表语法,初始化列表参数
  9. JMETER java.net.SocketException: Connection reset 报错解决方案
  10. mysql innodb monitor_mysql:innodb monitor(show engine innodb status)探秘
  11. 前端页面插入Flash动画
  12. CS224N WINTER 2022(三)RNN、语言模型、梯度消失与梯度爆炸(附Assignment3答案)
  13. SketchUp2019下载SketchUp2019下载安装详细教程SU2019草图大师
  14. MarkDown下载及学习笔记
  15. 算法笔记:使用A*算法解决八数码问题
  16. 教你如何一步一步制作自己的PCB个人LOGO
  17. 安装C3D v1.0提取视频特征
  18. word-spacing
  19. 牛客网——MySQL数据库练习
  20. Contrastive learning of Class-agnostic Activation Map for Weakly Supervised Object Localization and

热门文章

  1. 汇编语言的div指令 ax dx bx
  2. 汇编语言reg和sreg bp的介绍
  3. 使用一个特别设计的损失来处理类别不均衡的数据集
  4. 计算机视觉顶会上的灌水文都有哪些特征?
  5. 你见过最狠的SCI评论是什么?
  6. 强势推荐一位 Python 原创自动化大佬!
  7. 只用一张训练图像进行图像的恢复
  8. 高翔Slambook第七讲代码解读(2d-2d位姿估计)
  9. 通过手写Spring MVC来理解其原理
  10. 1.2 CentOS6 命令行配置静态IP地址步骤