4. MySQL 的增删查改(重点 9000字详解)

news2024/11/19 13:40:47

目录

准备工作

一、数据的插入 (insert)

注意

1. 整行插入

2. 指定列的插入(常用)

3. 一次插入多行数据

4. 清空数据库的数据(truncate)

5. 拓展练习:对于数据库中的数据进行统计(count)

二、数据的查询(retrieve/query/select) 

1. 普通数值

2. 全列查询(select * from 表名)

3. 指定列查询(select 列名 from 表名)

4. 查询字段为表达式(select 列名表达式 from 表名)

5. 别名(as)

6. 去重(distinct)

7. 排序(order by)

7.1 多字段排序

8. 行筛选(where)

8.1 字段/字面量 between ... and ...

8.2 集合判断 in(...)

8.3 模糊匹配 like

8.4 分页查询 Limit offest

三、数据的更新(update)

四、数据的删除(delete) 

五、OJ 练习   

六、函数

6.1 截取字符串

6.2 将字符转为大写

6.3 连接字符串

6.4 DATEDIFF 计算两个日期相隔多少天

6.5 获取时间字符串的年月日 时分秒


准备工作

在开始学习之前确认相关的隧道以及数据库创建成功,具体通过以下步骤:

首先在 WindTerm 中确认隧道已经打开:

 接下来在 WorkBench 中创建数据库连接隧道:

 点击右下角 “Test Connection” 出现如下图所示界面,表示连接成功。

 接下来,点击下图进入我们创建的数据库中:

 可以看到我们默认进入的数据库会加粗显示:

 点开后可以看到在上篇文章中我们在 WindTerm 中创建的数据库的内容已经同步至此:

接下来我们将上次的练习导入:

此时我们可以看到表格中已经存在了我们创建好的框架,但是还没有具体的数据:


一切准备就绪后,我们开始正式进入主题——MySQL 的增删查改。

一、数据的插入 (insert)

首先,我们需要向数据库中插入数据。在插入数据时需要注意以下几点:

一、数据的插入必须以行为单位,即插入的数值要填充一行中的所有列

  1. 要么对应的列有默认值(自增 或者 default 或者 允许为 null);

  2. 要么对应的列指定了对应的值。

二、插入的时候,要求插入的值符合对应列的数据类型,比如类的数据类型是 int,则值是 'hello' 时就会插入失败。

三、插入的时候,如果对应列不允许重复(主键 or Unique)则插入重复的值会失败

接下来,我们来验证以上三点。


第一点:插入的数值要填充一行中的所有列。

首先,我们先来简单的插入一组数据:

insert into oj_records (source) values ('牛客');

 可以看到出现报错信息:

Error Code: 1364. Field 'link' doesn't have a default value

为什么会出现以上的报错信息呢?我们先来看一下我们所创建的数据库:

我们在创建时,明确说明了 source、link、question 的值均不能为空(NOT NULL),但是在插入数据时只给了 source 的值,导致出现以上报错信息。因此,我们必须赋值足够的值才能够正确的插入数据,如下图所示:

扩展:

         decimal(2,3) 精确小数 表示数值最多有三位,其中小数点后有两位。如果插入的数值不符合要求同样插入失败。


第二点:插入的值符合对应列的数据类型。

在创建数据库时,我们设置了 passed 的数据类型为 INT 类型:

 为了验证以上的第二点,我们在插入数据时插入 passed 的值为字符串类型:

insert into oj_records (source, link, question, passed)
value ('力扣', 'bbb', '冒泡排序', 'ccc');

可以看到插入失败,出现以下报错: 

 报错信息为:

Error Code: 1366. Incorrect integer value: 'ccc' for column 'passed' at row 1 

说明 passed 列应为整数值,但是我们插入了字符串类型的数值。因此,修改为以下数据即可插入成功:


第三点:插入的时候,如果对应列不允许重复(主键 or Unique)则插入重复的值会失败。

我们直接插入同样的数据:

可以看到报错信息为:

Error Code: 1062. Duplicate entry 'eee' for key 'oj_records.link_UNIQUE'   

即在创建数据库时我们选择的主键非常重要,它直接决定了对于插入的数据的要求,决定了数据能否成功插入,对于插入的数据要求十分严格。

注意

1. 整行插入
insert into 表名 values (值列表);
insert into 表名 values (值列表), (值列表), ...;

-- 一列不能少,并且值的顺序和建表时的顺序一致

-- null:要么 null or 默认值

insert into oj_records values (null, 'source', 'link', 'question', '简单', 0, null);

2. 指定列的插入(常用)
insert into 表名 (字段列表) values (值列表);

插入指定列,可以和创建数据库时的顺序不一致,但是赋值时对应的列要保持一致。

insert into oj_records (link, source, question)
	values('link1', 'question1', 'source');

3. 一次插入多行数据
insert into 表名 (字段列表) values (值列表), (值列表), ...;

一次插入多行数据时,注意不要重复插入相同数据即可。

insert into oj_records (link, question, source)
    values
    ('link2', 'question2', 'source'),
    ('link3', 'question3', 'source'),
    ('link4', 'question4', 'source');

4. 清空数据库的数据(truncate)

通过以下命令,我们可以直接清空数据库中的数据(截断表,可以视为 数据库阶段的 clear() 操作)。

truncate oj_records;

5. 拓展练习:对于数据库中的数据进行统计(count)

首先,我们向数据库中添加一组数据:

insert into oj_records 
        (source, link, question, difficulty, passed, last_passed_at)
    values
    ('牛客', 'l1', 'q1', '简单', 1, '2023-04-23 09:18:27'),
    ('leetcode', 'l2', 'q2', '简单', 1, '2023-04-22 09:18:27'),
    ('牛客', 'l3', 'q3', '中等', 1, '2023-04-20 23:55:27'),
    ('牛客', 'l4', 'q4', '困难', 1, '2023-03-30 19:27:22'),
    ('牛客', 'l5', 'q5', '中等', 0, null),
    ('牛客', 'l6', 'q6', '困难', 0, null),
    ('牛客', 'l7', 'q7', '简单', 0, null),
    ('leetcode', 'l8', 'q8', '中等', 1, '2023-03-21 13:13:13');

 可以通过 count 命令,统计数据。比如,统计题目总数

select count(*) from oj_records;

 还可以通过 where 命令对题目进行筛选,比如统计通过的题目总数

select count(*) from oj_records where passed = 1;

还可以通过 and 语句增加判断条件,通过 between... and ... 限制判断的区间,比如统计三月份通过的题目总数

select count(*) from oj_records 
    where passed = 1 and last_passed_at 
    between '2023-03-01 00:00:00' and '2023-03-31 23:59:59';

二、数据的查询(retrieve/query/select) 

select
    指定列(或者表达式)
from 表名
where 进行行筛选
order by 排序依据
limit ... offset ...  取指定行

最简形式下,可以只使用 select :

select ...;

1. 普通数值

比如,我们先来使用如下:

select 1;

select 100;


接下来我们创建两张表,并插入数据。首先是学生表:

DROP TABLE IF EXISTS students;
CREATE TABLE students (
    id INT,
    sn INT comment '学号',
    name VARCHAR(20) comment '姓名',
    qq_mail VARCHAR(20) comment 'QQ邮箱'
);
INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO students VALUES (101, 10001, '孙悟空', '11111');
INSERT INTO students (id, sn, name) VALUES 
        (102, 20001, '曹孟德'),
        (103, 20002, '孙仲谋');

 接下来创建一张学生的成绩表:

DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
        id INT,
        name VARCHAR(20),
        chinese DECIMAL(3,1),
        math DECIMAL(3,1),
        english DECIMAL(3,1)
);

INSERT INTO exam_result (id,name, chinese, math, english) VALUES
        (1,'唐三藏', 67, 98, 56),
        (2,'孙悟空', 87.5, 78, 77),
        (3,'猪悟能', 88, 98, 90),
        (4,'曹孟德', 82, 84, 67),
        (5,'刘玄德', 55.5, 85, 45),
        (6,'孙权', 70, 73, 78.5),
        (7,'宋公明', 75, 65, 30);

2. 全列查询(select * from 表名)

select * from exam_result;

* 代表通配符,表示展示所有的字段,但是在正式生产中不建议使用,因为 * 的指向不明确,可读性较差。

3. 指定列查询(select 列名 from 表名)

查询指定列顺序,不需要按定义表的顺序来。

select id, name, english from exam_result;

4. 查询字段为表达式(select 列名表达式 from 表名)

select 10 + 3;

select 1 from exam_result;

select id * 100 from exam_result;

select id <= 5 from exam_result;

可以看到以上代码执行完毕后,并没有出现我们认为的显示 1~5 行,而是将 id 中 >= 5 的用 1 表示,否则用 0 表示。

同样,我们可以使用逻辑运算符进行判断:

AND
OR
NOT
同或NOR
异或XOR

select not (id <= 5)  from exam_result;

select id <= 10, id > 3, id = 5, id <> 1 from exam_result;

 -- <> 代表不等于

可以看到,当条件判断为四个表达式且用逗号隔开时,每一个表达式对应一列。 

5. 别名(as)

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称。

select 
    id <= 10 as a, 
    id > 3 as b, 
    id = 5 as c, 
    id <> 1 as d 
from exam_result;

 需要注意的是,as 可以省略。比如:

6. 去重(distinct)

去重就是对指定列进行合并重复项处理。我们先来查询一下数学成绩,可以看到有两位同学的数学成绩相同。

select id, math from exam_result;

接下来我们使用去重的语句,将重复项只显示一个。

select distinct math from exam_result;

需要注意的是,当我们使用 distinct 进行去重时,尽量只针对一列数据进行去重,否则会造成歧义。比如,执行以下语句,我们的目的是显示不重复的数学成绩并显示它们对应的行号,但是结果并不能实现。

可以看到重复的成绩依然存在,因为表是二维结构,在一张表格中不会出现某一行或者某一列多了或者少了的情况,因此,它会显示原来的表中的内容

注意:

        select 语句是针对列进行投影,不影响查询出来的行数(distinct 除外),但是影响列数。例如 select 1 from exam_result 就是将每一行投影为 1。

        select 查询出来的结果,在没有加 order by 的情况下,不应该被认为是有序的,虽然大部分实现时都表现为插入时的顺序。

7. 排序(order by)

select ... from ... order by 字段;

以该字段为依据进行比较排序,默认是升序,也可以将 asc / desc 加在字段后,表示以升序或者降序进行排列。

-- ascend 升序
select ... from ... order by 字段 asc;
-- descend 降序
select ... from ... order by 字段 desc;

我们实际演示一下:

select * from exam_result order by id;
select * from exam_result order by id desc;

 我们再来看一个例子,此处的字段也可以是表达式:

可以看到,此处并不是将 id 直接 * 10 再显示最后进行排序,而是直接将 id 显示,但是排序时是按照 id * 10 的结果进行升序排序(默认)的。

还需要注意的是,对于 order by 后面的字段并没有特别的限制,它可以来自于表中,也可以并不是表中的字段:

select id, chinese + math + english total from exam_result order by total;

以上就是按照顺序将已有的字段求和并改名后根据改名后的字段来进行排序。

7.1 多字段排序
select ... from ... order by 字段1 asc, 字段2 asc;
select ... from ... order by 字段1 desc, 字段2 asc;
select ... from ... order by 字段1 asc, 字段2 desc;

优先按照 字段1 比较排序,如果 字段1 的值不相等,直接按照 字段1 进行排序;

如果 字段1 的值相等,才会按照 字段2 的值进行排序。

order by math desc, chinese asc;

张三 数学 28 语文 32

李四 数学 28 语文 32

我们可以认为:张三 等于 李四

因此,张三排在李四前 or 李四排在张三前 【都可能】

select * from exam_result order by math, id desc;

SELECT name, qq_mail FROM students  ORDER BY qq_mail DESC;

注意: NULL 比任何值都小。

8. 行筛选(where)

将每行记录代入 where 后边的逻辑表达式中,得到 true(1) / false(0) 的结果,只保留结果为 true(1) 的行。没有 where 子句时,则表中有多少行,展示多少行。

运算符
说明
>, >=, <, <=
大于,大于等于,小于,小于等于
=
等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>
不等于
BETWEEN a0 AND
a1
范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN (option, ...)
如果是 option 中的任意一个,返回 TRUE(1)
IS NULL
NULL(标准做法
IS NOT NULL
不是 NULL
LIKE
模糊匹配。 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字 符
-- 没有 where 子句,展示 7 行数据
select * from exam_result;

-- 只保留 id 为 1 的行
select * from exam_result where id = 1;

-- 展示 [2, 3, 4, 5, 6, 7] 6 行
select * from exam_result where id > 1;

-- 只有字面量的表达式,哪行代入,1都等于1,所以展示 7 行
select * from exam_result where 1 = 1;

 当 where 后为常量时,一定为真,因此显示表中所有的数据。

-- 0 条
select * from exam_result where 1 != 1;

 由于 1 != 1 条件为假,因此不会显示任何数据。

-- 0 条,因为 qq_mail = null 的结果恒为 null(false)
select * from student where qq_mail = null;

 关于数据库中的值 null

        null 代表该值不知道,不清楚。

        有 null 参与的表达式的结果:仍然不知道,所以仍然是 null

        null + 3 -> null

        null = 3 -> null

        null = null -> null

        null <=> null -> 1

        null 被视为是 false

select * from students where qq_mail is null;
select * from students where qq_mail <=> null;
-- 二者等价

-- 观察AND 和 OR 的优先级:
SELECT * FROM exam_result WHERE chinese > 80 or math>70 and english > 70;
SELECT * FROM exam_result WHERE (chinese > 80 or math>70) and english > 70;

8.1 字段/字面量 between ... and ...

需要注意的是,此处的区间为前闭后闭

select id, chinese from exam_result where chinese between 60 and 100;

8.2 集合判断 in(...)

判断前面的元素是否位于后面的集合中。

select * from exam_result where chinese in (70, 75, 80, 85, 90, 95);
-- 查询语文成绩是 70 或者 75 或者 80 或者 85 或者 90 或者 95的同学
SELECT * FROM exam_result 
    WHERE chinese = 70 or chinese = 75 
    OR chinese = 80 OR chinese = 85
    OR chinese = 90 OR chinese = 95;
-- 二者等价

8.3 模糊匹配 like

模糊匹配主要用于字符串比较。

name like '%张%';

name 可以任何字符开头,并且长度不限 [0, +∞)

后边跟着 '张' 最后任何字符结尾,并且长度不限 [0, +∞)

-> name 中有 '张' 这个字符,结果就是 true

"张" => true

"1张" => true

"1张1" => true

name like '%张';

 name 可以任何字符开头,并且长度不限 [0, +∞),后边跟着 '张';

-> name 中以 '张' 这个字符结尾,结果就是 true
"张" => true
"1张" => true
"1张1" => false

name like '张%';

 name 以 '张' 开头,任何字符结尾,并且长度不限 [0, +∞)

-> name 中以 '张' 这个字符开始,结果就是 true
"张" => true
"1张" => false
"1张1" => false

name like '张' 等价于 name = '张'。

name like '_张_';

name 可以任何字符开头,并且长度必须是 1
     后边跟着 '张'
     最后任何字符结尾,并且长度必须是 1
一定是 3 个字,第二个字是'张'

8.4 分页查询 Limit offest

要使用 limit offset 切片,前提:结果数据已经有序(order by),否则结果不做保证。

select ... from ... where ... order by ...
limit 几条 offset 从哪开始(从0开始)

-- 前 3 条
limit 3 offset 0;
-- [5, 15]
limit 11 offset 4;

-- 等价于,但不推荐
limit 0, 3;
limit 4, 11;

-- 当 offset 是 0 时,可以省略 offset
limit 3 offset 0;
limit 3;

三、数据的更新(update)

update 表名 
    set 
    字段1 = ...;
    字段2 = ...;
where ...;

修改表中的符合 where 的所有记录,更新字段1 和 字段 2。如果没有 where 条件,则全部更改。

update exam_result set math = 100 where name = '孙悟空';

update 
    exam_result 
set 
    math = math + 1 
order by 
    chinese  + math + english 
limit 
    3;
-- 将总成绩倒数前三的同学的数学成绩 +1

四、数据的删除(delete) 

delete from 表 where ...;

删除所有符合条件的行。如果没有 where 条件,删除所有行。

需要注意的是 在 WorkBench 中可能无法直接进行更新和删除,根据报错信息我们可以看到需要禁用安全模式才可以删除或者更新数据,因此按照下图关闭安全模式即可。

五、OJ 练习   

OJ 题目练习

六、函数

6.1 截取字符串
substr(字段, 1, n);

MySQL 中 下标从 1 开始。

select substr("hello world", 2, 3);

以上语句就表示将 “hello world”  字符串从第 2 个元素开始,截取 3 个字符:

6.2 将字符转为大写
-- upper(...)
select upper("hello");

6.3 连接字符串
-- concat(...)
select concat("hello"," ","world");

6.4 DATEDIFF 计算两个日期相隔多少天
select datediff("2023-04-22","2023-06-01");

6.5 获取时间字符串的年月日 时分秒
select year("2023-04-22 12:13:45");
select month("2023-04-22 12:13:45");
select day("2023-04-22 12:13:45");
select hour("2023-04-22 12:13:45");
select minute("2023-04-22 12:13:45");
select second("2023-04-22 12:13:45");


 

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

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

相关文章

多智能体强化学习(MARL)研究汇总:行为分析、通信学习、协作学习、智能体建模

【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应…

第一百零七天学习记录:C++核心:类和对象Ⅷ(五星重要)多态

多态 多态的基本概念 多态是C面向对象三大特性之一 多态分为两类 1、静态多态&#xff1a;函数重载 和 运算符重载属于静态多态&#xff0c;复用函数名 2、动态多态&#xff1a;派生类和虚函数实现运行时多态 静态多态和动态多态的区别&#xff1a; 1、静态多态的函数地址早绑…

Arthas的火焰图生成

之前说过用idea自带的工具生成火焰图&#xff0c;但是idea是在本地的&#xff0c;在机器上如何生成呢&#xff1f; 我觉得方法有很多&#xff0c;这里用arthas工具简单搞一搞 Arthas官网地址 下载Arthas 如果在机器上要下载整个包&#xff0c;arthas-boot.jar需要依赖其他的j…

上门按摩系统如何运营才能做大

预约上门按摩系统是一种在线平台或应用程序&#xff0c;用于帮助用户预约并安排专业按摩师上门提供按摩服务。这种系统通常为用户提供一个简便的方式来选择按摩服务类型、时间和地点&#xff0c;并与合适的按摩师进行预约。用户可以通过应用程序或网站浏览按摩师的资料和评论&a…

用googletest写cpp单测

框架概述 Google Test&#xff08;也称为 googletest&#xff09;是由 Google 开发的 C 单元测试框架。它的首个版本是在2004年发布的&#xff0c;作为 Google 内部的测试框架使用。随后&#xff0c;Google Test 在开源社区中得到广泛应用&#xff0c;并在许多项目和组织中成为…

总结927

今晚用了40分钟进行回顾&#xff0c;但这40分钟&#xff0c;能回顾一天所学&#xff1f;一共四门课&#xff0c;每门用10分钟回顾&#xff0c;光是书籍&#xff0c;资料的切换都需要30秒。10分钟回顾对于政治来说是足够的&#xff0c;但对于数学&#xff0c;能重做2~3道题就很不…

centos环境搭建nsq单点

简言 下载 启动nsq(单节点) 1. 启动nsqd 2. 启动nsqlookupd 3. 启动nsqadmin 查看状态 简言 1. nsq是go语言实现的分布式消息处理平台&#xff0c;类似我们常用的kafka&#xff0c;rocket mq等&#xff0c;目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和…

前端:UI 交互式特效 —— Css、Js

&#x1f637;&#x1f60a;&#x1f93a;&#x1f93a;&#x1f93a;前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客 &#x1f601; css动画 —— 把你喜欢css动画嵌入到浏览器中_css做的动画效果怎么嵌入网页_彩色之外的…

研0进阶式学习—-数据挖掘概念与技术

目录 【 写在前面】什么是数据挖掘为何进行模式评估如何进行模式评估数据挖掘的发展趋势 【 写在前面】 本科期间&#xff0c;数据挖掘算法学过一些&#xff0c;甚至本人的毕业设计也是围绕此展开的&#xff0c;但是显然学得太皮毛&#xff0c;今天偶然读到《数据挖掘•概念与…

基于tauri+vue3+pinia2客户端管理系统程序|tauri+vite4后台系统

TauriAdmin一款跨端通用后台系统模板解决方案 基于 tauri rust webview2 整合 vite4 搭建桌面端 vue3 管理后台模板TauriVue3Admin。支持多窗口切换管理、vue-i18n多语言、动态路由权限、常用业务功能模块及动态路由缓存等功能。 使用技术 编码工具&#xff1a;Vscode框架技术…

【chap4-链表】用Python3刷《代码随想录》

通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域data&#xff0c;另一个是指针域next&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff08;空指针&#xff09; 链接的入口点称为…

耳夹式骨传导耳机有哪些比较好用?这三个款式不容错过!

骨传导耳机由于不入耳&#xff0c;不用担心耳道健康问题&#xff0c;越来越受到广大网友的喜欢&#xff0c;而传统的入耳式耳机&#xff0c;则因为长时间佩戴会耳朵痛&#xff0c;容易掉落等问题逐渐的被网友抛弃&#xff0c;那么在骨传导耳机市场种类这么多的情况下&#xff0…

Apache Kudu 在**医疗科技的生产实践

目录 说明 医疗场景下数据特点 KUDU 的介绍 kudu 架构 kudu 文件组织形式 kudu的生产实践 技术选型 整体的架构 项目遇到的问题 参考资料 说明 本文主要介绍APACHE KUDU 在**医疗科技数据实时分析场景下的实践&#xff0c;内容包括&#xff1a; 医疗场景下数据特点 …

mysql什么情况下行锁(表锁)(锁的概念)

1&#xff1a;数据表aa的设计结构 2&#xff1a; 使用navicat编写手动控制事务 3&#xff1a;先选择开启事务和执行更新操作&#xff0c;where b1&#xff08;表锁&#xff09;b不是索引&#xff0c;不提交事务&#xff0c;&#xff08;如果where b1&#xff0c;b是索引就行锁&…

本地Nginx部署React前端项目浅尝

目录 nginx [下载](http://nginx.org/en/download.html)nginx命令react打包文件放置nginx 配置 运行效果nginx踩坑根目录配置 nginx 下载 根据上面的版本找到适合自己的 nginx版本&#xff0c;我目前是环境是 windows&#xff0c;所以下载 稳定版本。 nginx命令 在下载的ngin…

数学建模-判断数据是否服从正态分布

大样本用qq图 >1000 皮尔逊相关系数需要正态性检验&#xff0c;利用上面三种方法其中一种 斯皮尔曼相关系数不用正态性检验

Claude2轻松解决代码Bug的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

GPT-4最新细节曝光:从架构、基础设施、训练数据集、成本、视觉到MoE

OpenAI保持GPT-4架构封闭&#xff0c;不是因为对人类的某种存在风险&#xff0c;而是因为他们所构建的内容是可复制的。实际上&#xff0c;我们预计Google、Meta、Anthropic、Inflection、Character、Tencent、ByteDance、Baidu等公司在短期内将拥有与GPT-4一样甚至更强大的模型…

T100简易的查询作业功能开发

一、自定义作业维护 首先打开作业【azzi310】,进行作业的新增。 这是一个空白的作业界面,我们需要填写的地方也就那么几个。 查询单id:注册一个查询单 【四个字母三个数字】比如这里我们cxmq101.查询单名称:给这个查询起一个名字最大查询笔数:可以自己定义报表是否自己录…

数据库,数据仓库,数据湖

数据仓库四层分层 ODS——原始数据层&#xff1a;存放原始数据 ODS层即操作数据存储&#xff0c;是最接近数据源中数据的一层&#xff0c;数据源中的数据&#xff0c;经过抽取、洗净、传输&#xff0c;也就说传说中的ETL之后&#xff0c;装入本层&#xff1b;一般来说ODS层的数…