Day76(分页查询,联合查询,数组处理之增删改DML语言)

2024-02-25 14:18

本文主要是介绍Day76(分页查询,联合查询,数组处理之增删改DML语言),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分页查询

#进阶8:分页查询 ★/*
应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求
语法:select 查询列表from 表【join type join 表2on 连接条件where 筛选条件group by 分组字段having 分组后的筛选order by 排序的字段】limit 【offset,】size;offset要显示条目的起始索引(起始索引从0开始)size 要显示的条目个数
特点:①limit语句放在查询语句的最后②公式要显示的页数 page,每页的条目数sizeselect 查询列表from 表limit (page-1)*size,size;size=10page  1	02  	103	20*/
#案例1:查询前五条员工信息SELECT*
FROMemployees
LIMIT 0, 5;SELECT*
FROMemployees
LIMIT 5;#案例2:查询第11条——第25条SELECT*
FROMemployees
LIMIT 10, 15;#案例3:有奖金的员工信息,并且工资较高的前10名显示出来SELECT*
FROMemployees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC
LIMIT 1

联合查询

#进阶9:联合查询/*
union 联合 合并:将多条查询语句的结果合并成一个结果
语法:
查询语句1
union
查询语句2
union
...
应用场景:
要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时
特点:★
1、要求多条查询语句的查询列数是一致的!
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字默认去重,如果使用union all 可以包含重复项
*/
#引入的案例:查询部门编号>90或邮箱包含a的员工信息SELECT*
FROMemployees
WHERE department_id > 90
UNION
SELECT*
FROMemployees
WHERE email LIKE '%a%';#案例:查询中国用户中男性的信息以及外国用户中年男性的用户信息SELECTid,cname
FROMt_ca
WHERE csex = '男'
UNION
ALL
SELECTt_id,tname
FROMt_ua
WHERE tGender = 'male';

数组处理之增删改DML语言

#DML语言/*
数据操作语言:
插入:insert
修改:update
删除:delete
*/
#一、插入语句
#方式一:经典的插入/*
语法:
insert into 表名(列名,...) values(值1,...);
*/
SELECT*
FROMbeauty;#1.插入的值的类型要与列的类型一致或兼容INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id
)
VALUES(13,'唐艺昕','女','1990-4-23','1898888888',9,2);#2.不可以为null的列必须插入值。可以为null的列如何插入值?
#方式一:INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id
)
VALUES(13,'佟丽娅','女','1992-2-2',13988892827,NULL,1);#方式二:INSERT INTO beauty (id, NAME, phone)
VALUES(14, '董璇', '14819389467');#3.列的顺序是否可以调换INSERT INTO beauty (phone, NAME, id)
VALUES(15892848245, '刘亦菲', 16);#4.列数和值的个数必须一致INSERT INTO beauty (phone, id, NAME, photo)
VALUES(18211992288, 17, '范文芳', NULL);#5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致INSERT INTO beauty
VALUES(18,'迪丽热巴','女','1993-3-3',19387276364,NULL,NULL);#方式二:/*
语法:
insert into 表名
set 列名=值,列名=值,...
*/
INSERT INTO beauty SET id = 19,
NAME = '刘涛',
phone = 14890348569;#两种方式大pk ★
#1、方式一支持插入多行,方式二不支持INSERT INTO beauty (id, NAME, phone)
VALUES(20, '景甜', 15208472824),(21, '张柏芝', 15493837586);#2、方式一支持子查询,方式二不支持INSERT INTO beauty (id, NAME, phone, boyfriend_id)
SELECT22,'杨丞琳',15394854758,6;INSERT INTO beauty (id, NAME, phone, boyfriend_id)
SELECT23,'女神',14444444444,id
FROMboys
WHERE boyName = '张无忌';#二、修改语句/*
1.修改单表的记录★
语法:
update 表名
set 列=新值,列=新值,...
where 筛选条件;
2.修改多表的记录【补充】
语法:
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
*/
#1.修改单表的记录
#案例1:修改beauty表中姓董的女神的电话为13899888899UPDATEbeauty
SETphone = '13899888899'
WHERE `name` LIKE '董%';#案例2:修改boys表中id好为2的名称为张飞,魅力值 10UPDATEboys
SETuserCP = 10,boyName = '张飞'
WHERE id = 2;#2.修改多表的记录
#案例 1:修改张无忌的女朋友的手机号为114UPDATEbeauty bLEFT JOIN boys boON b.`boyfriend_id` = bo.`id` SET phone = 114
WHERE bo.`boyName` = '张无忌';#案例2:修改没有男朋友的女神的男朋友编号都为2号UPDATEbeauty bLEFT JOIN boys boON b.`boyfriend_id` = bo.`id` SET b.`boyfriend_id` = 2
WHERE bo.`id` IS NULL;#三、删除语句/*
方式一:delete
语法:
1、单表的删除【★】
delete from 表名 where 筛选条件
2、多表的删除【补充】
sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
方式二:truncate
语法:truncate table 表名;
*/
#方式一:delete
#1.单表的删除
#案例:删除手机号以9结尾的女神信息DELETE
FROMbeauty
WHERE phone LIKE '%9';#2.多表的删除
#案例:删除黄晓明的女朋友的信息DELETEb
FROMbeauty bLEFT JOIN boys boON b.boyfriend_id = bo.id
WHERE bo.boyName = '黄晓明';#案例:删除黄晓明的信息以及他女朋友的信息DELETEb,bo
FROMbeauty bINNER JOIN boys boON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '黄晓明';#方式二:truncate语句
#案例:将魅力值>100的男神信息删除TRUNCATE TABLE aaaa;#delete pk truncate【面试题★】/*
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚.
*/
#案例讲解
#1.	运行以下脚本创建表my_employeesUSE myemployees;CREATE TABLE my_employees (Id INT (10),First_name VARCHAR (10),Last_name VARCHAR (10),Userid VARCHAR (10),Salary DOUBLE (10, 2)
);CREATE TABLE users (id INT,userid VARCHAR (10),department_id INT
);#2.	显示表my_employees的结构DESC my_employees;#3.	向my_employees表中插入下列数据/*
ID	FIRST_NAME	LAST_NAME	USERID	SALARY
1	patel		Ralph		Rpatel	895
2	Dancs		Betty		Bdancs	860
3	Biri		Ben		Bbiri	1100
4	Newman		Chad		Cnewman	750
5	Ropeburn	Audrey		Aropebur	1550
*/
#方式一:INSERT INTO my_employees
VALUES(1, 'patel', 'Ralph', 'Rpatel', 895),(2, 'dancs', 'Betty', '8dancs', 860),(3, 'Biri', 'Ben', 'Bbiri', 1100),(4, 'Newman', 'Chad', 'Cnewman', 750),(5,'Ropeburn','Audrey','Aropebur',1550);#方式二:INSERT INTO my_employees
SELECT1,'patel','Ralph','Rpatel',895
UNION
SELECT2,'Dancs','Betty','Bdancs',860
UNION
SELECT3,'Biri','Ben','Bbiri',1100
UNION
SELECT4,'Newman','Chad','Cnewman',750
UNION
SELECT5,'Ropeburn','Audrey','Aropebur',1550;#4.	 向users表中插入数据/*
1	Rpatel	10
2	Bdancs	10
3	Bbiri	20
4	Cnewman	30
5	Aropebur	40
*/
INSERT INTO users
VALUES(1, 'Rpatel', 10),(2, 'Bdancs', 10),(3, 'Bbiri', 20);#5.将3号员工的last_name修改为“Drelxer”UPDATEmy_employees
SETlast_name = 'Drelxer'
WHERE id = 3;#6.将所有工资少于900的员工的工资修改为1000UPDATEmy_employees
SETsalary = 1000
WHERE salary < 900;#7.将userid 为Bbiri的user表和my_employees表的记录全部删除DELETEu,m
FROMusers uINNER JOIN my_employees mON m.`Userid` = u.userid
WHERE u.`userid` = 'BBiri';#8.删除所有数据DELETE
FROMusers;DELETE
FROMmy_employees;#9.检查所作的修正SELECT*
FROMmy_employees;SELECT*
FROMusers;#10.清空表my_employeesTRUNCATE TABLE my_employees;

这篇关于Day76(分页查询,联合查询,数组处理之增删改DML语言)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745739

相关文章

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优