本文主要是介绍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语言)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!