DML数据操作语句和基本的DQL语句

一、MySQL对数据的增删改查

1.DML语句

1.1 增加数据(INSERT)

insert into 表名 (字段名,字段名,...字段名)
values/value (值,值,...值)

1.1.1  新增数据的具体实现

(1)全字段的插入

方式一:

        insert into student (sid,sname,birthday,ssex,classid)  values(9,'苏一','2007-1-12','男',1);

方式二:null default

        insert into student values(null,'十个勤天','2022-10-1','男',2);
        insert into student values (default,'十个勤天','2022-10-1','男',2);

(2)部分字段插入

        insert into student(sname,ssex) values('鹭卓','男');

        insert into student(sname) values('卓沅');

(3)一次性插入数据

方式一   最常用的方式
        -- insert into 表名 (字段名..) values(值..),(值..)..

        insert into student (sname,ssex)
        values('赵一博','男'),('何浩楠','男'),('王一珩','男');

方式二 不常用了解
-- insert into select 
-- 插入表和被插入表都必须存在
create table newstu(
    xingming varchar(10),
    xingbie  varchar(10),
    classid int
);

insert into newstu(xingming,xingbie,classid)
select sname,ssex,classid from student;

# MDL
# 新增
-- insert into 表名 (字段名,字段名,...字段名)
-- values/value (值,值,...值)# 全字段的插入
# 日期 使用字符串的形式进行书写日期格式(yyyy-MM-dd HH:mm:ss)
-- 方式一
insert into student (sid,sname,birthday,ssex,classid)
values(9,'苏一','2007-1-12','男',1);
-- 方式二  1.null 2.default
insert into student values(null,'十个勤天','2022-10-1','男',2);
insert into student values (default,'十个勤天','2022-10-1','男',2);-- 部分字段插入
insert into student(sname,ssex) values('鹭卓','女');alter table student modify ssex varchar(10) not null default '保密';insert into student(sname) values('卓沅');-- 一次性插入数据
-- 方式一   最常用的方式
-- insert into 表名 (字段名..) values(值..),(值..)..
insert into student (sname,ssex)
values('赵一博','男'),('何浩楠','男'),('王一珩','男');-- 方式二 不常用了解
-- insert into select 
-- 插入表和被插入表都必须存在
create table newstu(xingming varchar(10),xingbie  varchar(10),classid int
);insert into newstu(xingming,xingbie,classid)
select sname,ssex,classid from student;-- 方式三
-- create table SELECT
-- 被插入表不能存在 -- 被插入表没有任何约束
create table stu1 select sid,sname,birthday from student;

1.2  修改数据(UPDATE)

1.2.1 修改数据的具体体现

update 表名 set 字段名=值,字段名=值....字段名=值;
【where 子句】 条件

注:-- where 子句 中的条件是对表中每一条数据进行判断,
-- 判断成立该条数据的父句去执行,
-- 判断不成立该数据的父句不执行

# MDL
-- 修改
-- update 表名 set 字段名=值,字段名=值....字段名=值;
-- 【where 子句】 条件
-- where 子句 中的条件是对表中每一条数据进行判断,
-- 判断成立该条数据的父句去执行,
-- 判断不成立该数据的父句不执行update stu1 set birthday='2024-07-20' where sname='何浩楠';
update stu1 set birthday='2024-07-20' where sname='十个勤天';-- 不等于 != <>
update newstu set classid=200 where xingbie !='男';	-- 不等于!=
update newstu set classid=300 where xingbie <>'男'; -- 不等于<>-- 小于 <
update newstu set xingbie='保密' where classid < 250;-- 区间 and连接
update newstu set xingbie='外星人' where classid >=30 and classid <= 90;-- 30 50 70 性别变为地球人
update newstu set xingbie='地球人' 
where classid = 30 or classid=50 or classid=70;-- 下面俩条件是等价的
update newstu set xingbie='火星人' 
where classid >= 30 and classid<=90;update newstu set xingbie='水星人' 
where classid between 30 and 90;

1.3 删除数据(DELETE) 

delete from 表名 【where 子句】

 1.3.1 删除数据的具体实现
#MDL
-- 删除
-- delete from 表名 【where 子句】
delete from stu1 where sname='周梅';-- 清空表,截断表
-- truncate 表名 
-- truncate 不仅删数据,还删掉了索引
-- drop 不仅删数据,删索引,表结构也删了
truncate stu1;-- delete仅仅删数据
delete from studet;
insert into student(sname) values('小美');truncate studet;

二、DQL语言

1.概念

DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句 中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多 表联查。

2.分类

(1)单表查询

针对数据库中的一张数据表进行查询,可以通过各 种查询条件和方式去做相关的优化。

(2)多表查询

针对数据库中两张或者两张以上的表同时进行查询, 依赖的手段有复杂查询和嵌套查询。

3.查询语句语法规则

DISTINCT

设定DISTINCT可以去掉重复记录

AS

表名或者字段名过长时,可以用AS关键字起别名,方便操作。

GROUP BY

按组分类显示查询出的数据。

HAVING

GROUP BY分组时依赖的分组条件

ORDER BY

将查询出来的结果集按照一定顺序排序完成。

LIMIT

限制显示查询结果的条数。

3.1 查询

#DQL
-- 所有的查询都会得到一张虚拟表
-- 最简单的查询
select 123;
select 'abc';
select 1+1;-- 从表中获取数据
-- select 字段名,字段名 from 表名
-- 不建议使用星号代替字段名-- 全字段查询
select sid,sname,birthday,ssex,classid from student;select * from student; -- 部分字段查询
select sname,ssex from student;

3.2  给字段名起别名AS  (三种都可以)

  • 字段名   as   '别名'
  • 字段名   ‘别名’
  • 字段名   别名
-- 给字段名起别名(三种都可以)
select sname as '姓名',birthday '生日', ssex 性别 from student;

3.3 添加字段

-- 添加字段
select sname,'猿究院' 学校 from student;

3.4 去重  distinct

-- 所有字段的数据要一致才会去重
select distinct ssex from student;

-- 所有字段的数据要一致才会去重
select distinct ssex from student;
select distinct sid,sname,ssex from student;

3.5  在某个特定的范围  in

-- in 可以使用到索引(常用)
select * from student
where sid in (3,5,7,9,200,300);

-- in 在某个特定的范围
3 5 7 9-- in 可以使用到索引(常用)
select * from student
where sid in (3,5,7,9,200,300);-- or 会让索引失败
select * from student
where sid =3 or sid=5 or sid=7 or sid=9 or sid=10;

3.6 模糊查询 like

-- 模糊符号
 % 任意多的任意字符,0也算任意多字符
 _ 一个任意字符

-- like 模糊查询
-- 模糊符号
-- % 任意多的任意字符,0也算任意多字符
-- _ 一个任意字符
insert into student(sname)
values('赵靓'),('赵小童'),('小童'),('赵帅哥'),('帅气的赵同学');select *from student where sname like '%赵%'    -- 跟赵有关的
select *from student where sname like '%赵'    -- 最后一个字是赵的
select *from student where sname like '赵%'  -- 姓赵select *from student where sname like '赵_';  -- 赵某
select *from student where sname like '赵__';    -- 赵某某
select *from student where sname like '赵___';    -- 赵某某某

3.7  分组 group by

-- 分组 group by
-- 男女同学各有多少人
select ssex,count(1) from student group by ssex;-- 统计各班有多少人
select classid,count(*) from student group by classid;-- 统计成绩表每个同学的总分和平均分
select sid,sum(score),avg(score) from sc group by sid;-- 查询出平均分不及格的学生(where 后面不能跟聚合函数)
select sid,sum(score),avg(score) from sc 
group by sid
having avg(score) < 60;

3.8 排序 orde  by

先写先排

  • 升序 asc 不写(默认)
  • 降序 desc 必须声明
-- order by 排序
-- 先写先排
-- 升序 asc 不写(默认)
-- 降序 desc 必须声明select * from student order by classid desc;-- 降序
select * from sc order by score desc,cid desc;-- 课程降序
select * from student order by classid asc;

3.9  分页 limit 

limit 分页 0 开始 (页码-1)*步长,步长

SELECT 字段1,字段2...字段n FROM 表 WHERE 条件 LIMIT ( 当前页码 - 1 ) * 页面容量 , 页面容量
select * from student limit 位置,步长
select * from student limit 0,3;  -- 第一行开始,到第三行

 

-- limit 分页 0 开始 (页码-1)*步长,步长
-- select * from student limit 位置,步长
select * from student limit 0,3;    --第一行元素开始,到第三行
select * from student limit 3,3;    -- 第四行开始,到第六行
select * from student limit 6,3;    -- 地七行开始,到第九行-- 应用层解决
-- select * from student limit (3-1)*3,3 错误的

3.10 NULL值查询

select * from 表名 字段 is NULL | is not NULL

其中:

• NULL代表“无值”;

• 区别于零值0和空符串;

• 只能出现在定义允许为NULL的字段;

• 须使用 IS NULL 或 IS NOT NULL 比较操作符去比较

4. WHERE条件子句

 WHERE子句的功能?

• 依赖逻辑条件对数据库的记录修改,删除或者查询

-- 带条件的查询
-- 【where 子句】
select * from student where sid=5;  -- id为5
select * from student where sid <> 5;  -- id不为5
select * from student where sid > 5;   -- id大于5
select * from student where sid between 3 and 6;  -- id在3和6之间-- 查找1班的女同学
-- 多个条件and连接
select * from student;
select * from student where classid =1 and ssex='女';-- 面试题
-- 查询年龄大于1990-1-1的学生
-- 日期本质是一个数
select * from student where birthday < '1990-01-01';

5.  聚合函数(重要)

聚合函数  非常重要  ----  把多个值变为一个值

count() 统计个数
max()  求最大值

min()  求最小值
sum()  求总和
avg()  求平均值

-- COUNT() 任何类型 不统计NULL
-- select count(字段\常量\*) from 表名;
select count(sid) from student;-- 用的主键则没有问题。
select count(classid) from student;-- 不统计空NULL的。select count(123) from student; -- 推荐!写多少无所谓,一般写1
select count(*) from student;-- 推荐
select count('a') from student;-- 不推荐使用-- sum avg min max 数值类型
select sum(score) from sc;
select avg(score) from sc;
select max(score) from sc;
select min(score) from sc;-- 统计出成绩表中一共有多少次考试,总成绩是多少,平均分,最高分,最低分
select * from sc;
select count(cid),sum(score),avg(score),max(score),min(score) from sc;

面试常问?

1.在MySQL中,delete、deop、truncate的区别?

#MDL
-- 删除
-- delete from 表名 【where 子句】
delete from stu1 where sname='周梅';-- 清空表,截断表
-- truncate 表名 
-- truncate 不仅删数据,还删掉了索引
-- drop 不仅删数据,删索引,表结构也删了
truncate stu1;-- delete仅仅删数据
delete from studet;
insert into student(sname) values('小美');truncate studet;

 2.-- 面试题      查询年龄大于1990-1-1的学生

-- 日期本质是一个数
select * from student where birthday < '1990-01-01';

3.-- 找到成绩及格的总分数排名第二的:sid总成绩

select sid,sum(score) from sc where score >= 60 group by sid order by sum(score) desc limit 1,1;

4.TRUNCATE语句和DELETE语句的异同?

• 相同点:都能删除数据,都不能修改表结构;

• 不同点:前者会重置自增计数器,后者不会;

                前者无条件约束,速度快效率高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 开源项目热度排行榜(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆Coding ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 93 分 最新华为OD机试目录…

Linux网络-配置IP

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 本来IP配置应该放在Linux安装完成的就要配置的&#xff0c;但是由于那个时候对Linux不怎么熟悉&#xff0c;所以单独列了一个…

JVM系列(一) -浅谈虚拟机的成长史

一、摘要 众所周知&#xff0c;Java 经过多年的发展&#xff0c;已经从一门单纯的计算机编程语言&#xff0c;发展成了一套成熟的软件解决方案。从互联网到企业平台&#xff0c;Java 是目前使用最广泛的编程语言。 以下这段内容是来自 Java 的官方介绍&#xff01; 从笔记本电…

图片变更检测

20240723 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; 文件监控&#xff1a; 图片占用问题&#xff1a; 源码&#xff1a; 前言&#xff1a; 由于第三方图像处理软件不能回传图片&#xff08;正常都能做&#xff0c;这里只是不想做&#xff09;&#xff0c;只能在…

Postman接口测试工具的使用

一、postman简介 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。作用&#xff1a;常用于进行接口测试。不需要安装。 特征&#xff1a;简单&#xff0c;实用&#xff0c;美观&#xff0c;大方。 二、Postman接口测试工具的使用 Postman不需要安…

MySQL的账户管理

目录 1 密码策略 1.1 查看数据库当前密码策略&#xff1a; 1.2 查看密码设置策略 1.3 密码强度检查等级解释&#xff08;validate_password.policy&#xff09; 2 新建登录账户 3 账户授权 3.1 赋权原则 3.2 常见的用户权限 3.3 查看权限 3.4 赋权语法 4 实例 4.1 示例1&#x…

python脚本制作循环执行命令行

python import subprocess import sysif __name____main__:ret 1while ret!0:ret subprocess.call(sys.argv[1:], textTrue)pack pip install pyinstaller pyinstaller --onefile loop.py 使用场景 使用上面生成的loop.exe调用cmd命令&#xff0c;执行失败了返回值&#xf…

项目实战二

Git 服务器 公共代码平台GitLab 配置gitlab 1.设置管理员帐号密码 2.让程序员传代码到20主机上需要配置&#xff1a; 创建用户 mark 1234.com 创建用户组devops 然后把mark 添加到devons 创建项目 http://192.168.88.20/devops/myproject.git 3.客户端操作&#x…

textblob文本处理、词性分析与情感分析

1 前言 textBlob 是一個简单易用的 NLP库&#xff0c;基于 NLTK 和 pattern库&#xff0c; 提供了文本处理和情感分析等功能。 安装 textblob0.18.0 nltk3.8.1测试环境&#xff1a;Python3.10.9 使用前&#xff0c;先运行下面代码先下载些文件 import nltk nltk.download…

C#医学影像管理系统源码 PACS系统源码带三维重建,全院级数字医学影像系统

C#医学影像管理系统源码 医学影像存储与传输系统源码 PACS系统源码带三维重建&#xff0c;三甲以下医院都能满足。 PACS系统模块组成 &#xff1a; 工作站&#xff1a; 分诊工作站、超声工作站、放射工作站、内镜工作站、病理工作站。 基本信息维护&#xff1a; 输入模板、输入…

Layer2区块链扩容方案(1)——总述

写在前面 这篇文章作为一个简单介绍&#xff0c;很多技术只是大致提及或者引用&#xff0c;之后会在详细学习后逐项解释。 补充知识 在了解扩容方案之前&#xff0c;我们最好了解一些相关的知识概念 EVM “EVM” 是“Ethereum Virtual Machine”&#xff08;以太坊虚拟机&…

相机的内参与外参

目录 一、相机的内参二、相机的外参 一、相机的内参 如下图所示是相机的针孔模型示意图&#xff1a; 光心O所处平面是相机坐标系(O&#xff0c;P)&#xff0c;像素平面所在坐标系为像素坐标系(O’&#xff0c;P’)。 焦距f&#xff1a;O到O’的距离 相机的内参表示的是相机坐标…

QT 信号槽机制

核心函数为 QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type Qt::AutoConnection) 参数为 1.信号发生对象 2.信号发生对象的信号 3.槽对象 4.槽对象的槽函…

嵌入式linux系统中压力测试的方法

在Linux环境下,确保系统各项资源充分且稳定地运行对任何系统管理员来说都至关重要。特别是在生产环境中,理解如何对系统资源进行基准测试和压力测试可以帮助预防未来的问题,同时也能够优化现有系统的性能。 在本文中,我们将探讨如何使用命令行工具来对Linux系统的CPU、内存…

C语言 ——— 函数指针的定义 函数指针的使用

目录 何为函数指针 打印 函数名的地址 及 &函数名的地址 函数指针的代码&#xff08;如何正确存储函数地址&#xff09; 函数指针的使用 何为函数指针 类比&#xff1a; 整型指针 - 指向整型数据的指针&#xff0c;整型指针存放的是整型数据的地址 字符指针 - 指向字…

SQLynx数据库管理工具

背景&#xff1a;业主对网络安全要求比较高&#xff0c;不提供VPN等远程工具&#xff0c;也不能开放3306端口到互联网。那怎么样运维数据库就是个难题&#xff1f;找到了SQLynx这个可以网页访问的数据库管理工具&#xff0c;给大家分享一下。 1.介绍 SQLynx原名SQL Studio&…

平面五杆机构运动学仿真matlab simulink

1、内容简介 略 89-可以交流、咨询、答疑 2、内容说明 略 ] 以 MATLAB 程序设计语言为平台 , 以平面可调五杆机构为主要研究对象 , 给定机构的尺寸参数 , 列出所 要分析机构的闭环矢量方程 , 使用 MATLAB 软件中 SIMULINK 仿真工具 , 在 SIMULINK 模型窗口下建立数…

深入浅出WebRTC—LossBasedBweV2

WebRTC 同时使用基于丢包的带宽估计算法和基于延迟的带宽估计算法那&#xff0c;能够实现更加全面和准确的带宽评估和控制。基于丢包的带宽估计算法主要依据网络中的丢包情况来动态调整带宽估计&#xff0c;以适应网络状况的变化。本文主要讲解最新 LossBasedBweV2 的实现。 1…

Docker Desktop安装

0 Preface/Foreward 1 安装 1.1 运行docker安装包 安装完Docker Desktop后&#xff0c;运行Docker Desktop&#xff0c;出现WSL 2安装不完整情况&#xff0c;具体情况如下&#xff1a; 解决方法&#xff1a;旧版 WSL 的手动安装步骤 | Microsoft Learn 也可以直接下载新的安…

2023发卡商城源码,最新自助下单彩虹云商城系统免授权无后门源码

# 彩虹自助下单系统 > PHP版本: > 7.0.1 ____ * 去除所有授权验证 * 支持自定义说说接口 * 去除后台广告与更新 * 可自定义易支付接口 ____ >安装教程: > 1、上传源代码到空间或服务器&#xff0c;并确保权限可读写。 > 2、上传完成后&#xff0c;使用浏览器…