【MySQL】SQL的高阶用法

news2024/11/8 22:57:08

文章目录

    • 函数
      • 聚合函数
        • Count()
        • Max()
        • Min()
        • Sum()
        • Avg()
      • 其他常用函数
        • 时间函数
        • 字符串函数
        • 数学函数
    • 条件查询
      • 使用关系运算符查询
      • 使用IN关键字查询
      • 使用BETWEEN AND关键字查询
      • 使用空值查询
      • 使用AND关键字查询
      • 使用OR关键字查询
      • 使用LIKE关键字查询(模糊查询)
      • 使用LIMIT限制查询结果的数量
      • 使用GROUP BY进行分组查询
        • GROUP BY和聚合函数一起使用
        • GROUP BY和聚合函数以及HAVING一起使用
      • 使用ORDER BY对查询结果排序
    • 别名设置
      • 为表起别名
      • 为字段取别名
    • 多表关系
      • 表的关联关系
      • 数据准备
      • 关联查询
      • 删除外键的数据
      • 交叉连接查询(CROSS JOIN)
      • 内连接查询([INNER] JOIN)
      • 外连接查询(LEFT | RIGHT [OUTER] JOIN)
    • 子查询
      • 数据准备
      • 带比较运算符的子查询
      • 带EXISTS关键字的子查询
      • 带ANY关键字的子查询
      • 带ALL关键字的子查询
    • 总结

函数

数据准备

-- 创建数据库
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;

-- 创建student表
CREATE TABLE student (
    sid CHAR(6),
    sname VARCHAR(50),
    age INT,
    gender VARCHAR(50) DEFAULT 'male'
);

-- 向student表插入数据
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');

聚合函数

所谓聚合,就是将多行汇总成一行;其实,所有的聚合函数均如此——输入多行,输出一行。聚合函数具有自动滤空的功能,若某一个值为NULL,那么会自动将其过滤使其不参与运算。

Count()

统计表中数据的行数或者统计指定列其值不为NULL的数据个数

  • 示例

    select count(*) from student;
    

Max()

计算指定列的最大值,如果指定列是字符串类型则使用字符串排序运算

  • 示例

    select max(age) from student;
    

Min()

计算指定列的最小值,如果指定列是字符串类型则使用字符串排序运算

  • 示例

    SELECT MIN(age) FROM student;
    

Sum()

计算指定列的数值和,如果指定列类型不是数值类型则计算结果为0

  • 示例

    select sum(age) from student;
    

Avg()

计算指定列的平均值,如果指定列类型不是数值类型则计算结果为0

  • 示例

    select avg(age) from student;
    
    select avg(sname) from student;
    

其他常用函数

时间函数

SELECT NOW();																# 2023-06-11 09:38:22
SELECT DAY (NOW());													# 11
SELECT DATE (NOW());												# 2023-06-11
SELECT TIME (NOW());												# 09:38:23
SELECT YEAR (NOW());												# 2023
SELECT MONTH (NOW());												# 6
SELECT CURRENT_DATE();											# 2023-06-11
SELECT CURRENT_TIME();											# 09:38:24
SELECT CURRENT_TIMESTAMP();									# 2023-06-11 09:38:24
SELECT ADDTIME('14:23:12','01:02:01');			# 15:25:13
SELECT DATE_ADD(NOW(),INTERVAL 1 DAY);			# 2023-06-12 09:38:25
SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH);		# 2023-07-11 09:38:25
SELECT DATE_SUB(NOW(),INTERVAL 1 DAY);			# 2023-06-10 09:38:25
SELECT DATE_SUB(NOW(),INTERVAL 1 MONTH);		# 2023-05-11 09:38:26
SELECT DATEDIFF('2019-07-22','2019-05-05');	# 78

字符串函数

--连接函数
SELECT CONCAT ()
--
SELECT INSTR ();

--统计长度
SELECT LENGTH();

数学函数

-- 绝对值
SELECT ABS(-136);														# 136
-- 向下取整
SELECT FLOOR(3.14);													# 3
-- 向上取整
SELECT CEILING(3.14);												# 4

条件查询

数据准备

-- 创建数据库
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;

-- 创建student表
CREATE TABLE student (
    sid CHAR(6),
    sname VARCHAR(50),
    age INT,
    gender VARCHAR(50) DEFAULT 'male'
);

-- 向student表插入数据
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1012', 'lili', 14, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1013', 'wang', 15, 'female');

使用关系运算符查询

关系运算符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
  • 示例

    select * from student where age>=17;
    

使用IN关键字查询

IN关键字用于判断某个字段的值是否在指定集合中。如果字段的值恰好在指定的集合中,则将字段所在的记录将査询出来。

  • 示例一:正向用法

    select * from student where sid in ('S_1002','S_1003');
    
  • 示例二:逆向用法

    select * from student where sid not in ('S_1001');
    

使用BETWEEN AND关键字查询

用于判断某个字段的值是否在指定的范围之内。如果字段的值在指定范围内,则将所在的记录将查询出来

  • 示例

    select * from student where age between 15 and 18;
    select * from student where age not between 15 and 18;
    

使用空值查询

在MySQL中,使用 IS NULL关键字判断字段的值是否为空值。请注意:空值NULL不同于0,也不同于空字符串

  • 示例

    insert into student (sid,sname) values ('S_1014', 'alan');
    
    select * from student where age is null;
    

使用AND关键字查询

AND左右两边条件都满足才返回数据

  • 示例

    select * from student where age>15 and gender='male';
    

使用OR关键字查询

在使用OR关键字时,只要记录满足其中任意一个条件就会被查询出来

  • 示例

    select * from student where age>15 or gender='male';
    

使用LIKE关键字查询(模糊查询)

使用LIKE关键字可以判断两个字符串是否相匹配

符号含义示例
%包含零个或多个字符的任意字符串like’Mc%’ 将搜索以字母 Mc 开头的所有字符串(如McBadden)。
_任何单个字符like’_heryl’ 将搜索以字母 heryl 结尾的所有六个字母的名称(如Cheryl、Sheryl)
[]指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符like’[M-Z]inger’将搜索以字符串inger结尾、以从M到Z的任何单个字母开头的所有名称(如 Ringer)
[^]不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符like’M[^C]’ 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)
*它同于DOS命令中的通配符,代表多个字符c*c代表cc,cBc,cbc,cabdfec等多个字符
?同于DOS命令中的?通配符,代表单个字符b?b代表brb,bFb等
#只能代表单个数字k#k代表k1k,k8k,k0k
  • 示例

    select * from student where sid LIKE '%100%';
    

使用LIMIT限制查询结果的数量

当执行查询数据时可能会返回很多条记录,而用户需要的数据可能只是其中的一条或者几条

  • 示例

    select * from student order by age asc limit 3;
    

使用GROUP BY进行分组查询

数据准备

-- 创建数据库
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;

-- 创建员工表
CREATE TABLE employee (
    id int,
    name varchar(50),
    salary int,
    departmentnumber int
);

-- 向员工表中插入数据
INSERT INTO employee values(1,'tome',2000,1001); 
INSERT INTO employee values(2,'lucy',9000,1002); 
INSERT INTO employee values(3,'joke',5000,1003); 
INSERT INTO employee values(4,'wang',3000,1004); 
INSERT INTO employee values(5,'chen',3000,1001); 
INSERT INTO employee values(6,'yukt',7000,1002); 
INSERT INTO employee values(7,'rett',6000,1003); 
INSERT INTO employee values(8,'mujk',4000,1004); 
INSERT INTO employee values(9,'poik',3000,1001);

GROUP BY和聚合函数一起使用

  • 示例一:统计各门的员工数

    select count(*), departmentnumber from employee group by departmentnumber;
    
  • 示例二:统计部门编号大于1001的各部门员工个数 MySQL命令

    select count(*), departmentnumber from employee where departmentnumber>1001 group by departmentnumber;
    

GROUP BY和聚合函数以及HAVING一起使用

  • 示例:统计工资总和大于8000的部门

    select sum(salary),departmentnumber from employee group by departmentnumber having sum(salary)>8000;
    

使用ORDER BY对查询结果排序

  • 基本语法

    SELECT 字段名1,字段名2,…
    FROM 表名
    ORDER BY 字段名1 [ASC 丨 DESC],字段名2 [ASC | DESC];
    
    字段名1、字段名2是查询结果排序的依据;
    参数 ASC表示按照升序排序,DESC表示按照降序排序;
    默认情况下,按照ASC方式排序。通常情况下,ORDER BY子句位于整个SELECT语句的末尾。
    
  • 示例:查询所有学生并按照年纪大小升序排列

    select * from student order by age asc;
    

别名设置

在査询数据时可为表和字段取別名,该别名代替表和字段的原名参与查询操作。

为表起别名

  • 语法格式

    SELECT * FROM 表名 [AS] 表的别名 WHERE .... ;
    
  • 示例

    select * from student as stu;
    select * from student stu;
    

为字段取别名

在查询操作时,假若字段名很长使用起来就不太方便,此时可该字段取一个別名,用该别名来代替字段的名称。

  • 语法格式

    SELECT 字段名1 [AS] 别名1 , 字段名2 [AS] 别名2 , ... FROM 表名 WHERE ... ;
    
  • 示例

    select sname as '姓名', sid from student;
    

多表关系

表的关联关系

  • 多对一

    多对一(亦称为一对多)是数据表中最常见的一种关系。例如:员工与部门之间的关系,一个部门可以有多个员工;而一个员工不能属于多个部门只属于某个部门。

    在多对一的表关系中,应将外键建在多的一方否则会造成数据的冗余。

  • 多对多

    多对多是数据表中常见的一种关系。例如:学生与老师之间的关系,一个学生可以有多个老师而且一个老师有多个学生。

    通常情况下,为了实现这种关系需要定义一张中间表(亦称为连接表)该表会存在两个外键分别参照老师表和学生表。

  • 一对一

    在开发过程中,一对一的关联关系在数据库中并不常见;因为以这种方式存储的信息通常会放在同一张表中。

数据准备

DROP TABLE IF EXISTS student;
DROP TABLE IF EXISTS class;

-- 创建班级表
CREATE TABLE class(
    cid int(4) NOT NULL PRIMARY KEY,
    cname varchar(30) 
);

-- 创建学生表
CREATE TABLE student(
    sid int(8) NOT NULL PRIMARY KEY,
    sname varchar(30),
    classid int(8) NOT NULL
);

-- 为学生表添加外键约束
ALTER TABLE student ADD CONSTRAINT fk_student_classid FOREIGN KEY(classid) REFERENCES class(cid);
-- 向班级表插入数据
INSERT INTO class(cid,cname)VALUES(1,'Java');
INSERT INTO class(cid,cname)VALUES(2,'Python');

-- 向学生表插入数据
INSERT INTO student(sid,sname,classid)VALUES(1,'tome',1);
INSERT INTO student(sid,sname,classid)VALUES(2,'lucy',1);
INSERT INTO student(sid,sname,classid)VALUES(3,'lili',2);
INSERT INTO student(sid,sname,classid)VALUES(4,'domi',2);

关联查询

查询Java班的所有学生

select * from student where classid=(select cid from class where cname='Java');

删除外键的数据

问题:请从班级表中删除Java班级。

在此,请注意:班级表和学生表之间存在关联关系;
要删除Java班级,应该先删除学生表中与该班相关联的学生。否则,假若先删除Java班那么学生表中的cid就失去了关联

delete from student where classid=(select cid from class where cname='Java');
delete from class where cname='Java';

直接删JAVA班级

先删了学生表中与该班相关联的学生,再删Java班级

交叉连接查询(CROSS JOIN)

交叉连接返回的结果是被连接的两个表中所有数据行的笛卡儿积;比如:集合A={a,b},集合B={0,1,2},则集合A和B的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。所以,交叉连接也被称为笛卡尔连接。实际生产中用到的少

  • 语法格式

    SELECT * FROM 表1 CROSS JOIN 表2;
    
    在该语法中:CROSS JOIN用于连接两个要查询的表,通过该语句可以查询两个表中所有的数据组合。
    

内连接查询([INNER] JOIN)

内连接使用比较运算符对两个表中的数据进行比较并列出与连接条件匹配的数据行,组合成新的 记录。也就是说在内连接查询中只有满足条件的记录才能出现在查询结果中。

  • 语法格式

    SELECT 查询字段1,查询字段2, ... FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段
    
    INNER JOIN用于连接两个表
    ON来指定连接条件
    其中INNER可以省略
    
  • 数据准备

    -- 若存在数据库mydb则删除
    DROP DATABASE IF EXISTS mydb;
    -- 创建数据库mydb
    CREATE DATABASE mydb;
    -- 选择数据库mydb
    USE mydb;
    
    -- 创建部门表
    CREATE TABLE department(
      did int (4) NOT NULL PRIMARY KEY, 
      dname varchar(20)
    );
    
    -- 创建员工表
    CREATE TABLE employee (
      eid int (4) NOT NULL PRIMARY KEY, 
      ename varchar (20), 
      eage int (2), 
      departmentid int (4) NOT NULL
    );
    
    -- 向部门表插入数据
    INSERT INTO department VALUES(1001,'财务部');
    INSERT INTO department VALUES(1002,'技术部');
    INSERT INTO department VALUES(1003,'行政部');
    INSERT INTO department VALUES(1004,'生活部');
    -- 向员工表插入数据
    INSERT INTO employee VALUES(1,'张三',19,1003);
    INSERT INTO employee VALUES(2,'李四',18,1002);
    INSERT INTO employee VALUES(3,'王五',20,1001);
    INSERT INTO employee VALUES(4,'赵六',20,1004);
    
  • 示例:查询员工姓名及其所属部门名称

    select employee.ename,department.dname from department inner join employee on department.did=employee.departmentid;
    

外连接查询(LEFT | RIGHT [OUTER] JOIN)

在使用内连接查询时我们发现:返回的结果只包含符合查询条件和连接条件的数据。但是,有时还需要在返回查询结果中不仅包含符合条件的数据,而且还包括左表、右表或两个表中的所有数据,此时我们就需要使用外连接查询。

  • 语法格式

    SELECT 查询字段1,查询字段2, ... FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 WHERE 条件
    
    LEFT | RIGHT [OUTER] JOIN 为关键字
    关键字左边的表被称为左表,关键字右边的表被称为右表;OUTER可以省略。
    
    LEFT [OUTER] JOIN 左(外)连接:返回包括左表中的所有记录和右表中符合连接条件的记录。
    RIGHT [OUTER] JOIN 右(外)连接:返回包括右表中的所有记录和左表中符合连接条件的记录。
    
    如果表1的某条记录在表2中不存在则在表2中显示为空。
    
  • 数据准备

    -- 若存在数据库mydb则删除
    DROP DATABASE IF EXISTS mydb;
    -- 创建数据库mydb
    CREATE DATABASE mydb;
    -- 选择数据库mydb
    USE mydb;
    
    -- 创建班级表
    CREATE TABLE class(
      cid int (4) NOT NULL PRIMARY KEY, 
      cname varchar(20)
    );
    
    -- 创建学生表
    CREATE TABLE student (
      sid int (4) NOT NULL PRIMARY KEY, 
      sname varchar (20), 
      sage int (2), 
      classid int (4) NOT NULL
    );
    -- 向班级表插入数据
    INSERT INTO class VALUES(1001,'Java');
    INSERT INTO class VALUES(1002,'C++');
    INSERT INTO class VALUES(1003,'Python');
    INSERT INTO class VALUES(1004,'PHP');
    
    -- 向学生表插入数据
    INSERT INTO student VALUES(1,'张三',20,1001);
    INSERT INTO student VALUES(2,'李四',21,1002);
    INSERT INTO student VALUES(3,'王五',24,1002);
    INSERT INTO student VALUES(4,'赵六',23,1003);
    INSERT INTO student VALUES(5,'Jack',22,1009);
    
    
    准备这组数据有一定的特点,为的是让大家直观的看出左连接与右连接的不同之处
    1、班级编号为1004的PHP班级没有学生
    2、学号为5的学生Jack班级编号为1009,该班级编号并不在班级表中
    
  • 示例一:查询每个班的班级ID、班级名称及该班的所有学生的名字 -> 左(外)连接查询

    select class.cid,class.cname,student.sname from class left outer join student on class.cid=student.classid;
    

    结果分析

    1、分别找出Java班、C++班、Python班的学生
    2、右表的Jack不满足查询条件故其没有出现在查询结果中
    3、虽然左表的PHP班没有学生,但是任然显示了PHP的信息;但是,它对应的学生名字为NULL
    
  • 示例二:查询每个班的班级ID、班级名称及该班的所有学生的名字 -> 右(外)连接查询

    select class.cid,class.cname,student.sname from class right outer join student on class.cid=student.classid;
    

    结果分析

    1、分别找出Java班、C++班、Python班的学生
    2、左表的PHP班不满足查询条件故其没有出现在查询结果中
    3、虽然右表的jack没有对应班级,但是任然显示王跃跃的信息;但是,它对应的班级以及班级编号均为NULL
    

子查询

子查询是指一个查询语句嵌套在另一个查询语句内部的查询;该查询语句可以嵌套在一个 SELECT、SELECT…INTO、INSERT…INTO等语句中。在执行查询时,首先会执行子查询中的语句,再将返回的结果作为外层查询的过滤条件。在子査询中通常可以使用比较运算符和IN、EXISTS、ANY、ALL等关键字。

数据准备

DROP TABLE IF EXISTS student;
DROP TABLE IF EXISTS class;

-- 创建班级表
CREATE TABLE class(
  cid int (4) NOT NULL PRIMARY KEY, 
  cname varchar(20)
);

-- 创建学生表
CREATE TABLE student (
  sid int (4) NOT NULL PRIMARY KEY, 
  sname varchar (20), 
  sage int (2), 
  classid int (4) NOT NULL
);

-- 向班级表插入数据
INSERT INTO class VALUES(1001,'Java');
INSERT INTO class VALUES(1002,'C++');
INSERT INTO class VALUES(1003,'Python');
INSERT INTO class VALUES(1004,'PHP');
INSERT INTO class VALUES(1005,'Android');

-- 向学生表插入数据
INSERT INTO student VALUES(1,'张三',20,1001);
INSERT INTO student VALUES(2,'李四',21,1002);
INSERT INTO student VALUES(3,'王五',24,1003);
INSERT INTO student VALUES(4,'赵六',23,1004);
INSERT INTO student VALUES(5,'小明',21,1001);
INSERT INTO student VALUES(6,'小红',26,1001);
INSERT INTO student VALUES(7,'小亮',27,1002);

带比较运算符的子查询

  • 示例一:查询张三同学所在班级的信息

    select * from class where cid=(select classid from student where sname='张三');
    
  • 示例二:查询比张三同学所在班级编号还大的班级的信息

    select * from class where cid>(select classid from student where sname='张三');
    

带EXISTS关键字的子查询

EXISTS关键字后面的参数可以是任意一个子查询, 它不产生任何数据只返回TRUE或FALSE。当返回值为TRUE时外层查询才会执行

  • 示例:假如王五同学在学生表中则从班级表查询所有班级信息

    select * from class where exists (select * from student where sname='王五');
    

带ANY关键字的子查询

ANY关键字表示满足其中任意一个条件就返回一个结果作为外层查询条件。

  • 示例:查询比任一学生所属班级号还大的班级编号

    select * from class where cid > any (select classid from student);
    

带ALL关键字的子查询

ALL关键字与ANY有点类似,只不过带ALL关键字的子査询返回的结果需同时满足所有内层査询条件

  • 示例:查询比所有学生所属班级号还大的班级编号

    select * from class where cid > all (select classid from student);
    

总结

  • 查询语句的书写顺序和执行顺序

    select ===> from ===> where ===> group by ===> having ===> order by ===> limit

  • 查询语句的执行顺序

    from ===> where ===> group by ===> having ===> select ===> order by ===> limi

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

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

相关文章

用ChatGPT生成测试数据

大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 在之前的文章 用ChatGPT写一个数据采集程序 中&#xff0c;我们演示了如何用 ChatGPT 辅助编写代码。 除了直接让ChatGPT写代码&#xff0c;我们也可以让它生成一些开发中使用的测试数据。 比如在开发和测试时&…

Alloy Tutorial(3)Traces Modelling —— Cache Memory

文章目录 Cache Memory完整代码 Cache Memory //Addresses and data sig Addr {} sig Data {}//A cache system consists of main memory and cached memory, but mapping addresses to data one sig CacheSystem {var main, cache: Addr -> lone Data }//Initially there …

yolov5——从未见过注释比代码还多的源码解析You Only Look Once And You get it——训练部分

目录 一&#xff1a;前言 二&#xff1a;先介绍v5源码中必须知道的一些文件&#xff08;了解的可直接加入第三代码部分&#xff09; ​编辑 三&#xff1a;训练 参数配置 模式选择 搭建网络 加载预训练和自定义模型的参数 是否需要冻结层数 定义累计梯度的次数 设置…

零基础小白如何自学 Unity 游戏开发?(送 Unity 教程)

如何自学 Unity&#xff1f;初级阶段&#xff1a;学习编程语言初级阶段&#xff1a;编程实践中级阶段&#xff1a;继续学习编程语言 Unity 教程赠书活动内容简介作者简介赠书方式 如何自学 Unity&#xff1f; 有很多同学对 游戏开发 很感兴趣&#xff0c;但都不知道从何学起&a…

PostgreSQL如何查看事务所占有的锁?

表级锁命令LOCK TABLE 在PG中&#xff0c;显式地在表上加锁的命令为“LOCK TABLE”&#xff0c;此命令的语法如下&#xff1a; LOCK [TABLE] [ONLY] name [,...][IN lockmode MODE] [NOWAIT]语法中各项参数说明如下&#xff1a; name&#xff1a;表名lockmode&#xff1a;表…

GPT1,2,3

GPT1 transformer解码器因为有掩码所以不看后面的东西 gpt就是transformer的解码器&#xff0c;bert 是transformer的编码器 gpt核心卖点&#xff1a;不管输入如何&#xff0c;transformer模型不会变 半监督&#xff1a;先在没有标号上进行训练&#xff0c;再到有标号上进行微…

配置Nexus私服

私服是一种特殊的远程仓库&#xff0c;它代理广域网上的远程仓库&#xff0c;供局域网下的maven用户使用。 目前Nexus3的官方下载地址为 https://help.sonatype.com/repomanager3/product-information/download &#xff0c;由于下载较慢&#xff08;真的很慢&#xff09;&…

【MySQL】库和表的增删查改

目录 一、库的操作 1、创建数据库 2、数据库所使用的编码 2.1查询编码集和校验集 2.2查看数据库的字符集和校验集 2.3创建数据库指定字符集和校验集 2.4不同的校验集所筛选的数据结果不一样 3、查看数据库 4、修改数据库 5、删除数据库 6、数据库的备份和恢复 6.1备…

数字图像处理期末复习习题 SCUEC part2

1.连续图像在空间位置上的离散化称为采样&#xff1b;图像空间分辨率由灰度级决定。 2.坐标的离散化叫采样&#xff0c;幅值的离散化叫量化。 3. 4.图像分割方法多种多样&#xff0c;一般可以根据像素灰度取值的特性将分割方法分为两类&#xff08;阈值分割&#xff0c;区域分割…

软件工程开发文档写作教程(15)—概要设计书的编写

本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;电子工业出版社《软件文档写作教程》 马平&#xff0c;黄冬梅编著 概要设计书的编写 按照国家《概要设计说明书GB8567—88&#xff09;所定义的标准&#xff0…

算法刷题-链表-链表相交

链表相交 面试题 02.07. 链表相交思路其他语言版本JavaPythonGojavaScript 面试题 02.07. 链表相交 同&#xff1a;160.链表相交 力扣题目链接 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0…

chatgpt赋能python:Python如何填充空值

Python如何填充空值 在数据处理过程中&#xff0c;经常会遇到数据集中存在空值的情况。这些空值&#xff08;或缺失值&#xff09;可能会影响数据分析的准确性&#xff0c;因此我们需要对这些空值进行填充。Python作为一种流行的编程语言&#xff0c;提供了许多有效的方法来处…

【C++ 笔记四】STL 标准模板库 —— 容器基础

【C 笔记四】STL 标准模板库 —— 容器基础 文章目录 【C 笔记四】STL 标准模板库 —— 容器基础I - 概述 STL1.1 - 范围与定义1.2 - 组成与关系1.3 - 实用举例 II - 概述容器2.1 - 迭代器2.2 - 容器的结构与分类2.3 - 序列式容器2.4 - 关联式容器2.5 - 不定序容器2.6 - 总述 I…

.mdf.locked加密sql server完美恢复---惜分飞

有可能用友ERP软件的sql server 数据库所在机器被勒索病毒加密,扩展名为.locked和昨天恢复的基本类似(.locked加密勒索数据库级别恢复),通过分析确认sql server被这种病毒加密,也可以完美恢复 通过恢复之后数据库正常挂载成功 测试应用一切正常 对于类似这种被加密的勒索的数…

【Python开发】FastAPI 10:SQLAlchemy 数据库操作

在 FastAPI 中使用 SQL 数据库可以使用多个 ORM 工具&#xff0c;例如 SQLAlchemy、Tortoise ORM 等&#xff0c;类似 Java 的 Mybatis 。这些 ORM 工具可以帮助我们方便地与关系型数据库进行交互&#xff0c;如 MySQL 、PostgreSQL等。本篇文章将介绍如何使用 SQLAlchemy 来完…

chatgpt赋能python:Python的安装方法

Python的安装方法 简介 Python是一种非常流行的编程语言&#xff0c;它可以用于多种应用场景。Python简单易懂&#xff0c;可读性强&#xff0c;易于维护。因此&#xff0c;它成为了数据科学家、软件工程师和Web开发者的首选编程语言之一。 安装环境 在安装Python之前&…

【SpringBoot 3.x】整合Mybatis-Plus多数据源、Druid

本地开发环境说明 开发依赖版本Spring Boot3.0.6Mybatis-Plus3.5.3.1dynamic-datasource-spring-boot-starter3.6.1JDK20 pom.xml主要依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st…

MIT 6.S081 Lab Two

MIT 6.S081 Lab Two 引言system callsSystem call tracing&#xff08;moderate&#xff09;实验解析实现思路小结 Sysinfo&#xff08;moderate&#xff09;实验解析 可选的挑战 引言 本文为 MIT 6.S081 2020 操作系统 实验一解析。 MIT 6.S081课程前置基础参考: 基于RISC-V…

【C++】图解类和对象(下)

图解类和对象&#xff08;下&#xff09; 文章目录 图解类和对象&#xff08;下&#xff09;一、初始化列表&#xff08;1&#xff09;定义&#xff08;2&#xff09;注意事项&#xff08;3&#xff09;explicit关键字&#xff08;4&#xff09;结论 二、static成员1.定义2.特性…

windows一键安装redis7.0.11

下载 下载地址:https://gitcode.net/zengliguang/windows_redis7.0.11_offline_install.git 使用git进行进行clone下载 在电脑桌面或者其他文件夹下 &#xff0c;鼠标右键点击 选择git clone &#xff0c;下图中url为下载地址&#xff0c;Directory为本地存储路径&#xff…