• MySQL数据库增删改查操作和常用命令



    增删查改(CRUD)即:增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)。

    1. 新增

    语法:

    insert into 表名 values(字段,字段,...);
    
    • 1

    在这里插入图片描述

    • 操作表前要先use 数据库;
    • insert into 和values是关键字;
    • 插入的数据要和定义表的列,类型,数量以及顺序一致;

    1.1 插入一行+全列插入

    现有student表:

     create table student (name varchar(50),id int);
    
    • 1
    insert into student values ('Wendy',20);
    
    • 1
    • 即插入一整行数据,每列都要插入元素,否则会报错.;

    在这里插入图片描述

    1.2 插入多行+指定列插入

    insert into student (列名,列名..) values (..),(...);
    
    • 1

    在这里插入图片描述

    • 需要指定列时,在表名后 指定列,并且插入数据和指定列的顺序要和定义列的数量及顺序,类型等一致;

    2. 查询

    2.1 全列查询

    select * from 表名;
    
    • 1
    • select from 为关键字,*号相当于通配符,即把表所有内容都查询出来;

    在这里插入图片描述

    2.2 指定列查询

    所有查询出来的结果是一个临时表,并不会改变原表的内容

    以下介绍的字句都适用于select查询语句中

    select 列名 ,列名,..from 表名;
    
    • 1
    • 列名可以多个,此时指定列不需要按表的顺序来.
      在这里插入图片描述

    2.3 查询字段为表达式

    select 表达式 from 表名;
    
    • 1
    • 表达式即:+,-,加减乘除…;
    • 查询出来的结果是一个临时表,并不会改变原来的表的内容;
    1. 表达式不包含字段,即没有意义的表达式;

    在这里插入图片描述

    1. 表达式包含一个字段:给math加10分;

      查询出来的临时表math加了10分,但是原表内容并没有改变
      在这里插入图片描述

    2. 表达式包含多个字段

    在这里插入图片描述

    2.4 起个别名 as

    为查询结果中的列指定一个小名,以小名作为该列的名称:

    as 也可以省略

    select 列名 as ,列名 as ...  别名 from 表名;
    
    • 1

    在这里插入图片描述

    2.5 去重 distinct

    使用distinct 关键字,对于查询的指定列去重

    select distinct 列名 from 表名;
    
    • 1

    在这里插入图片描述

    • math 为60分出现了2次,去重后,查询出来的结果只有一个60分;

    2.6 排序 order by

    select 列名,列名...from 表名 order by 列名,列名... asc/desc;
    
    • 1
    • ASC 为升序 / DESC 为降序
    • 没有order by字句的查询,返回的查询结果顺序是未定义的;
    • NULL数据,视为比任何值都小,升序出现最上面,降序出现最下面;
    1. 查询同学总分,使用表达式及别名,按升序排序

    在这里插入图片描述

    1. 对多个字段进行排序,math按升序

    在这里插入图片描述

    2.7 条件查询 where

    比较运算符:

    运算符说明
    >,>=,<,<=大于,大于等于,小于,小于等于
    =等于,NULL不安全,如:NULL = NULL 结果是NULL
    <=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
    !=,<>不等于
    between a and b范围匹配,[a, b],如果 a <= value <= b,返回 TRUE(1)
    in (option,…)如果是 option 中的任意一个,返回 TRUE(1)
    IS NULL是 NULL
    IS NOT NULL不是 NULL
    LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字
    • NULL很特殊,列名 = NULL 结果也是NULL,一般不用 =来判断是否为NULL

    逻辑运算符:

    运算符说明
    AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)【类似 &&,并且】
    OR任意一个条件为 TRUE(1), 结果为 TRUE(1) 【类似 ||,或者】
    NOT条件为 TRUE(1),结果为 FALSE(0)
    • where 条件可以使用表达式,不能使用别名
    • and 的优先级高于or,同时使用时,需要使用小括号();

    and 和or 示例:

    -- 查询 math 数学不及格 并且 English 英语也不及格的同学
    select name,math,English from student where math < 60 and English < 60;
    --查询 数学 比 英语 好的同学
    select name,math,English from student where math > English;
    --查询 总分在 150 分以下的同学 或者 英语不及格的同学
    select name,math , English from student where math+English < 150 or English < 60;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    范围查询 between …and…

    -- 查询数学成绩在[60,80]分的同学
    select name,math from student where math between 60 and 80;
    -- 或者使用and运算符
    select name,math from student where math >=60 and math <= 80;
    
    • 1
    • 2
    • 3
    • 4

    in:

    -- 查询数学成绩是 60 或者 70 或者 90 的同学
    select name,math from student where math in (60,70,90);
    --或者使用 or 运算符
    select name,math from student where math = 60 or math = 70 or math = 90;
    
    • 1
    • 2
    • 3
    • 4

    模糊查询:like

    -- % 匹配任意个字符(包括0个或多个字符)
    select name from student where name like '帅%';
    -- _ 匹配一个任意字符(只有一个字符)
    select name from student where name like '帅_';
    
    • 1
    • 2
    • 3
    • 4
    • ‘帅%’,表示,名字首个字符是帅即匹配查询成功,如可以查询到:帅哥,帅气男孩…
    • 也可以’%帅’,即名字首字符不做要求,只要是名字最后一个字符是帅,即查询成功,如:你好帅,真帅…
    • ‘帅__’,名字首字符为帅即匹配成功,并且只能查询到2个字符的,如果要查询3个字符,就要多加一个__
    • ‘_帅’,即名字最后一个字符为帅,并且只能查询2个字符的名字

    NULL的查询,is [not] null

    -- 查询 math成绩 已知的同学
    select name,math from student where math is not null;
    -- 查询math成绩未知的同学
    select name,math from student where math is null;
    
    • 1
    • 2
    • 3
    • 4

    2.8 分页查询 limit

    语法

    select 列名... from 表名 limit s,n;//从第s条开始筛选n条结果.
    select 列名... from 表名 limit n offset s;//同上 
    
    • 1
    • 2
    • 查询结果下标默认为0开始
    • 在不指定从第几条开始时,limit默认从0开始筛选
    • s可以指定从第几条开始筛选,n可以指定筛选几条结果.
    -- 第一页
    select id,name math,from student order by id limit 0,3;//从0下标开始,筛选3条结果
    -- 第二页
    select id,name,math from student order by id limit 3, 3;//从3下标开始,帅选3条结果
    -- 第三页
    select id,name,math from student order by id limit 3 offset 6;//从6下标开始,筛选3条结果
    -- 如果结果不足3个,不会有影响
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3. 修改 update

    语法:

    update 表名 set 列名 = XXX ,列名 = XXX,....
    
    • 1
    • where字句和order by 字句,limit字句可以嵌入到update等句中;

    示例:

    -- 将 pop 同学的数学成绩 改为 100
    update student set math = 100 where name = 'pop';
    -- 将 总成绩倒数前三的 同学数学成绩加上30
    update student set math = math + 30 order by math+English desc limit 3;
    -- 将 所有数学成绩 改为 100
    update student set math = 100;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4. 删除 delete

    语法

    delete from 表名 (where ..../ order by..../ limit....);
    
    • 1
    • 删除表是非常危险的操作哦~不可逆
    -- 删除 pop同学的信息
    delete from student where name = 'pop';
    -- 删除 student表;
    delete from student ;
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    淘宝天猫店铺商品API,店铺商品分类接口代码对接教程
    中英文互译在线翻译-在线翻译软件
    Java 注解
    云GPU如何安装和启动VNC远程桌面服务?
    Masked Image Training for Generalizable Deep Image Denoising 论文阅读笔记
    中勒索病毒怎么处理想恢复数据
    Spring Boot 使用 .env 文件实现【隐私信息配置】
    SpringBoot 异步接口
    1.(vue3.x+vite)封装组件
    IP6809三线圈15W无线充电发射端方案ic英集芯
  • 原文地址:https://blog.csdn.net/Original0/article/details/127887165