MySql复习知识及扩展内容

news2024/11/24 4:57:14

DDL操作库和表

-- todo ------------操作库----------------------------------
-- 创建库
create database if not exists day10 charset utf8;
create database if not exists day11 char set gbk;
-- 使用库
use day10;
-- 查询库
show databases ;
-- 删除库
drop database day11;
​
-- todo ------------操作表----------------------------------
-- 创建表-- 知道表结构:分析业务得到:设计一个存储学生信息的表.
/*
    学号   --(列) (字段)
    姓名
    年龄
    手机号
    性别
    籍贯
    生日
*/
create table student (
    id int primary key auto_increment,
    name varchar(20),
    age int,
    phone varchar(20),
    gender varchar(10),
    address varchar(20),
    birthday date
);
​
-- 查询表
show tables ;
-- 查询表的字段,类型,约束
desc student ;
-- 查询建表语句
show create table student;
​
​
-- 修改表
-- 修改表的列--添加列 -- 添加入学日期
alter table student add join_date date ;
-- 修改表的列--删除列
alter table student drop join_date;
-- 修改表的列--修改列的类型
alter table student modify name varchar(10);
-- 修改表的列--修改列的约束 -- name不能为空
alter table student modify name varchar(10) not null;
-- 修改表的列--修改列名 gender -sex
alter table student change gender sex varchar(10);
-- 修改表名  student--> stu
rename table student to stu;
​
-- 删除表
drop table stu;

DML操作数据

-- todo ------------操作数据 增删改----------------------------------
-- 添加一条数要求全列值插入.
insert into stu values (1,'tom',19,'17799889988','男','北京','1999-09-09');
-- 有主键自增的情况下可以主键可以给null值.实际上存储的是自增长的值.
insert into stu values (null,'jerry',18,'17799889966','男','北京','1999-09-10');
​
-- 添加一条数据.要求 只插入前3列
insert into stu (id, name, age) values (null,'rose',18);
​
-- 一次添加2条数据到表中.
insert into stu values (null,'张三',18,'17799889911','男','北京','1999-09-10')
                     ,(null,'李四',18,'17799889922','男','北京','1999-09-10');
-- ------------------------------------------------------------------
-- rose性别改为女
update stu set sex = '女' where name = 'rose';
​
-- 删除rose这个记录
delete from stu where name = 'rose';
​
-- 修改所有人的地址是上海
update stu set address = '上海';

DQL单表查询

create table product(
    pid int primary key auto_increment,
    pname varchar(20),
    price double,
    category_id varchar(20)
);
​
insert into product values
(1, '联想', 5000, 'c001'),
(2, '海尔', 3000, 'c001'),
(3, '雷神', 5000, 'c001'),
(4,'杰克琼斯',800, 'c002'),
(5, '真维斯', 200,'c002'),
(6,'花花公子',440,'c002'),
(7,'劲霸',2000,'c002'),
(8,'香奈儿',800,'c003'),
(9,'相宜本草',200,'c003'),
(10,'面霸',5,'c003'),
(11,'好想你枣',56,'c004'),
(12,'香飘飘奶茶',1,'c005'),
(13,'海澜之家',1000,'c002');
基本查询
#### 基本查询
select * from product;-- 查询所有记录的所有列.
select pid,pname,price  from product;-- 指定列查询
select distinct price, pname from product;-- 两个列联合去重
select distinct category_id from product; -- 查询商品不同的分类
条件查询
#### 条件查询  > < >= <= != <>
select * from product where pid > 3;
-- 查询分类为c001的商品
select * from product where category_id = 'c001';
范围查询
#### 范围查询
-- 连续的范围 -- 查询价格在500-800之间的商品
select * from product where price between 500 and 800;
select * from product where price >=500 and price <= 800;
​
-- 非连续的范围 --查询pid是c001和c003商品
select * from product where category_id in ('c001','c003');
select * from product where category_id= 'c001' or category_id= 'c003';
模糊查询
#### 模糊查询
/**
  列 like 符号 (% 和 _)
  %:表示0或者多个任意字符
  _:表示一个任意字符
 */
-- 需求:查询商品名字包含香的.
select * from product where pname like '%香%';
-- 需求:查询商品名字以香开头的商品.
select * from product where pname like '香%';
-- 需求:查询商品名字以香开头的并且名字是3个字的.
select * from product where pname like '香__';
非空查询
#### 非空查询
-- 查询价格不是空的商品
select * from product where price is not null;
​
-- 查询价格是空的商品
select * from product where price is null;
select * from product where price = null;
排序查询
#### 排序查询
-- 按照价格升序排序
select * from product order by price;
select * from product order by price asc;-- 默认是asc
​
-- 按照价格降序排序
select * from product order by price desc;
​
-- 多字段排序 todo 第一排序字段内容一致此时第二排序字段才会生效.
-- 先按照价格降序排序.在按照id降序排序
select * from product order by price desc , pid desc ;
聚合查询
#### 聚合函数查询 max,min,avg,sum,count
select max(price) from product;
select min(price) from product;
select max(price),min(price),avg(price) from product;
​
select avg(price) from product where  pid >= 10;-- todo avg遇到null值会忽略该条记录.参数平均值的人就会少一个.
​
# sum 是求和 对单列的值进行累加
select sum(price) from product where pid >= 10;-- sum遇到null值会当做0来计算.
#count 是求记录数.(统计有几条记录)
select count(price) from product where pid >= 10;-- todo count遇到null会忽略该条数据.
select count(*) from product where pid >= 10;-- 会参考所有的列.只要有一个列不是null 就会统计.
select count(pid) from product where pid >= 10;-- 主键不会为null
select count(1) from product where pid >= 10;-- 有一条记录无论列是什么值都会统计该条记录.
分页查询
#### 分页查询  limit [m],n  (m起始点[默认0],n是个数)
​
-- 查询第一页的数据.每页展示5条.
select * from product limit 0,5;
​
-- 查询前3条记录
select * from product limit 3;-- 省略了m值.默认是0
​
-- 查询第3页的数据.每页展示5条. m的值需要计算 > 公式: (当前页码-1) * 每页展示个数  ==> (3-1) * 5 = 10
select * from product limit 10,5;
分组查询
#### 分组查询 group by [having 过滤条件]
/**
  分组思想:
        1.确定要分组的列.(按照什么来分) (一般不要按照主键分组)
        2.分组后你想干什么...
           2.1聚合统计计算 (聚合函数)
           2.2去重查询
 */
-- 不同价格的商品有几个
select price, count(1) from product group by price;
-- 不同分类的商品中那个商品最贵.
select category_id,max(price) from product group by category_id;
-- 查询有几个分类
select distinct category_id from product; -- distinct去重
select category_id from product group by category_id; -- group by 去重
​
-- -- 不同价格的商品个数大于1的有哪些?
select price, count(1) ct from product group by price having ct > 1;
# select price, count(1) ct from product where ct > 1 group by price ; -- where 只能对表中的列进行过滤.

DQL多表关联查询

部门表: 部门编号,部门名称,部门位置
员工表: 员工编号,员工姓名,员工年龄,所属部门
-- todo ------------查询数据 多表查询----------------------------------
# 部门表: 部门编号,部门名称,部门位置
create table dept (
    id int primary key auto_increment,
    dname varchar(20),
    addr varchar(30)
);
​
# 员工表: 员工编号,员工姓名,员工年龄,所属部门
create table emp(
    id int primary key auto_increment,
    ename varchar(20),
    age int,
    dept_id int,
    foreign key (dept_id) references dept(id)
);
​
-- 插入数据;
insert into dept values (null,'财务部','上海'),(null,'人事部','北京'),(null,'研发部','北京');
insert into emp values (null,'张三',25,1),(null,'李四',25,2),(null,'王五',25,2),(null,'赵六',25,null);
交叉连接(笛卡尔积)

两个表相乘.

##### 交叉连接(笛卡尔积)
select * from dept cross join emp;
select * from dept , emp;
内连接
##### 内连接 -- 查询的是两个表的交集.
select * from dept d inner join emp e on d.id = e.dept_id;
​
-- 此时没有员工的部门和没有部门的员工都不能查出.

左连接
##### 左连接  -- 左表的全部和左右内俩接的结果
select * from dept d left join emp e on d.id = e.dept_id;
-- 此时员工表中没有部门的员工不能出现.

右连接
##### 右连接 -- 右表的全部和右内俩接的结果
select * from dept d right join emp e on d.id = e.dept_id;
​
-- 此时部门表中没有员工的部门信息不能出现.

DQL子查询

子查询的结果是1个值(单行单列)
子查询的结果是多个值(多行单列)
子查询的结果是一个表(多行多列)
子查询也叫嵌套查询,把一个大的问题拆分成为多个小的问题,小问题解决了大问题也随之解决.
-- todo  子查询 ----------------------------------
##### 子查询的结果是1个值(单行单列)
-- 查询价格最高的产品名字
select max(price)
from product; -- 5000
select *
from product
where price = (select max(price) from product);
​
##### 子查询的结果是多个值(多行单列)
-- 查询财务部和人事部的所有员工.
select id
from dept
where dname in ('财务部', '人事部');
select *
from emp
where dept_id in (select id from dept where dname in ('财务部', '人事部'));
​
​
##### 子查询的结果是一个表(多行多列)
-- 高于员工平均年龄的员工和部门信息.
select *
from emp
where age > (select avg(age) from emp);
​
select *
from dept d
         join (select * from emp where age > (select avg(age) from emp)) e on d.id = e.dept_id;

DQL 自关联查询

案例1:

-- 创建一个地区表
CREATE TABLE areas(
    id VARCHAR(30) NOT NULL PRIMARY KEY, -- 地区ID
    title VARCHAR(30), -- 地区名称
    pid VARCHAR(30) -- 地区的上级地区的ID
);
insert into areas
values (1, '河南省', null),
       (2, '郑州', 1),
       (3, '洛阳', 1),
       (4, '新乡', 1);
-- 示例1:查询'河南省'下的所有市的信息
​
select a1.title, a2.title
from areas a1
         join areas a2 on a1.id = a2.pid;

案例2:

-- 【自关联扩展:自关联的妙用】
CREATE TABLE sales (
    month INT NOT NULL, -- 月份
    revenue DECIMAL(10, 2) -- 销售额
);
​
INSERT INTO sales
VALUES
    (1, 1000),
    (2, 800),
    (3, 1200),
    (4, 2000),
    (5, 1800),
    (6, 5000),
    (7, 3000),
    (8, 2500),
    (9, 1600),
    (10, 2200),
    (11, 900),
    (12, 4600);
​
-- 示例1:查询每个月的销售额和前一个月的销售额的差值
-- 查询结果字段:
--  月份、当前月销售额、前一个月销售额,当前月销售额和前一个月销售额的差
​
SELECT
    A.month, -- 月份
    A.revenue, -- 当月销售额
    B.revenue, -- 上个月销售额
    -- 计算当前销售额和上个月销售额的差值
    A.revenue - B.revenue AS `difference`
FROM sales A
JOIN sales B
ON A.month=B.month+1;
​
-- 示例2:查询截止到每个月的销售额。
-- 查询结果字段:
-- 月份,截止当前的累计销售额
​
SELECT
    A.month,
    SUM(B.revenue) AS `revenue`
FROM sales A
JOIN sales B
ON A.month >= B.month
GROUP BY A.month;

DQL窗口函数

create table employee
(
    dname    varchar(20), -- 部门名
    eid      varchar(20),
    ename    varchar(20),
    hiredate date,        -- 入职日期
    salary   double       -- 薪资
);
insert into employee
values ('研发部', '1001', '刘备', '2021-11-01', 3000);
insert into employee
values ('研发部', '1002', '关羽', '2021-11-02', 5000);
insert into employee
values ('研发部', '1003', '张飞', '2021-11-03', 7000);
insert into employee
values ('研发部', '1004', '赵云', '2021-11-04', 7000);
insert into employee
values ('研发部', '1005', '马超', '2021-11-05', 4000);
insert into employee
values ('研发部', '1006', '黄忠', '2021-11-06', 4000);
​
insert into employee
values ('销售部', '1007', '曹操', '2021-11-01', 2000);
insert into employee
values ('销售部', '1008', '许褚', '2021-11-02', 3000);
insert into employee
values ('销售部', '1009', '典韦', '2021-11-03', 5000);
insert into employee
values ('销售部', '1010', '张辽', '2021-11-04', 6000);
insert into employee
values ('销售部', '1011', '徐晃', '2021-11-05', 9000);
insert into employee
values ('销售部', '1012', '曹洪', '2021-11-06', 6000);
序号函数

rank(),row_number(),denserank()

-- 需求: 部门分组后按照薪资排序
select
    *,
    rank() over (partition by dname order by salary) rn
from employee;
-- 需求: 求出每个部门薪资排在前三名的员工- 分组求TOPN [重点]
select * from (select
                 *,
                 rank() over (partition by dname order by salary) rn
                from employee) t1
         where t1.rn <= 3;
聚合函数

sum(),count(),avg(),max(),nin()

#### 聚合函数
# sum(),count(),avg(),max(),nin()
select
    *,
    sum(salary) over () c1,
    count(1) over () c2,
    avg(salary) over () c3,
    max(salary) over () c4,
    min(salary) over () c5
from employee;
​
select
    *,
    sum(salary) over (partition by dname) c1,
    count(1) over (partition by dname) c2,
    avg(salary) over (partition by dname) c3,
    max(salary) over (partition by dname) c4,
    min(salary) over (partition by dname) c5
from employee;
​
-- 显示每个人的工资和平均工资
select
    ename,
    salary,
    avg(salary) over () c1
from employee;
前后函数

lag(),lead()

#### 前后函数
# lag(),lead()
select
    *,
    lag(hiredate,1,'未找到') over (partition by dname order by hiredate) lg,
    lead(hiredate,1,'未找到') over (partition by dname order by hiredate) ld
from employee;
​
# 需求1 : 按照部门分组,列出员工薪资和比他薪资靠前的一名员工的薪资.找不到就显示'已是最高薪资'
select * ,
       lag(salary,1,'已是最高薪资') over (partition by dname order by salary desc ) lg
from employee;
头尾函数

first_value(),last_value()

#### 头尾函数
# first_value(),last_value()
select *,
       first_value(hiredate) over (partition by dname ) f1,
       last_value(hiredate) over (partition by dname ) f2
from employee;
​
-- 需求1 : 统计各部门全部数据.按照日期排序查询第1个入职和最后1个入职员工的薪资
select *,
       first_value(salary) over (partition by dname order by hiredate rows between unbounded preceding and  unbounded following) f1,
       last_value(salary) over (partition by dname order by hiredate rows between unbounded preceding and  unbounded following) l1
from employee;
其它函数

nth_value(), ntile()

# #### 其它函数
# nth_value(), ntile()
select *,
       nth_value(salary,3) over (partition by dname) nth
       from employee;
​
-- ntile(5) 把窗口内的数据分为5个等份,不同的等份之间差值为1
select *,
       ntile(5) over () nth
       from employee;
​
-- 需求1 :查询每个部门截止目前薪资排在第二和第三的员工信息
select *,
       nth_value(salary,2) over (partition by dname order by salary desc rows between unbounded preceding and current row ) nth1,
       nth_value(salary,3) over (partition by dname order by salary desc rows between unbounded preceding and current row) nth2
from employee;
​
-- 需求2 :ntile()根据入职日期将每个部门的员工分成3组 .
select *,
       ntile(3) over (partition by dname order by hiredate) nt
from employee;
​
​
-- 需求3 :获取每组的第一份数据.抽样查询
with t1 as ( select *,
       ntile(3) over (partition by dname order by hiredate) nt
from employee )
select * from t1 where t1.nt = 1;

扩展知识

知识点1:窗口函数-自定义 window frame【掌握】

CREATE TABLE `tb_sales` (
  `month` int(2) NOT NULL,
  `sales` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `tb_sales` VALUES (1,10),(2,23),(3,14),(4,5),(5,32),(6,22),(7,52),(8,12),(9,19),(10,36),(11,33),(12,69);

思考题

现有一张某年度的月销量信息表 tb_sales,数据如下:

如何计算截止到每个月的累计销量?1月:1月销量,2月:1月销量+2月销量,3月:1月销量+2月销量+3月销量,依次类推

分区数据范围和window frame数据范围

在使用窗口函数处理表中的每行数据时,每行数据关联的数据有两种:

1)每行数据关联的分区数据

  • OVER()中什么都不写时,整张表默认是一个分区

  • OVER(PARTITION BY 列名, ...):整张表按照指定的列被进行了分区

2)每行数据关联的window frame数据

  • 每行关联的window frame数据范围 <= 每行关联的分区数据范围

  • window frame数据范围是分区数据范围的子集

目前我们所学的窗口函数中,有些窗口函数作用在分区上,有些函数作用在window frame上:

  • 聚合函数(SUM、AVG、COUNT、MAX、MIN)作用于每行关联的window frame数据上

  • 排名函数(RANK、DENSE_RANK、ROW_NUMBER)作用于每行关联的分区数据上

自定义 window frame 范围

自定义 window frame 范围有两种方式: ROWSRANGE

SELECT
    字段,
    ...,
    <window function> OVER (
      PARTITION BY 列名, ...
      ORDER BY 列名, ...
      [ROWS|RANGE] BETWEEN 上限 AND 下限
    )
FROM 表名;
  • PARTITION BY 列名, ...:按照指定的列,对整张表的数据进行分区

  • ORDER BY 列名, ...:按照指定的列,对每个分区内的数据进行排序

  • [ROWS|RANGE] BETWEEN 上限 AND 下限:在排序之后的分区数据内,设置每行关联的window frame数据范围

上限和下限的设置

  • UNBOUNDED PRECEDING:对上限无限制

  • PRECEDING: 当前行之前的 n 行 ( n 表示具体数字如:5 PRECEDING

  • CURRENT ROW:仅当前行

  • FOLLOWING:当前行之后的 n 行 ( n 表示具体数字如:5 FOLLOWING

  • UNBOUNDED FOLLOWING:对下限无限制

  • 注意:上限需要在下限之前,比如:ROWS BETWEEN CURRENT ROW AND UNBOUNDED PRECEDING 是错误的

-- 需求:计算截止到每个月的累计销量。1月:1月销量,2月:1月销量+2月销量,3月:1月销量+2月销量+3月销量,依次类推
SELECT
    month,
    sales,
    SUM(sales) OVER(
        # 按照 month 对每个分区(注:此处就一个分区->整张表)数据进行排序
        ORDER BY month
        # 指定每行关联分区的 window frame 范围
        # UNBOUNDED PRECEDING:上限不限制
        # CURRENT ROW:当前行
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS `running_total`
FROM tb_sales;

window frame定义的简略写法

自定义 window frame 的边界时,如果使用了CURRENT ROW作为上边界或者下边界,可以使用如下简略写法:

  • ROWS UNBOUNDED PRECEDING 等价于 BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

  • ROWS n PRECEDING 等价于 BETWEEN n PRECEDING AND CURRENT ROW

  • ROWS CURRENT ROW 等价于 BETWEEN CURRENT ROW AND CURRENT ROW

  • 注意,简略写法不适合FOLLOWING的情况

ROWS和RANGE的区别

ROWS和RANGE关键字,都可以用来自定义 windowframe 范围:

ROWS BETWEEN 上限 AND 下限
RANGE BETWEEN 上限 AND 下限

但两者区别如下:

  • ROWS是根据分区数据排序之后,每一行的 row_number 确定每行关联的 window frame 范围的

    CURRENT ROW:仅代表当前行
    ​
    
    # 假设某一行数据的 row_number 为5,ROWS自定义window frame如下:
    ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING
    # 则这一行关联的window frame是:5-2 <= row_number <= 5+2 的数据

  • RANGE是根据分区数据排序之后,每一行的排序列的值确实每行关联的 window frame 范围的

    CURRENT ROW: 代表和当前行排序列的值相同的所有行
    ​
    
    # 假设某一行排序列的值为5,RNAGE自定义window frame如下:
    RANGE BETWEEN 2 PRECEDING AND 2 FOLLOWING
    # 则这一行关联的window frame是:5-2 <= 排序列的值 <= 5+2 的数据

默认的window frame

在 OVER 中只要添加了 ORDER BY,在没有写ROWS或RANGE的情况下,会有一个默认的 window frame范围:

  • RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

insert into tb_sales values (4,5),(4,10);-- 加入重复的月份
​
-- 需求:计算截止到每个月的累计销量。1月:1月销量,2月:1月销量+2月销量,3月:1月销量+2月销量+3月销量,依次类推
SELECT
    month,
    sales,
    SUM(sales) OVER(
        # 按照 month 对每个分区(注:此处就一个分区->整张表)数据进行排序
        ORDER BY month
        # OVER 中添加了 ORDER BY 之后,默认的 window frame 范围
        # RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS `running_total`
FROM tb_sales;

知识点2:SQL语句的执行顺序

SQL语句的执行顺序如下

FROM > JOIN > ON > WHERE > GROUP BY > 聚合函数 > HAVING > 窗口函数 > SELECT > DISTINCT > ORDER BY > LIMIT

1) FROM
2) JOIN
3) ON
4) WHERE
5) GROUP BY
6) 聚合函数
7) HAVING
8) 窗口函数
9) SELECT
10) DISTINCT【去重】
11) ORDER BY
12) LIMIT
-------------------------------------------------------------------------
SELECT ⑨
    [DISTINCT] 字段, ⑩
    ...,
    聚合函数(字段), ⑥
    窗口函数 ⑧
FROM 表1 ①
JOIN 表2 ②
ON 关联条件 ③
WHERE 条件 ④
GROUP BY 分组字段, ... ⑤
HAVING 条件 ⑦
ORDER BY 排序字段, ... ⑪
LIMIT M, N; ⑫

知识点3:行转列

-- 创建 score 学生成绩表
CREATE TABLE score
(
    `学号` VARCHAR(24),
    `科目` VARCHAR(24),
    `成绩` INT
);
​
-- 给 score 表添加测试表
INSERT INTO score
VALUES ('s001', '语文', 90),
       ('s001', '数学', 100),
       ('s001', '英语', 93),
       ('s002', '语文', 98),
       ('s002', '数学', 99),
       ('s002', '英语', 96);
​
SELECT * FROM score;
-- 科目 行转列
SELECT 学号,
         min(CASE when 科目 = '语文' THEN 成绩 END) '语文',
         min(CASE when 科目 = '数学' THEN 成绩 END) '数学',
         min(CASE when 科目 = '英语' THEN 成绩 END) '英语'
FROM score GROUP BY 1;

知识点4:列转行

-- 快速建表,并插入数据
CREATE table score2
SELECT 学号,
         min(CASE when 科目 = '语文' THEN 成绩 END) '语文',
         min(CASE when 科目 = '数学' THEN 成绩 END) '数学',
         min(CASE when 科目 = '英语' THEN 成绩 END) '英语'
FROM score GROUP BY 1;

​
-- 列转行
-- UNION合并:奇技淫巧
SELECT  学号,'语文' as '科目',语文 as '成绩' FROM score2 -- 语文
union
SELECT  学号,'数学' as '科目',数学 as '成绩' FROM score2 -- 数学
union
SELECT  学号,'英语' as '科目',英语 as '成绩' FROM score2;-- 英语
​
​


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

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

相关文章

mybatisplus整合springboot3出错(springboot多模块开发)

1.mybatisplus版本太低或者maven导入没用如下的 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.5</version></dependency>2.maven导入冲突了&#xf…

千万不要再用varchar类型来存ip地址了!

对于一个ip地址&#xff0c;比如“192.168.0.110”&#xff0c;由于存在“.”号&#xff0c;所以大部分人都会用varchar类型的字段来进行存储&#xff0c;但是大家有没有想过&#xff0c;对于这样一个字符串&#xff0c;每个字符占用一个字节&#xff0c;那么就需要占用13个字节…

使用ChatGPT高级学术应用SciSpace的技术快速精准的搜索文献论文

在学术研究领域,文献综述是非常重要的一个部分。它不仅是对已有研究的梳理和总结,更是对新研究方向的探索和定位。面对浩瀚的学术文献海洋,传统的检索方法往往显得力不从心,既耗时又低效。 随着ChatGPT技术的突破,我们终于可以摆脱这一束缚,迎来一种全新的、高效的文献检…

程序员 -买房历险记

快生日了&#xff0c;自己又又 涨了一岁 买房 真不是 一件简单的事。 一. 买房 三大核心问题 1.一手/二手 房 2.哪个城市买 3.哪个地方买 我调研的是 三四线城市&#xff08;俺的老家&#xff09; 二. 买房需要 花多少&#xff08;看得到/看不到&#xff09; 比如 4000元…

SEO(搜索引擎优化)指南

SEO&#xff08;Search Engine Optimization&#xff09;是通过优化网站内容、结构和外部链接&#xff0c;提升网页在搜索引擎结果中的排名&#xff0c;从而增加网站流量的过程。SEO 涉及多个层面&#xff0c;包括技术 SEO、内容优化、外部链接建设等。以下是 SEO 的核心优化策…

HTML图形

HTML图形 1. HTML5 Canvas2.HTML5 内联 SVG3.HTML 5 Canvas vs. SVG 1. HTML5 Canvas HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域&#xff0c;您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 1、创建…

『网络游戏』窗口基类【06】

创建脚本&#xff1a;WindowRoot.cs 编写脚本&#xff1a; 修改脚本&#xff1a;LoginWnd.cs 修改脚本&#xff1a;LoadingWnd.cs 修改脚本&#xff1a;ResSvc.cs 修改脚本&#xff1a;LoginSys.cs 运行项目 - 功能不变 本章结束

springboot整合mybatis案例

springboot通过整合mybatis来实现数据的呈现。 一、springInitializer创建项目 注意&#xff1a;不选择也可以&#xff0c;创建项目后在pom.xml配置文件中引入依赖 <!-- mybatis起步依赖--><dependency><groupId>org.mybatis</groupId><art…

帕金森患者必看:十大忌口食物清单,守护健康从饮食做起!

一、高脂肪肉类 忌口理由&#xff1a;高脂肪肉类如肥肉、五花肉等&#xff0c;含有大量饱和脂肪&#xff0c;长期摄入会增加心血管疾病风险&#xff0c;而心血管疾病是帕金森病患者常见的并发症之一。建议选择瘦肉、鱼类等低脂高蛋白的食物。 二、腌制及加工食品 忌口理由&a…

pnpm在monorepo架构下不能引用其他模块的问题

一、研究背景 monorepo架构项目目录结构&#xff1a; - common- index.ts- ... - main- index.ts- ... - web- vue-demo- ... pnpm在monorepo架构下使用以下命令 pnpm -F main add common # or pnpm --filter main add common 并不能在main/index.ts中使用common/index.ts…

23.第二阶段x86游戏实战2-背包遍历(OD卡死解决办法,背包数量基址)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

数字教学知识库:教师备课的好帮手

在信息技术飞速发展的今天&#xff0c;教育领域正经历着前所未有的变革。其中&#xff0c;数字教学知识库的兴起&#xff0c;为教师备课提供了强有力的支持&#xff0c;成为了他们不可或缺的好帮手。本文将探讨数字教学知识库的定义、特点、构建方式以及其在教师备课中的应用&a…

html转pdf实现超清打印

jsPDFhtml2canvas实现html转pdf下载打印_pdf.addimage-CSDN博客 上篇文章中&#xff0c;已经实现了大多数场景下的打印&#xff0c;但是若是对pdf的清晰度要求较高&#xff0c;上述的方法将达不到你的要求&#xff0c;下面我将告诉大家一种超清打印&#xff0c;无缩放&#xf…

长沙近期学术会议(ICRAIC 2024)

第四届机器人、自动化与智能控制国际会议&#xff08;ICRAIC 2024&#xff09;由湖南第一师范学院主办&#xff0c;南京师范大学、山东女子学院、爱迩思出版社&#xff08;ELSP&#xff09;协办&#xff0c;会议将于12月6日至9日在湖南长沙隆重举行。ICRAIC系列会议自创办以来&…

家里养有宠物应该用哪款宠物空气净化器比较好?哪款最能吸毛?

这不是国庆节刚过吗&#xff0c;我的小猫终于是平安的度过了在农村生活的时光&#xff0c;之前还担心会不会被爸妈嫌弃&#xff0c;这下好了&#xff0c;嫌弃也过了国庆节。 但是一把猫咪带回出租房&#xff0c;由于几天不在房子里待&#xff0c;猫咪对熟悉的环境又特别激动&a…

国产长芯微CST52832高集成度低功耗的蓝牙SOC芯片完全P2P替代nRF52832成本更低,应用于智能门锁,功耗更低且系统稳定性更高

描述 CST52832是一款高集成度的低功耗蓝牙SCO芯片&#xff0c;基于低功耗蓝牙5.0协议栈。芯片内置32位 Cortex-M0 CPU、512KB Flash、138KB SRAM&#xff0c;具有国际领先的低功耗、通信距离和抗干扰性能&#xff0c;同时实现了更低成本。 特性&#xff1a; 处理器 ARM Corte…

基于springboot的家政服务管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的家政服务管理系统1拥有三种角色 管理员&#xff1a;用户管理、服务管理、评价管理、预约管理、分配管理等 用户&#xff1a;登录注册、预约服务、取消服务、评价等 服…

傅里叶分析之掐死教程(完整版)更新于2014.06.06

作 者&#xff1a;韩 昊 知 乎&#xff1a;Heinrich 微 博&#xff1a;花生油工人 知乎专栏&#xff1a;与时间无关的故事 谨以此文献给大连海事大学的吴楠老师&#xff0c;柳晓鸣老师&#xff0c;王新年老师以及张晶泊老师。 转载的同学请保留上面这句话&#xff0c;谢谢。如果…

许昌文旅助手:AI智能体在文旅领域的创新应用

哈哈&#xff0c;大家好&#xff0c;我是王帅旭&#xff0c;来自大禹智库&#xff0c;也是《实战AI智能体》一书的作者。今天&#xff0c;咱们就来聊聊一个超级有趣的案例——许昌文旅助手&#xff0c;看看AI智能体是如何在文旅领域大放异彩的&#xff01; 无限拓展的能力集&am…

大数据开发--1.3 Linux的常用命令大全

目录 一. 终端命令格式 命令格式 说明&#xff1a; 二. 显示文件列表命令 -ls 作用 格式 ls常用选项 案例 三. 目录操作命令 -pwd 作用 格式 案例 四. 目录操作命令 -cd 作用 格式 案例 五. 目录操作命令 -mkdir 作用 格式 案…