【MySQL】增删改查操作(基础)

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


1、新增操作(Create)

在我们的数据库中,用insert into来进行新增操作,首先我们需要一张表
注意:在进行下列操作时,要选中数据库进行操作

mysql> create table student(id int, name varchar(20));
Query OK, 0 rows affected (0.02 sec)

1.1单行数据+全列插入

一次只插入一行,每一行都会插入数据

insert into 表名 values (,...);

举例如下:

mysql> insert into student values(1,'张三');
Query OK, 1 row affected (0.01 sec)

1.2多行数据+指定列插入

insert into student (表名,表名...) values (,...);

举例如下:

mysql> insert into student (id, name) values (2, '李四'),(3, '王五');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

这里通过 mysql 客户端给出的信息,也能看到我们成功插入了 2 行数据
注意:values()括号中的内容,个数和类型一定要和表的结构匹配

2、查询操作(Retrieve)

创建考试成绩表

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, 90), 
    (4, '曹孟德', 82, 84, 67), 
    (5, '刘玄德', 55.5, 85, 45), 
    (6, '孙权', 70, 73, 78.5), 
    (7, '宋公明', 75, 65, 30);

2.1全列查询

查询表里的所有列,*表示通配符

     --select * from 表名
mysql> select * from exam_result;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

2.2指定列查询

这个查询不用按照表中列的顺序来查询,只要表中包含该列即可:

     --select 列名, 列名... from 表名;
mysql> select id, name from exam_result;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 唐三藏    |
|    2 | 孙悟空    |
|    3 | 猪悟能    |
|    4 | 曹孟德    |
|    5 | 刘玄德    |
|    6 | 孙权      |
|    7 | 宋公明    |
+------+-----------+
7 rows in set (0.00 sec)

2.3指定列查询

查询每位同学语文成绩+10分的结果

mysql> select name, chinese+10 from exam_result;
+-----------+------------+
| name      | chinese+10 |
+-----------+------------+
| 唐三藏    |       77.0 |
| 孙悟空    |       97.5 |
| 猪悟能    |       98.0 |
| 曹孟德    |       92.0 |
| 刘玄德    |       65.5 |
| 孙权      |       80.0 |
| 宋公明    |       85.0 |
+-----------+------------+
7 rows in set (0.00 sec)

查询每个同学的总成绩

mysql> select name, chinese + math + english from exam_result;
+-----------+--------------------------+
| name      | chinese + math + english |
+-----------+--------------------------+
| 唐三藏    |                    221.0 |
| 孙悟空    |                    242.5 |
| 猪悟能    |                    276.0 |
| 曹孟德    |                    233.0 |
| 刘玄德    |                    185.5 |
| 孙权      |                    221.5 |
| 宋公明    |                    170.0 |
+-----------+--------------------------+
7 rows in set (0.00 sec)

注意:select 只是查询,并不会修改原来表中的数据,而查询的结果是一个 “临时表”,这个查询出来的表是不会写到硬盘里面去的

2.4别名(as)

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

mysql> select name, chinese + math + english as total from exam_result;
+-----------+-------+
| name      | total |
+-----------+-------+
| 唐三藏    | 221.0 |
| 孙悟空    | 242.5 |
| 猪悟能    | 276.0 |
| 曹孟德    | 233.0 |
| 刘玄德    | 185.5 |
| 孙权      | 221.5 |
| 宋公明    | 170.0 |
+-----------+-------+
7 rows in set (0.00 sec)

2.5去重(distinct)

     --98重复了
mysql> select math from exam_result;
+------+
| math |
+------+
| 98.0 |
| 78.0 |
| 98.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
+------+
7 rows in set (0.00 sec)
     --去重结果:
mysql> select distinct math from exam_result;
+------+
| math |
+------+
| 98.0 |
| 78.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
+------+
6 rows in set (0.01 sec)

2.6排序(order by)

要想让查询的结果“有序”就必须手动使用order by语句,让MySQL主动排序

     --select * from 表名 order by 列名/表达式;
mysql> select * from exam_result order by chinese;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

此处默认是按照升序排序,如果要使用降序排序,需要加上desc关键字

mysql> select * from exam_result order by chinese desc;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

也可以按照别名的方式进行order by直接表达式是一样的

mysql> select name, chinese + math + english as total from exam_result order by total;
+-----------+-------+
| name      | total |
+-----------+-------+
| 宋公明    | 170.0 |
| 刘玄德    | 185.5 |
| 唐三藏    | 221.0 |
| 孙权      | 221.5 |
| 曹孟德    | 233.0 |
| 孙悟空    | 242.5 |
| 猪悟能    | 276.0 |
+-----------+-------+
7 rows in set (0.00 sec)

order by 也可以指定多个列排序,通过多个列排序约定更复杂的比较规则

     --select * from 表名 order by 列名[desc], 列名[desc];
     --先按照第一列排序,第一列相同了,再按照第二列排序
mysql> select * from exam_result order by math desc,chinese desc;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
+------+-----------+---------+------+---------+
7 rows in set (0.00 sec)

2.7条件查询(where)

比较运算符:
【MySQL】增删改查操作(基础),mysql,数据库
逻辑运算符:
【MySQL】增删改查操作(基础),mysql,数据库
注意:
1.WHERE条件可以使用表达式,但不能使用别名。
2.AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

查询语文成绩大于60分的同学:

mysql> select name, chinese from exam_result where chinese > 60;
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 唐三藏    |    67.0 |
| 孙悟空    |    87.5 |
| 猪悟能    |    88.0 |
| 曹孟德    |    82.0 |
| 孙权      |    70.0 |
| 宋公明    |    75.0 |
+-----------+---------+
6 rows in set (0.01 sec)

数据库服务器收到SQL之后就会遍历表中的每一个数据(行)取出当前行,带入到条件之中,如果条件成立,当前这一行数据就会进入到结果集合中,如果不成立,跳过进入下一行
上述条件查询的过程,可以理解成按照条件进行“筛选”

可以在条件选择的时候使用order by来排序
(如果没有显示使用order by,顺序是不可预期的)

mysql> select name, chinese from exam_result where chinese > 60 order by chinese;
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 唐三藏    |    67.0 |
| 孙权      |    70.0 |
| 宋公明    |    75.0 |
| 曹孟德    |    82.0 |
| 孙悟空    |    87.5 |
| 猪悟能    |    88.0 |
+-----------+---------+
6 rows in set (0.00 sec)

查询语文成绩大于80或者英语大于60的同学:

mysql> select name, chinese, english from exam_result where chinese > 80 or english > 60;
+-----------+---------+---------+
| name      | chinese | english |
+-----------+---------+---------+
| 孙悟空    |    87.5 |    77.0 |
| 猪悟能    |    88.0 |    90.0 |
| 曹孟德    |    82.0 |    67.0 |
| 孙权      |    70.0 |    78.5 |
+-----------+---------+---------+
4 rows in set (0.01 sec)

查询数学成绩在[80 90]的同学:

mysql> select name, math from exam_result where math >= 80 and math <= 90;
+-----------+------+
| name      | math |
+-----------+------+
| 曹孟德    | 84.0 |
| 刘玄德    | 85.0 |
+-----------+------+
2 rows in set (0.00 sec)
mysql> select name, math from exam_result where math between 80 and 90;
+-----------+------+
| name      | math |
+-----------+------+
| 曹孟德    | 84.0 |
| 刘玄德    | 85.0 |
+-----------+------+
2 rows in set (0.00 sec)

上述两种写法都是可以的

查询英语成绩是56分,67分,77分的同学:

mysql> select name, english from exam_result where english in(56,67,77);
+-----------+---------+
| name      | english |
+-----------+---------+
| 唐三藏    |    56.0 |
| 孙悟空    |    77.0 |
| 曹孟德    |    67.0 |
+-----------+---------+
3 rows in set (0.00 sec)
mysql> select name, english from exam_result where english = 56 or english = 67 or english = 77;
+-----------+---------+
| name      | english |
+-----------+---------+
| 唐三藏    |    56.0 |
| 孙悟空    |    77.0 |
| 曹孟德    |    67.0 |
+-----------+---------+
3 rows in set (0.00 sec)

上述这两种也是可以的

查询姓‘孙’的同学:
%匹配任意多个(包括0个)字符

mysql> select name from exam_result where name like '孙%';
+-----------+
| name      |
+-----------+
| 孙悟空    |
| 孙权      |
+-----------+
2 rows in set (0.00 sec)

_匹配严格的一个任意字符

mysql> select name from exam_result where name like '孙_';
+--------+
| name   |
+--------+
| 孙权   |
+--------+
1 row in set (0.00 sec)

查询没有数学成绩的同学:

mysql> select name, math from exam_result where math is null;
Empty set (0.00 sec)

查询有数学成绩的同学:

mysql> select name, math from exam_result where math is not null;
+-----------+------+
| name      | math |
+-----------+------+
| 唐三藏    | 98.0 |
| 孙悟空    | 78.0 |
| 猪悟能    | 98.0 |
| 曹孟德    | 84.0 |
| 刘玄德    | 85.0 |
| 孙权      | 73.0 |
| 宋公明    | 65.0 |
+-----------+------+
7 rows in set (0.00 sec)

2.8分页查询(limit)

分页查询,限制了每次查询显示的最多为多少条数据,比如我们现在只查询俩条数据:

mysql> select * from exam_result limit 2;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
+------+-----------+---------+------+---------+
2 rows in set (0.00 sec)

搭配offset关键字,offset称为偏移量(相当于下标),offset默认是从0开始的

mysql> select * from exam_result limit 2 offset 2;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
+------+-----------+---------+------+---------+
2 rows in set (0.00 sec)

3、修改操作(Update)

     --update 表名 set 列名 = 值 where 条件
mysql> update exam_result set english = 56 where name = '曹孟德';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
     --修改结果:
mysql> select name, english from exam_result;
+-----------+---------+
| name      | english |
+-----------+---------+
| 唐三藏    |    56.0 |
| 孙悟空    |    77.0 |
| 猪悟能    |    90.0 |
| 曹孟德    |    56.0 |
| 刘玄德    |    45.0 |
| 孙权      |    78.5 |
| 宋公明    |    30.0 |
+-----------+---------+
7 rows in set (0.00 sec)

修改多个列,set后面写多组列,分别进行= 赋值即可
修改操作也可以借助一些表达式,还可以搭配order by 和 limit
如果update不指定任何条件,所有的数据都会被修改

4、删除操作(Delete)

     --delete from 表名 where 条件;
mysql> delete from exam_result where name = '宋公明';
Query OK, 1 row affected (0.01 sec)
     --删除结果
mysql> select * from exam_result;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
+------+-----------+---------+------+---------+
6 rows in set (0.00 sec)

注意:删除操作也是在操作数据库服务器的硬盘,需要小心
delete 的操作,后面的条件是可以跟 update 一样的,支持 where,order by,limit 等操作
如果没有写任何条件,那就是把整个表中的数据都删除了文章来源地址https://www.toymoban.com/news/detail-852677.html

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

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

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

相关文章

  • 【PHP网页应用】MySQL数据库增删改查 基础版

    使用PHP编写一个简单的网页,实现对MySQL数据库的增删改和展示操作 页面实现在index.php,其中basic.php为没有css美化的原始人版本 函数实现在database.php 目录 功能基本实现版  CSS美化版 basicindex.php  index.php   database.php 代码讲解 我们来展示一下页面和操作示例。 运行网页,可

    2024年01月16日
    浏览(50)
  • 【MySQL】数据库的增删改查、备份、还原等基本操作

    大写的表示 [] 是可选项 CHARACTER SET: 指定数据库采用的字符集 COLLATE: 指定数据库字符集的校验规则 创建数据库的时候,有两个编码集: 1.数据库编码集——数据库未来存储数据 2.数据库校验集——支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采

    2024年02月08日
    浏览(74)
  • Vue项目通过node连接MySQL数据库并实现增删改查操作

    1.创建Vue项目 Vue项目创建的详细步骤,有需要的可移步这里 2.下载安装需要的插件 下载express 下载cors,用于处理接口跨域问题 下载mysql 下载axios 3.在项目中创建server文件夹,用于搭建本地服务器 新建/server/app.js,用于配置服务器相关信息 新建/server/db/index.js,用于配置数据库

    2024年02月16日
    浏览(62)
  • Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

    数据库操作 MySQL数据库+pymysql Django开发操作数据库更简单,内部提供了ORM框架。 安装第三方模块 ORM可以做的事: 1、创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】 2、操作表中的数据(不用写SQL语句)。 1、自己创建数据库 1)启动MySQL服务 2)自带

    2024年02月14日
    浏览(59)
  • 【Mysql】数据库第四讲(表的增删改查操作 超全面 附实操案例)

    语法: 案例: 创建一个学生信息表 单行 多行 语法 案例 表达式不包含字段 表达式包含字段 表达式包含多个字段 比较运算符: 逻辑运算符: AND:多个条件必须都为 TRUE(1),结果才是 TRUE(1); OR:任意一个条件为 TRUE(1), 结果为 TRUE(1) NOT:条件为 TRUE(1),结果为 FALSE(0) 案例1 英语不

    2024年02月07日
    浏览(54)
  • java通过JDBC连接mysql8.0数据库,并对数据库中的表进行增删改查操作

    目录 一、JDBC简介 二、添加依赖 三、JDBC操作数据库的步骤 四、JDBC操作数据库——增删改查 (一)新增数据 (二)删除数据 (三)修改数据 (四)查询数据 (五)多表连接查询         Java数据库连接,(Java Database Connectivity,简称JDBC)是java语言中用来规范客户端程序如何来访问数

    2024年02月03日
    浏览(127)
  • MySQL基础——数据模型·数据库操作

    ♥️ 作者:小刘在C站 ♥️ 个人主页: 小刘主页 ♥️ 每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 树高千尺,落叶归根人生不易,人间真情 目录 1.数据模型 2. SQL 2.1 SQL通用语法 2.3 DDL 2.3.1 数据库操作 1). 查

    2024年02月06日
    浏览(61)
  • 【MySQL】数据库MySQL基础知识与操作

    作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将MySQL基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详解

    2024年02月05日
    浏览(40)
  • MySQL数据库基础知识,基础操作详细整理

    引入: 淘宝网,京东、微信,抖音等都有各自的功能,那么当我们退出系统的时候,下次再访问时,为什么信息还存在? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数

    2024年04月17日
    浏览(51)
  • MySQL数据库、表、用户的基础操作

    根据两个实例进行练习 1)创建库 2)创建表 3)字段插入(调换位置) 4)修改字段类型 5)修改字段名 6)增加字段 7)修改表名(这一步做掉了,最后才添加上来。所以后面添加外键主表名依旧为customers。) 8)删除字段 9)修改存储引擎 2、 (1)创建表、添加外键约束 (2)删除外

    2024年02月12日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包