目录

  • 本章目标
  • CRUD
  • 新增(Create)
    • 单行数据,全列插入
    • 多行插入,指定列插入
  • 查询(Retrieve)
  • 修改(Update)
  • 删除(Delete)

本章目标

  • 学会MySQL表中的sql语句,能够在自己创建数据库表!
  • 实现mysql表的增删查改操作!

CRUD

我们对CRUD不陌生! 而CRUD究竟指的是什么呢?

crud是指在做计算处理时的增加(Create)检索(Retrieve)更新(Update)删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

可以看到,CRUD就是增加(Create),检索(Retrieve),更新(Update),删除(Delete)操作的简称!!!

而我们上节,数据库基础中介绍了数据库的CRUD
而一个个数据库中是由一张张表结构保存了数据在数据库中! 所以我们来学习表的CRUD!

  • 我们来回顾一下上节针对表的一些sql语句!

1.查看该数据库下的所有表!
show tables;

我们不能忘记当要对某个数据库中进行操作时,需要先使用该数据库(use 数据库名;)!
使用show tables; 可以查看到ebook数据库下的所有表!!!
我们上章也学习了如何创建一张表!
我就不在一一演示啦!

新增(Create)

我们知道了如何创建表,那如何给表新增内容呢?

单行数据,全列插入

SQL语句
insert into 表名 values(数据...);
举例:

book表中我们插入了一条数据!!!
我们查看一下:
注意:
mysql中我们如果要插入字符.我们需要用' '/" "引号就像java中的字符串一样! 但是这里也可以用' '单引号!!!

多行插入,指定列插入

当我们需要新增的数据较多时,如果我们再采用单行插入的方式,显然不科学! 而且有时候,并不是我们全部的列都要插入数据!!!如果我们要插入多行指定列呢?
SQL语句
insert into 表名(列名1,2,...) values(数据1),(数据2),...;
这里的列名和每行数据之间需要用,逗号隔开!列名要写在()里,并且每条数据中的数据项要对应指定列!
举例:

这里的into也可以省略!!!

查询(Retrieve)

我们插入表中的数据如何查看呢?

  • 查看表中全部数据
    SQL语句
    select * from 表名;
-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。(索引待后面的博客讲解)

*通配符,代表全部列!!!

  • 查看指定列
    SQL语句
    select 列名1,列名2... from 表名;
    当我们只对该表中的某些列查询时!
  • 查询字段为表达式
    如果我们今天对书籍进行大促销,想对书籍进行一天的价格下调,我们如何查看表呢?
    SQL语句
    select 表达式 from 表名;


可以看到,我们通过表达式 price-60就查看到降价60的数据了!
此操作并不会影响服务器中数据库中的内容!!数据并没有改变!!!

我们还可以有多个表达式!!!

  • 别名
    我们可以看到当我们使用表达式时,该列的列名也就是该表达式,如果我们想起一个别名呢?又该如何操作呢?
    SQL语句
    select (表达式/列名) as 别名 from 表名;
    as也可以省略!!!

  • 去重distinct
    当我们一个表中含有重复的数据时,但我们只想查看一个,如何去重呢?
    使用distinct关键字对某列数据进行去重:
    SQL语句
    select distinct 列名 from 表名;

    注意:这里的distinct在查询列的列名前!!!

  • 排序 order by
    SQL语句
    select 列1,列2....from 表名 order by 列名 排序方方式(asc/desc);

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC (没有说明,默认升序!)
  1. 没有 order by 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

使用表达式排序!!!

使用别名排序!

可以对多个字段排序,排序优先级随书写顺序!

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

  • 条件查询 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,结果才为true
or 任意一个条件为true,结果就为true
not 条件为true ,结果为false

SQL语句
select * from 表名 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 总分<200;

英语高于60分
语文成绩高于数学成绩
总分低于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;

语文成绩大于80且数学成绩大于80
语文成绩大于80或英语成绩大于80
and和or的优先级!

  • 范围查询:
    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;

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


in(option)

-- 查询数学成绩是 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;

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

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


  • NULL的查询 is (not) NULL
--查询书籍分类为空的书籍
select * from book where class is NULL;
--插叙书籍分类不为空的书籍
select * from book where class is not NULL;

  • 分页查询 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;

查询前3条:

从第3条开始查询4条结果!
offset偏移量为3的位置,查询4条结果!

修改(Update)

语法:

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

SQL语句
update 表名 set 列名= 修改后的值 where 条件;

案例:

-- 将孙悟空同学的数学成绩变更为 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;



删除(Delete)

SQL语句
delete from 表名 where 条件;

-- 删除孙悟空同学的考试成绩
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;


MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)相关推荐

  1. linux增删查改语句,mysql基础知识之增删查改使用介绍

    mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的 ...

  2. 6000字总结MySQL最基础的增删查改命令

    文章目录 一.新增(Create) 1.单行数据 + 全列插入 2.多行数据 + 全列插入 3.多行数据+指定列插入 二.查询(Retrieve) 1.全列查询 2.指定列查询 3.查询字段为表达式 ...

  3. winform调用webservice增删查改_教你分别用数据库与云函数实现“增删查改”

    导语 数据库 API 与云函数"增删查改"的姿势有何不同?对比代码差异往往有助于更好的理解,本文用详细代码帮你寻找答案并巩固基础! ▌一.云开发初始化 wx.cloud.init( ...

  4. php链接数据库实行增删查改_最方便最简单的php操作mysql的增删改查方法

    第一步:添加数据的实现(增删改查的过程中是一定要用到连接数据库的) 首先你要在www/test/message/里面创建一个index.php实现操作php添加数据到mysql数据库.(可以看简介的文 ...

  5. jdbc mysql数据库增删查改_通过JDBC对Mysql数据库进行简单的增删改查

    Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法.J ...

  6. Java培优班 - 第二十天、第二十一天 - JavaWeb - Part 1: 课程 - MySQL(理论常识 + 增删查改 + 数据类型 + 备份/恢复 ) -(较全)

    文章目录 1.1数据库概述 1.1.1什么是数据库? 1.1.2什么是关系型数据库\color{#ff0011}{关系型数据库}关系型数据库? 1.1.3数据库相关概念\color{#ff0011}{ ...

  7. 数据库基础操作(二)数据库表数据的增删查改

    一.插入数据 insert 向表中制定字段添加数据:insert into 表 (字段名1,字段名2......) values(值1,值2......); 向表中所有字段添加数据:insert in ...

  8. Node连接MySQL并封装其增删查改

    Node连接Mysql 说到node,可能大家会想到MOngoDB作为数据库,这里将会介绍node与mysql的连接,并分享了封装好的实例代码,在项目开发中可直接使用.下一篇博客将会讲node连接Mo ...

  9. python调用mysql数据库sql语句过长有问题吗_python操作mysql数据库,一次性执行多条语句不执行...

    总结:1.使用这种方法,获取到的返回值总是最后一条命令的返回值,如果最后一条命令是update或者delete这种sql,则返回为() 2.sql的每一条语句后面都需要添加一个分号,不然最后splic ...

最新文章

  1. Flutter UI自动化测试技术方案选型与探索
  2. js解析顺序了解一下??
  3. layui表格更改一列数据_layui数据表格隐藏列的方法介绍
  4. 第17课:基于 CRF 的中文句法依存分析模型实现
  5. 最详细的java泛型详解
  6. Java 9中的新Regex功能
  7. 将MyEclipse项目导入到Eclipse中
  8. 存储ic载板_延伸IC领域 崇达技术拟将持有普诺威55%股权
  9. sql去重、or、in、and、groupby的使用
  10. Java实例方法和类方法的区别
  11. Java创建线程的三种方法
  12. 20191006每日一句
  13. 第一章 略说中医的学习与研究(6)
  14. 【前端】相信你会用到的一篇笔记---CSS篇(2)
  15. 开源ext2read代码走读之-扩展分区与逻辑分区说明及如何读取扩展分区的分区表(EBR)
  16. Python 算法之 动态规划详解
  17. Windows2012开机启动项设置
  18. cross product or vector product - 叉积或向量积
  19. 闪电模型数学_【雷电流的数学模型仿真分析】 matlab数学模型仿真系统图
  20. 尚硅谷MySQL基础学习笔记

热门文章

  1. 安全模式没有计算机图标不见了怎么办,win10杀毒图标不见了怎么办?win10安全中心图标没了的处理方法...
  2. linux如何连接手机传文件,Ubuntu和手机通过蓝牙互传文件
  3. 第一代程序员作家--王小波
  4. 类中成员方法和实例方法
  5. 个人永久性免费-Excel催化剂功能第24波-批量发送邮件并指点不同附件不同变量...
  6. 分享一个统计 Android 模块构建时长的脚本工具
  7. github上下载nacos教程并安装
  8. 云服务器有几种类型,一般要如何选购
  9. 员工成长阶段与激励方式探讨
  10. Unity限制InputField输入数字