核心内容摘要
GME多模态向量-Qwen2-VL-2B:开箱即用的多模态搜索解决方案
什么是CRUDCRUD是数据库操作的四个基本功能Create(创建) - 插入数据Retrieve(读取) - 查询数据Update(更新) - 更新数据Delete(删除) - 删除数据
Create - 数据插入
1 基本语法INSERT [INTO] table_name [(column[, column]...)] VALUES (value_list)[, (value_list)]...
2 创建示例表CREATE TABLE students ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, sn INT NOT NULL UNIQUE COMMENT 学号, name VARCHAR(
NOT NULL, qq VARCHAR(
);
3 单行数据全列插入-- 插入两条记录value_list数量必须和定义表的列的数量及顺序一致 INSERT INTO students VALUES (100, 10000, 唐三藏, NULL); INSERT INTO students VALUES (101, 10001, 孙悟空,
;
4 多行数据指定列插入-- 插入两条记录value_list数量必须和指定列数量及顺序一致 INSERT INTO students (id, sn, name) VALUES (102, 20001, 曹孟德), (103, 20002, 孙仲谋);
5 插入否则更新当主键或唯一键冲突时可以选择更新操作INSERT INTO students (id, sn, name) VALUES (100, 10010, 唐大师) ON DUPLICATE KEY UPDATE sn 10010, name 唐大师;返回值说明0 row affected表中有冲突数据但冲突数据的值和update的值相等1 row affected表中没有冲突数据数据被插入2 row affected表中有冲突数据并且数据已经被更新
6 替换操作REPLACE INTO students (sn, name) VALUES (20001, 曹阿瞒);返回值说明1 row affected表中没有冲突数据数据被插入2 row affected表中有冲突数据删除后重新插入
Retrieve - 数据查询
1 基本语法SELECT [DISTINCT] {* | {column [, column] ...}} [FROM table_name] [WHERE ...] [ORDER BY column [ASC | DESC], ...] [LIMIT ...]
2 创建测试表CREATE TABLE exam_result ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(
NOT NULL COMMENT 同学姓名, chinese FLOAT DEFAULT
0 COMMENT 语文成绩, math FLOAT DEFAULT
0 COMMENT 数学成绩, english FLOAT DEFAULT
0 COMMENT 英语成绩 ); INSERT INTO exam_result (name, chinese, math, english) VALUES (唐三藏, 67, 98,
, (孙悟空, 87, 78,
, (猪悟能, 88, 98,
, (曹孟德, 82, 84,
, (刘玄德, 55, 85,
, (孙权, 70, 73,
, (宋公明, 75, 65,
;
3 查询类型
3.
1 全列查询SELECT * FROM exam_result;注意 不建议使用*进行全列查询因为查询的列越多传输的数据量越大可能影响索引使用。
3.
2 指定列查询SELECT id, name, english FROM exam_result;
3.
3 查询字段为表达式-- 表达式不包含字段 SELECT id, name, 10 FROM exam_result; -- 表达式包含一个字段 SELECT id, name, english 10 FROM exam_result; -- 表达式包含多个字段 SELECT id, name, chinese math english FROM exam_result;
3.
4 为查询结果指定别名SELECT id, name, chinese math english AS 总分 FROM exam_result;
3.
5 结果去重-- 去重前 SELECT math FROM exam_result; -- 去重后 SELECT DISTINCT math FROM exam_result;
4 WHERE条件查询比较运算符运算符说明, , , 大于,大于等于,小于,小于等于等于,NULL不安全等于,NULL安全!, 不等于BETWEEN a0 AND a1范围匹配,[a0,a1]IN (option, ...)如果是option中的任意一个,返回TRUEIS NULL是NULLIS NOT NULL不是NULLLIKE模糊匹配(%表示任意多个字符,_表示任意一个字符)逻辑运算符运算符说明AND多个条件必须都为TRUE,结果才是TRUEOR任意一个条件为TRUE,结果为TRUENOT条件为TRUE,结果为FALSE查询示例
英语不及格的同学SELECT name, english FROM exam_result WHERE english 60;
语文成绩在[80,90]分的同学-- 使用AND SELECT name, chinese FROM exam_result WHERE chinese 80 AND chinese 90; -- 使用BETWEEN SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
数学成绩是58,59,98,99分的同学-- 使用OR SELECT name, math FROM exam_result WHERE math 58 OR math 59 OR math 98 OR math 99; -- 使用IN SELECT name, math FROM exam_result WHERE math IN (58, 59, 98,
;
姓孙的同学-- 孙% 匹配姓孙的同学 SELECT name FROM exam_result WHERE name LIKE 孙%; -- 孙_ 匹配姓孙且名字为两个字的同学 SELECT name FROM exam_result WHERE name LIKE 孙_;
语文成绩好于英语成绩的同学SELECT name, chinese, english FROM exam_result WHERE chinese english;
总分在200分以下的同学SELECT name, chinese math english AS 总分 FROM exam_result WHERE chinese math english 200;
语文成绩80并且不姓孙的同学SELECT name, chinese FROM exam_result WHERE chinese 80 AND name NOT LIKE 孙%;
NULL查询-- 查询qq号已知的同学 SELECT name, qq FROM students WHERE qq IS NOT NULL; -- NULL和NULL的比较 SELECT NULL NULL, NULL 1, NULL 0; -- 结果都是NULL SELECT NULL NULL, NULL 1, NULL 0; -- 结果: 1, 0,
0
5 排序查询
3.
1 基本语法SELECT ... FROM table_name [WHERE ...] ORDER BY column [ASC | DESC], [...];
3.
2 排序示例
按数学成绩升序显示SELECT name, math FROM exam_result ORDER BY math;
按qq号排序显示-- NULL视为比任何值都小升序出现在最上面 SELECT name, qq FROM students ORDER BY qq; -- NULL视为比任何值都小降序出现在最下面 SELECT name, qq FROM students ORDER BY qq DESC;
多字段排序SELECT name, math, english, chinese FROM exam_result ORDER BY math DESC, english, chinese;
按总分排序SELECT name, chinese math english AS 总分 FROM exam_result ORDER BY 总分 DESC;
6 分页查询
3.
1 基本语法SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
3.
2 分页示例-- 第1页每页3条记录 SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 0; -- 第2页 SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 3; -- 第3页 SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 6;
Update - 数据更新
1 基本语法UPDATE table_name SET column expr [, column expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]
2 更新示例
将孙悟空同学的数学成绩变更为80分UPDATE exam_result SET math 80 WHERE name 孙悟空;
将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分UPDATE exam_result SET math 60, chinese 70 WHERE name 曹孟德;
将总成绩倒数前三的3位同学的数学成绩加上30分UPDATE exam_result SET math math 30 ORDER BY chinese math english LIMIT 3;
将所有同学的语文成绩更新为原来的2倍UPDATE exam_result SET chinese chinese * 2;
Delete - 数据删除
1 基本语法DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
2 删除示例
删除孙悟空同学的考试成绩DELETE FROM exam_result WHERE name 孙悟空;
删除整张表数据-- 创建测试表 CREATE TABLE for_delete ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(
); -- 插入测试数据 INSERT INTO for_delete (name) VALUES (A), (B), (C); -- 删除整表数据 DELETE FROM for_delete; -- 再插入数据自增id在原值上增长 INSERT INTO for_delete (name) VALUES (D); -- id为
4