数据库原理及应用·关系数据库标准语言SQL

4.1 SQL概述

4.1.1 SQL的产生和发展

1.产生

1974年,SQL语言的雏形最早由美国IBM公司的Raymond F. Boyce和Donald D. Chamberlin提出
1975-1979年,在System R上首次实现,由IBM的San Jose研究室研制,称为SEQUEL

2.发展

1986年推出了SQL-86标准,正式命名为“SQL: Structured Query Language”
1989年ANSI / ISO推出了SQL-89标准,它是数据库语言SQL的标准集合
1992年进一步推出了SQL-92标准,也称为SQL2,是SQL-89的超集,增加了许多新特性
1999年推出了SQL-99标准,也称为SQL3,对面向对象的一些特征予以支持

4.1.2 SQL的特点

(1)综合统一
(2)高度非过程化
(3)面向集合的操作方式
(4)语言简捷,易学易用
(5)以同一种语法结构提供两种使用方式:独立和嵌入。

4.1.3 SQL的基本概念

SQL与DBMS的关系
SQL的方言问题
SQL语言的功能组件
DML数据操纵语言
DDL数据定义语言
DCL数据控制语言

4.1.4 SQL基本数据类型

一、数值类型

(1)准确型:指在计算机中能够精确存储的数据


(2)近似型:指近似的数值数据类型

二、文本类型

(1)普通字符编码(每个英文字符占一个字节存储空间,每个汉字占两个字节存储空间)

(2)Unicode字符编码(每个英文字符和汉字都占两个字节存储空间)

三、日期时间类型

四、二进制类型

4.2 学生选课数据库

此部分只简单罗列库中四张表的结构:学生表、教师表、课程表、选课表

学生表:

教师表:

课表:

选课表:

4.3  数据定义

4.3.1 模式的定义与删除

1.模式的概念

数据库模式是一种逻辑分组对象,数据库模式是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。
可以想象一个模式作为对象的容器。
数据库模式可以作为一个命名空间,能防止来自不同模式的对象名称冲突。

2.模式创建的语法

创建模式的语法:
Create schema <模式名>
authorization <用户名>
定义模式实际上是定义一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表,视图,索引等

用sa账户登录,创建一个名为StudentDB的数据库,然后创建名为Sch1的模式。

准备工作:

Create database StudentDB
Use StudentDB 
Go CREATE LOGIN Zhou1 WITH PASSWORD = 'MyPassword123' 
Go CREATE USER Zhou1 FOR LOGIN Zhou1

模式创建与删除

Create schema Sch1 authorization Zhou1Drop Schema Sch1

4.3.2 表操作

一、创建表

创建表的SQL语法的简化版是:

Create  Table  表名 
(字段1   数据类型1(长度),字段2   数据类型2(长度),字段3   数据类型3(长度) 
) 

注意:不是所有类型都需要长度,逗号用来分隔开多个字段。

创建一张名为Users的表,包含用户名vUserName和密码vPassword两个字段。用户名最大允许长度18个字符,密码最大允许长度20个字符。

Create Table Users 
(  vUserName varchar(18) Not NULL,vPassword varchar(20) Not NULL 
)

 创建学生表

CREATE TABLE Student
(Sno char(10) NOT NULL Constraint PK_Stu_No Primary Key ,Sname char(20) NOT NULL,Ssex char(2) NOT NULL Constraint CK_Stu_Sex Check(Ssex in ('男','女')),Smajor char(20) NOT NULL,Sdept char(20) NOT NULL,Sage tinyint  Constraint CK_Stu_Age Check(Sage between 1 and 80),Tel char(15) NOT NULL,EMAIL varchar(30) NOT NULL
)

二、修改表

 修改学生表结构

删除Sage年龄字段,增加dBirth字段。

另外将Smajor字段从目前的char(20)修改为varchar(20)。

Alter Table Student Drop Constraint CK_Stu_Age  --删除Sage字段上的约束
Alter Table Student Drop Column Sage
Alter Table Student Add dBirth datetime
Alter Table Student Alter Column Smajor varchar(20)

 三、删除表

删除表的语法为:

Drop  Table  表名

要删除先前的学生表,执行下面语句即可:

Drop Table Student

4.4 数据查询

4.4.1 查询语句的基本结构

SELECT select_list [ INTO new_table ]
[ FROM table_source ] 
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

说明:ASC代表升序,DESC代表降序

4.4.2 单表查询

检索Student表的所有行和列。

Select * from Student

说明:“Select  *  from 表名”的语法形式,可以让用户快速了解一张表的数据样式。

投影运算:从Student表检索学号、姓名、性别、年龄、专业这五列信息。

Select Sno,Sname,Ssex,Sage,Smajor from Student

说明:只显示部分的列,是在Select之后给出要显示的字段的列表,并用逗号分隔开。

友好列标题:从Student表检索学号、姓名、性别、年龄、专业这五列信息,要求使用友好列标题。

Select Sno as 学号,Sname as 姓名,Ssex as 性别,Sage as 年龄 ,Smajor as 专业 from Student

说明:在原始字段名之后跟上as,然后就可以给一个友好列标题了。

top关键字:从Student表检索前三行数据

Select Top  3  * from Student

说明:使用Top n 语法来说明只显示前n条数据。

选择运算 :从Student表检索年龄为20岁的学生信息。

Select * from Student where Sage=20

说明:用where条件来实现行上的选择,此处需要使用比较运算符。

And连接多个条件:从Student表检索年龄大于21岁的女学生信息。

Select * from Student where Ssex='女' and Sage>21

Or连接多个条件:从Student表检索专业是“计算机应用”或“石油工程”的学生。

 Select * from Student where Smajor='计算机应用' or Smajor='石油工程'

说明:当要满足的条件有多个的时候,需要用And或者Or来连接。And表示同时满足,Or表示满足一个条件即可。

Between...And:检索学号在J2016001到J2016004之间的学生信息,显示学号、姓名、性别、年龄。

Select Sno,Sname,Ssex,Sage from Student where Sno between 'J2016001' and  'J2016004' 

说明:要比较的值是介于某个范围,并且包含边界值,则可以使用between…and语法。值可以是字符串,也可以是数字。


检索年龄不在19到21岁之间的学生信息,显示学号、姓名、性别、年龄。

Select Sno,Sname,Ssex,Sage from Student where Sage not between 19 and 21

说明:可以在between…and语法之前使用not进行取反。

In关键字:从Teacher表中检索职称为教授或副教授的教师信息。

Select * from Teacher where Tprot in ('教授','副教授')

说明:要检索的信息是一系列取值列表,可以使用in。

DISTINCT关键字:显示Teacher表中有哪些职称,要求显示结果不能有重复数据。

Select DISTINCT Tprot from Teacher 

说明:可以在字段名之前使用DISTINCT关键字,表示检索时显示不重复的信息。

Like模糊查询:查询Student表中姓刘的学生信息。

Select * from Student where Sname like '刘%' 

说明:可以使用like关键字进行模糊查询。


查询Student表专业中含有“学”字的学生的姓名及专业。

 Select Sname,Sdept from Student where Sdept like '%学%' 

说明:只要在Sdept的任何位置,出现“学”字,就检索出来。

查询Student表中邮箱地址满足在@左侧有且仅有四个字符的学生信息,结果显示姓名、院系、邮箱地址三列。

Select Sname,Sdept,EMAIL from Student where EMAIL like '____@%'

说明:@符号之前是四个紧密相连的下划线符号“_”,一个下划线代码与一个字符匹配。

IS NULL:检索Master数据库中spt_values表里low字段为空的数据行。

select * from spt_values where low IS NULL

说明:执行此语句,需要先转到Master数据库。

IS NOT NULL:检索Master数据库中spt_values表里high字段不为空的数据行。

select * from spt_values where high IS NOT NULL

说明:IS NOT NULL表示检索某列不为空的数据行。

Order by排序:显示Course表的所有行,要求按照课程名称的降序显示。

Select * from Course Order by Cname Desc

说明:使用Order by对显示的数据进行排序。


显示Course表的所有行,按照课程学分的降序排列,学分相同时再按照课程号的升序排列。

Select * from Course Order by Ccredit Desc,Cno Asc

说明:可以用逗号隔开多个排序的列或表达式,升序排列时Asc可以省略。

算术表达式:计算3乘以5的结果,及根号2的值。

Select 3*5,SQRT(2) 

说明:Select语句之后,可以是算术表达式,或者是函数。


对Course表,显示课程号、课程名、学分,另外额外增加一列“学时”,学时是等于学分乘以16。

Select Cno,Cname,Ccredit, Ccredit*16 as 学时 from Course

说明:从Course表中检索数据时,额外增加一个原来不存在的列,通过计算得到。

COUNT()函数:统计Teacher表中教授的数量。

Select COUNT(*) from Teacher where Tprot='教授' 

说明:COUNT()函数返回匹配指定条件的行数。COUNT(*) 函数返回表中的记录数,COUNT(column_name)函数返回指定列的值的数目(NULL不计入)。

集合函数:显示Teacher表中教师的最大、最小、平均年龄。

 Select MAX(Tage),MIN(Tage),AVG(Tage) from Teacher

说明:集合函数MAX、MIN、AVG可以用来计算某个字段的最大值、最小值、平均值


对Course表中的必修课的学分进行求和。

Select SUM(Ccredit) from Course where XKLB='必修'

说明:SUM函数用于求和。

Group By分组:对Course表,按照必修和选修进行分类,统计每种类别的课程数量。

Select XKLB as 类别,COUNT(Cname) as 数量 from Course Group by XKLB

说明:“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组


对Student表,按照专业和性别进行分组,显示每个专业、每种性别的学生数量。按照学生数量的降序显示结果。

Select Smajor,Ssex,COUNT(sNo) from Student Group by Smajor,sSex order by COUNT(sNo) Desc

说明:在指定分组字段时,可以不止一个分组字段。

对Teacher表,显示职称及对应的人数,要求只有统计人数大于等于5人才显示。

Select Tprot ,COUNT(Tprot) from Teacher Group by Tprot Having COUNT(Tprot)>=5

4.4.3 多表连接查询

一、连接查询分类

多表连接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征。

连接查询可分为三大类,分别是内连接、外连接,交叉连接

1.内连接

内连接是最典型、最常用的连接查询,它根据表中共同的列来进行匹配,只有满足匹配的条件的数据才能被查询出来。通常,两个表存在主外键关系时会使用到内连接查询。

内联结常使用“=”比较运算符来判断两列数据是否相等,通过使用Inner Join关键字进行表之间的关联。

对SC和Student表进行内连接,显示学生的学号、姓名、课程号、分数。

--方法一
Select  Student.Sno,Student.Sname, SC.Cno,SC.Grade     
from SC Join Student     
On SC.Sno=Student.Sno--方法二
Select  Student.Sno,Student.Sname, SC.Cno,SC.Grade
from SC,Student
where SC.Sno=Student.Sno 

将SC和Student内连接起来,显示相应的信息,其实可以理解为,对SC表中的每一个学号,到Student表中根据学号查找到对应的姓名。

2.外连接

在内连接中,只有满足连接条件的元组才能作为结果输出。但有时我们也希望输出哪些不满足连接条件的元组信息,这时就需要使用外连接。外连接可分为:左连接、右连接、完全外连接

(1)左连接 left join 或 left outer join

(2)右连接 right join 或 right outer join

(3)完全外连接  full join 或 full outer join

3.交叉连接

交叉连接就是表之间没有任何关联条件,查询将返回左表与右表逐个连接的所有行,就是左表的的每一行与右表的所有行一一组合,相当于两个表相乘

没有 WHERE 子句的交叉连接将产生连接所涉及的表的笛卡尔积第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。

三张表连接:显示学生的学号,姓名,课程名,考试分数。

--方法一
Select  Student.Sno,Student.Sname,Course.Cname ,SC.Grade
from SC Join Student
On SC.Sno=Student.Sno
Join Course
On SC.Cno=Course.Cno --方法二
Student.Sno,Student.Sname, Course.Cname ,SC.Grade
from SC,Student,Course
where  SC.Sno=Student.Sno and SC.Cno=Course.Cno

本质就是对SC表,将其中的一些编号,翻译成对应的含义。将学号翻译为了学生的姓名,将课程号翻译为了课程名。三张表的连接,需要两个连接条件。

4.4.4 嵌套查询

1.使用IN的子查询

过IN(或NOT IN)引入的子查询结果是包含零个值或多个值的列表。

子查询返回结果之后,外部查询将利用这些结果。

2.用ANY、ALL修改的比较运算符

可以用ALL或ANY关键字修改引入子查询的比较运算符。SOME是与ANY等效的ISO标准。

以>比较运算符为例,>ALL表示大于每一个值。换句话说,它表示大于最大值。例如,>ALL(1,2,3)表示大于3。

ANY表示至少大于一个值,即大于最小值。因此>ANY(1,2,3)表示大于1。

3.使用EXISTS的子查询

使用EXISTS关键字引入子查询后,子查询的作用就相当于进行存在测试。

外部查询的WHERE子句测试子查询返回的行是否存在。

子查询实际上不产生任何数据,它只返回TRUE或FALSE值。

等于单个值:查询有某科目考试分数为48分的学生信息:

Select * from Student Where Sno = (Select sNo from SC where Grade=48)

In列表:查询在SC表中选修了课程的学生的信息。

Select * from Student  Where Sno in (Select Distinct Sno  from SC)

说明:子查询得到学生的学号,外部查询根据学号找到学生。

Not In:查询没有选修过任何课程的学生的信息。

Select * from Student Where Sno Not In (Select Distinct Sno from SC) 

说明:Not In表示字段的值不在后面的子查询返回结果中。
 

ALL:在教师表中,检索比任何一个女教师年龄都大的男教师的信息。

Select * from Teacher
Where Tsex ='男' and Tage > ALL(Select Tage from Teacher  where Tsex='女')

分析:子查询得到每一位女教师的年龄,外层查询使用“>ALL”的语法,即比集合中最大值还大。


exists:查询选修了B004课程的学生的基本信息。

Select * from Student
where exists (Select * from SC where Sno=Student.Sno  and Cno='B004')

查询没有选修X001课程的学生的基本信息。

Select * from Student where not exists (Select * from SC where Sno=Student.Sno and Cno='X001')

查询与王国在同一个专业学习的所有学生的基本信息。

Select Sno,Sname, Smajor  from Student S1 where exists (Select * from Student S2 Where S1.Smajor = S2.Smajor and S2.Sname='王国') 

4.4.5 集合查询

1.集合查询简介

SELECT语句查询的结果是元组的集合,所以多个SELECT语句的查询结果可进行集合操作,包括并 (Union)、 交 (Intersect) 、差 (Except)。

这三种运算能够进行的前提,是SELECT语句必须拥有相同数量的列,且类型兼容

2.并运算

将学生的学号、姓名,与教师的教工号、姓名,在一个检索结果中显示出来。

Select Sno,Sname from Student Union select Tno ,Tname from Teacher

注意:并运算有UNION和UNION ALL两种用法

UNION:将多个查询结果合并起来时,系统自动去掉重复元组

UNION ALL:将多个查询结果合并起来时,保留重复元组

3.交运算

对专业名以计算机开头的学生,及年龄是21的学生,用交运算求二者的交集。

Select Sno,Sname,Sage ,Smajor from Student
where Smajor like '计算机%'
Intersect
Select Sno,Sname,Sage ,Smajor from Student Where Sage=21

4. 差运算

查询专业名以计算机开头的学生,但不包括年龄是21的学生。

Select Sno,Sname,Sage ,Smajor from Student
where Smajor like '计算机%'
Except
Select Sno,Sname,Sage ,Smajor from Student
Where Sage=21 

4.5 数据更新

4.5.1 插入数据

插入数据分为插入单个元组、插入子查询结果及直接从查询结果创建新表。

(1)插入数据(插入单个元组),语法:

 INSERT [INTO] table_or_view [(column_list)] data_values

(2)插入数据(插入子查询结果) 在INSERT语句中使用SELECT子查询。

(3)插入数据(直接从查询结果创建表) SELECT INTO 语句用于创建一个新表

插入单行数据:在Course中插入一行数据,四项数据为('X004','计算机前沿',2,'选修')。

Insert Into Course(Cno,Cname,Ccredit,XKLB) Values('X004','计算机前沿',2,'选修')

如果不是对表中的所有字段都给出值,或者是要更改列出现的顺序,则必须在表名后面出现字段名的列表。如果是要对表中的所有字段赋值,则可以省略字段名。

 查询创建新表:将Teacher中职称为教授的信息,存入到一张目前还不存在的Experts表。

Select * Into Experts from Teacher
Where Tprot='教授'

说明:语法是“Select  选择列表  Into 新表名  from 原始表”。

 4.5.2 更新数据

更新数据也叫做修改数据。修改数据分为修改符合一定条件元组的值、修改所有元组的值及带子查询的修改。

(1)修改符合一定条件元组的值,语法:

Update table_or_view set column=data_values WHERE search_condition

(2)修改数据(修改所有元组的值),不指定Where字句即可。

(3)带子查询的修改

修改特定行:将Course表中编号是B002的课程,学分修改为3分。

Update Course set Ccredit=3 Where Cno='B002'

说明:通过Where字句限定行,通过“set  字段名=新值”进行数据修改。

 带子查询的修改:对学生表,将现有的专业字段,用来存放该学生选修的第一门课程的编号。

Update Student
set Smajor=(Select top 1 Cno from SC  Where SC.Sno=Student.Sno)

说明:要能成功执行,Smajor必须允许非空

4.5.2 删除数据

删除数据分为删除符合一定条件的元组、删除所有元组及带子查询的删除。

(1)删除符合一定条件的元组,语法:

 DELETE table_or_view FROM table_sources WHERE search_condition

(2)删除所有元组

 DELETE FROM 表名

(3)带子查询的删除

删除满足条件的行:删除Course表中编号为B009的记录。

 Delete from Course Where Cno='B009' 

说明:根据主关键字,找到特定的行,并进行删除。

带子查询的删除: 对Course表中,没有任何学生选修过的课程,执行删除操作。

Delete from Course Where Cno not in (Select Cno from sc)

4.6  视图

4.6.1  定义视图

利用CREATE VIEW语句可以创建视图,该命令的基本语法如下:

CREATE VIEW [ schema_name . ] view_name
[ (column [ ,...n ] ) ]
[ WITH ENCRYPTION ]
AS SELECT_statement
[ WITH CHECK OPTION ]

创建视图的Select的限制

① 定义视图的用户必须对所参照的表或视图有查询权限,即可执行SELECT语句。

② 不能使用COMPUTE或COMPUTEBY子句。

③ 不能使用ORDERBY子句。

④ 不能使用INTO子句。

⑤ 不能在临时表或表变量上创建视图。

创建视图:创建一个名为vwScs的视图,是将学生表中院系是计算机科学学院的学生的学号,姓名,性别,专业四个字段显示出来。

Create view vwScs
As
Select Sno,Sname,Ssex,Tel,EMAIL from Student Where Sdept='计算机科学学院'

创建名为vwScore的视图,显示学生的学号、姓名、课程号、考试分数。

Create view vwScore
As
Select  Student.Sno,Student.Sname, SC.Cno, SC.Grade
from SC,Student
where SC.Sno=Student.Sno

4.6.2 更新视图

更新视图是指,通过视图对基本表中的数据进行修改。更新视图有以下三条规则:

(1)  若视图是基于多个表使用联接操作而导出的,那么对这个视图执行更新操作时,每次只能影响其中的一个表。

(2)  若视图导出时包含有分组和聚合操作,则不允许对这个视图执行更新操作。

(3)  若视图是从一个表经选择、投影而导出的,并在视图中包含了表的主键字或某个候选键,这类视图称为“行列子集视图”,对这类视图可执行更新操作。

通过视图修改数据:通过vwScs视图进行数据更新,将杨华的电话修改为13966667777。

Update vwScs set  tel='13966667777' where Sname='杨华'

4.6.3 查询视图

视图建立完成后,就可以像访问表一样访问视图了。如针对向先前创建的视图,可以执行下面的SQL:

Select * from  vwScore Select * from  vwScore Where Grade <85

4.6.4 视图的优点

视图隐藏了底层的表结构,简化了数据访问操作

因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据。

使用视图,方便了权限管理,让用户对视图有权限而不是对底层表有权限进一步加强了安全性。

视图提供了一个用户访问的接口,当底层表改变后,改变视图的语句来进行适应,使已经建立在这个视图上客户端程序不受影响。

4.6.5 视图修改与加密

对于已经创建的视图,要修改封装在其中的SQL代码,使用“Alter  View  视图名  As…”的语法即可。

视图要进行加密,只需要在创建视图的时候,在视图名称之后使用“WITH ENCRYPTION”即可。

创建视图代码加密:创建名为vwScore2的视图,能显示学生的学号、姓名、课程名、分数。要求创建视图的源代码要加密。

Create View vwScore2
With Encryption As
Select Student.Sno,Student.Sname, Course.Cname ,SC.Grade
from SC,Student,Course
where SC.Sno=Student.Sno and SC.Cno=Course.Cno

4.7 索引

4.7.1 索引概述

在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单

索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

建立索引的一般原则:如果某属性或属性组经常出现在查询条件中,则考虑为该属性或属性组建立索引;如果某个属性经常作为分组的依据列,则考虑为该属性建立索引; 如果某属性和属性组经常出现在连接操作的连接条件中,则考虑为该属性或属性组建立索引。

索引的分类:
主键索引:当创建表时指定的主键列,会自动创建主键索引,并且拥有唯一的特性。
唯一索引(UNIQUE):每一行的索引值都是唯一的(创建了唯一约束,系统将自动创建唯一索引)
聚集索引(CLUSTERED):聚集索引就相当于使用字典的拼音查找,因为聚集索引存储记录是物理上连续存在的,即拼音a过了后面肯定是b一样。
非聚集索引(NONCLUSTERED):非聚集索引就相当于使用字典的部首查找,非聚集索引是逻辑上的连续,物理存储并不连续

4.7.2 建立与删除索引

聚集索引:对Course2表,将Cno字段设置为聚集索引和主关键字字段。

Alter Table Course2
Add Constraint PK_Course2_Cno Primary Key Clustered (Cno)

说明:通过修改表结构的语句,来指定主关键字的字段名称。

唯一索引:对Course2表,将Cname字段设置为唯一索引。

Create unique index idxCourseName on Course2(Cname)

说明:在Create和Index之间使用Unique关键字。

 删除索引:对Course2表,删除创建的索引idxCourseName。

drop index idxCourseName On Course2
drop index Course2.idxCourseName

说明:使用上述两种方法之一,都可以删除对应的索引。

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

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

相关文章

猫头虎分享2023年12月17日博客之星候选--城市赛道博主文章数据

猫头虎分享2023年12月17日博客之星候选–城市赛道博主文章数据 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开…

udp广播的例子

以下是一个使用C语言描述广播发送和接收的简单示例&#xff1a; 发送端&#xff08;广播发送&#xff09;&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #inclu…

Linux gdisk创建GPT分区

gdisk命令工具默认将磁盘划分为GPT格式的分区&#xff1a; lsblk 查看分区 创建GPT格式的分区&#xff1a; 列出磁盘分区表&#xff1a; fdisk -l 有一个新的磁盘sdc 下面将sdc进行GPT分区 输入gdisk /dev/sdc 输入&#xff1f;查看帮助文档&#xff1a; 输入n 创建新的分…

Java@RequestParam注解和@RequestBody注解接收参数

目录 Java后端接收数据 第一章、后端不写任何注解情况下接收参数1.1&#xff09;后端不写注解postman发出get请求1.2&#xff09;后端不写注解postman发出post请求 第二章、后端写RequestParam注解接收参数2.1&#xff09;postman发出post请求2.2&#xff09;postman发出get请求…

MySQL 中的 INSERT 是怎么加锁的?

在之前的博客中&#xff0c;我写了一系列的文章&#xff0c;比较系统的学习了 MySQL 的事务、隔离级别、加锁流程以及死锁&#xff0c;我自认为对常见 SQL 语句的加锁原理已经掌握的足够了&#xff0c;但看到热心网友在评论中提出的一个问题&#xff0c;我还是彻底被问蒙了。他…

【Image】GAN的超详细解释(以及奇怪的问题)

GAN原理 工作流程 下面是生成对抗网络&#xff08;GAN&#xff09;的基本工作原理 在GAN的架构中&#xff0c;有两个关键的组件&#xff1a;生成器&#xff08;Generator&#xff09;和鉴别器&#xff08;Discriminator&#xff09;。 生成器&#xff08;Generator&#xff0…

HTML5之 夜景放烟花

参考网址 https://blog.csdn.net/Gou_Hailong/article/details/122269931 https://blog.csdn.net/u013343616/article/details/122233674 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi…

C/C++ BM2链表内指定区间反转

文章目录 前言题目1. 解决方案一1.1 思路阐述1.2 源码 2. 解决方案二2.1 思路阐述2.2 源码 总结 前言 这题是BM1的升级版&#xff0c;不过是把完整的链表翻转变成了指定区间。 题目 描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转&#xff0c;要求时间复杂度 …

手机蓝牙在物联网超市中的应用

超市一站式购物已进入城市的千家万户。然而人们在选购时却采用直接翻阅商品的方式&#xff0c;既不方便又不卫生甚至大大缩短食品类商品保质期&#xff0c;也给超市商品管理造成很大难度。物联网(The Internet of things)基于射频识别(RFID)、红外感应等技术&#xff0c;把物品…

CentOS环境下Nacos2.3集成PostgreSQL

title: CentOS环境下Nacos2.3集成PostgreSQL date: 2023-12-21 19:15:00 categories: Nacos description: CentOS环境下Nacos2.3集成PostgreSQL 1. 目录 1. 目录2. 简介3. 安装部署 3.1. 部署模式3.2. 环境准备3.3. 下载安装文件3.4. PostgreSQL插件 3.4.1. 下载地址3.4.2. 结…

VScode远程连接服务器,Pycharm专业版下载及远程连接(深度学习远程篇)

Visual Code、PyCharm专业版&#xff0c;本地和远程交互。 远程连接需要用到SSH协议的技术&#xff0c;常用的代码编辑器vscode 和 pycharm都有此类功能。社区版的pycharm是免费的&#xff0c;但是社区版不支持ssh连接服务器&#xff0c;只有专业版才可以&#xff0c;需要破解…

【论文阅读】MCANet: Medical Image Segmentation with Multi-Scale Cross-Axis Attention

文章目录 摘要创新点总结实现效果总结 摘要 链接&#xff1a;https://arxiv.org/abs/2312.08866 医学图像分割是医学图像处理和计算机视觉领域的关键挑战之一。由于病变区域或器官的大小和形状各异&#xff0c;有效地捕捉多尺度信息和建立像素间的长距离依赖性至关重要。本文提…

人工智能_机器学习073_SVM支持向量机_人脸识别模型建模_预测可视化_网格搜索交叉验证最优化参数对比---人工智能工作笔记0113

接着上一节来说,可以看到我们已经找到了合适的参数,然后 我们可以看一下这里 gc.best_params_ 就可以打印出最合适的参数 然后我们把最合适串按说填入到代码中,然后进行计算,看看得分 可以看到得分,训练数据是1.0 然后测试数据得分是0.7857...对吧

2024深入评测CleanMyMac X4.14.6破解版新的功能

随着时间的推移&#xff0c;我们的Mac电脑往往会变得越来越慢&#xff0c;存储空间变得越来越紧张&#xff0c;这时候一个优秀的清理工具就显得尤为重要。作为一款备受好评的Mac清理工具&#xff0c;它能够为你的Mac带来全方位的清理和优化。在本文中&#xff0c;我们将深入评测…

【HarmonyOS开发】OpenHarmony如何实现⼀次开发,多端部署

OpenHarmony提供用户程序框架、Ability框架以及UI框架&#xff0c;能够保证开发的应用在多终端运行时保证一致性。一次开发、多端部署。 多终端软件平台API具备一致性&#xff0c;确保用户程序的运行兼容性。 HarmonyOS提供了用户程序框架、Ability框架以及UI框架&#xff0c;…

WebRTC概念

定义 一个实时通信标准 通话原理 媒体协商 在WebRTC中&#xff0c;参与视频通讯的双方必须先交换SDP信息&#xff0c;获得一个都支持的编码格式 网络协商 目的&#xff1a;找到一条相互通讯的链路 做法&#xff1a;获取外网IP地址映射&#xff0c;通过信令服务器交换“网…

华锐三维云展平台 | VR在线展览云平台提供定制化虚拟展厅制作工具

随着科技的飞速发展&#xff0c;互联网技术的不断革新&#xff0c;广州华锐互动顺应时代需求&#xff0c;开发了VR在线展览云平台&#xff0c;用户可以在平台上自主创建属于自己的3D展厅。VR在线展览云平台正改变着传统展览行业的模式&#xff0c;为参展者提供更高效、更便捷、…

Hazel macOS自动化清理

Hazel是一款在Mac平台上的自动化文件管理工具&#xff0c;它可以帮助用户自动化处理文件&#xff0c;从而提高工作效率和减少重复性任务的时间和精力。以下是Hazel软件的功能特色&#xff1a; 强大的自动化处理功能&#xff1a;Hazel可以根据用户设定的规则&#xff0c;自动执…

Android---Kotlin 学习009

继承 在 java 里如果一个类没有被 final 关键字修饰&#xff0c;那么它都是可以被继承的。而在 kotlin 中&#xff0c;类默认都是封闭的&#xff0c;要让某个类开放继承&#xff0c;必须使用 open 关键字修饰它&#xff0c;否则会编译报错。此外在子类中&#xff0c;如果要复写…

Redis设计与实现之服务器与客户端

目录 一、服务器与客户端 1、初始化服务器 1. 初始化服务器全局状态 2. 载入配置文件 3. 创建 daemon 进程 4. 初始化服务器功能模块 5. 载入数据 6. 开始事件循环 2、 客户端连接到服务器 3、命令的请求、处理和结果返回 4、命令请求实例:SET 的执行过程 5、Redis服…