MySQL基础语法(DDL、DQL、DML、DCL)

目录

SQL通用语法以及分类

SQL通用语法

SQL语句的分类

数据库/表/列的命名规则

DDL语句

DDL设计的数据类型

数据库操作

表操作(必须先进入到数据库)

DQL语句

DQL的执行顺序

基本查询 SELECT

条件查询 WHERE

分组查询 GROUP BY

排序查询 ORDER BY

分页查询 LIMIT

DML语句

添加数据 INSERT INIO

修改/更新数据UPDATE … SET

删除数据DELETE FROM

DCL语句

用户管理

权限控制


SQL通用语法以及分类

SQL通用语法

  1. SQL语句可以多行/单行书写,以分号(;)结尾
  2. SQL语句不区分关键字大小写(不过建议关键字使用大写)
  3. 如果SQL语句比较长,可以使用空格/缩进来增强语句的可读性
  4. 注释:“--”或‘#’来进行单行注释  “/*  */”来进行多行注释

SQL语句的分类

DDL数据定义语言(Data Definition Language)

用来定义数据库对象(数据库、数据库中的表、表中的字段)

DQL数据查询语言(Data Query Language)

查询数据库中表的记录(数据)

DML数据操作语言(Data Manipilation Language)

用来对数据库中表的数据进行增删改

DCL数据控制语言(Data Control Language)

创建数据库用户、控制数据库的访问权限

数据库/表/列的命名规则

只可以使用半角英文字母(大小写字母)、数字、下划线(_)作为名称

$ # ?等特殊字符无法作为名称使用

名称必须以半角英文字母开头(推荐)

在同一个数据库中不能创建相同名称的表,在同一个表中不能创建相同名称的列


DDL语句

Data Definition Language 用来定义数据库对象(数据库、数据库中的表、表中的字段)

DDL设计的数据类型

数值类型

类型

大小

有符号范围(SIGNED 存在负数时的范围)

无符号范围(UNSIGNED)

TINYINT

1字节

(-128,127)

(0,255)

非常小的整数

SMALLINT

2字节

(-2^15,2^15-1)

(0,2^16)

小的整数

MEDIUMINT

3字节

(-2^23,2^23-1)

(0,2^24)

中等的整数

INT/INTEGER

4字节

(-2^31,2^31-1)

(0,2^32)

整数

BIGINT

8字节

(-2^63,2^63-1)

(0,2^64)

大的整数

FLOAT

4字节

(-3.402823466E+38,3.402823466351 E+38)

0和 (1.175494351 E-38,3.402823466 E+38)

单精度浮点型整数

DOUBLE

8字节

(-1.7976931348623157 E+308,1.7976931348623157 E+308)

0和 (2.2250738585072014 E-308,1.7976931348623157 E+308)

双精度浮点型整数

DECIMAL

通过M(精度-数字的长度)和D(标度-小数的长度)的值来得到精确小数

例如:222.2  精度就为4,标度为1

精确小数

字符串类型

类型

大小

CHAR

0-255 bytes

定长的字符串    使用格式char(x)

x表示字符串个长度为x字节

VARCHAR

0-65535 bytes

变长的字符串    使用格式varchar(x)

TINYTEXT

0-255 bytes

短文本字符串

TEXT

0-2^16 bytes

长文本数据

MEDIUMTEXT

0-2^24 bytes

中等长度文本数据

LONGTEXT

0-2^32 bytes

极大文本数据

TINYBLOB

0-255 bytes

二进制形式的短文本数据

BLOB

0-2^16 bytes

二进制形式的长文本数据

MEDIUMBLOB

0-2^24 bytes

二进制形式的中等长度文本数据

LONGBLOB

0-2^32 bytes

二进制形式的极大文本数据

二进制数据与文本数据

关系型数据库一般存放文本数据

二进制数据一般不会存放在关系型数据库中,性能不高,管理不方便;一般采用专门的文件存储器进行二进制数据(视频、音频等都是二进制数据)

char 和varchar的区别

char(x)         如果输入的字符串长度未达到x字节,则未占用的字节会通过0补位

                     性能高,占用空间大

varchar(x)      不会用0补位,根据输入的内容去自动计算占用了多少字节

                     性能低(需要自动计算),但是占用空间小

不过两者都需要注意输入的字符串长度不能超过X字节,一旦超出将会报错

日期类型

类型

大小

范围

DATE

3字节

1000-01-01 至 9999-12-31

年月日  日期值

TIME

3字节

-838:59:59 838:59:59

时分秒  时间值

YEAR

1字节

1901 2155

年      年份值

DATETIME

8字节

1000-01-01 00:00:00 9999-12-31 23:59:59

年月日-时分秒

日期值+时间值

TIMESTAMP

4字节

1970-01-01 00:00:01 2038-01-19 03:14:07

年月日-时分秒

日期值+时间值

数据库操作

[]内容以及绿色部分表示可选项

查询当前服务器中所有数据库

SHOW DATABASES;

创建数据库(字符集和排序规则都是有默认值,为可选操作)

CREATE DATABASE IF NOT EXISTS 数据库名称 [DEFAULT CHARSET字符] [COLLATE 排序规则];  

       IF NOT EXISTS             如果数据库不存在则创建数据库,否则不创建(可以避免报错)

       DEFAULT CHARSET      指定字符集

       COLLATE                     指定排序规则

删除数据库

DROP DATABASE IF EXISTS 数据库名;

       IF EXISTS                     如果数据库存在则删除数据库,否则不删除(可以避免报错)

切换到此数据库

USE 数据库名;

查询当前所在的数据库

SELECT DATABASE();   

show databases;                                                      #查询所有的数据库
create database if not exists test default charset utf8mb4;     #如果test数据库不存在,则创建test数据库,字符集为utf8mb4
drop database if exists test1;                                  #如果test1存在,则删除test1数据库
use test;                                                                 #切换到test数据库

表操作(必须先进入到数据库)

创建表

CREATE TABLE 表名称(

       字段1    字段1的数据类型 [COMMENT字段1的注释],

       字段2    字段2的数据类型 [COMMENT 字段2的注释],

       ……

       字段n    字段n的数据类型 [COMMENT 字段n的注释]

) [COMMENT 这个表的注释];

注意:每个字段之间需要使用“,”间隔,最后一个字段不需要使用”,”

查询表

SHOW TABLES;                                 查询当前数据库中所有的表

DESC 表名称;                                   查询指定表的结构(显示表的信息不完整)

SHOW CREATE TABLE 表名称;          查询指定表的建表语句(显示表的详细信息)

表修改 ALTER TABLE

向表中添加字段

ALTER TABLE 表名称 ADD 字段名 字段的数据类型 [约束] [COMMENT注释];

约束在后续讲解

修改表中已存字段的数据类型

ALTER TABLE 表名称 MODIFY 字段名 新的数据类型;

修改表中已存字段的名称以及数据类型

ALTER TABLE 表名称 CHANGE 旧字段名 新字段名 新字段的数据类型 [约束] [COMMENT注释];

删除表中的字段

ALTER TABLE 表名称 DROP 字段名称;

修改表名

ALTER TABLE 表名称 RENAME TO 新表名称;

表删除 DROP TABLE

删除表

DROP TABLE IF EXISTS表名称;

       IF EXISTS       如果此表存在则删除,不存在也不会报错

删除此表,并重新创建此表

TRUNCATE TABLE 表名称;

注意事项:删除了的表是无法恢复的,在删除时一定要注意

创建表
create table staff(                 #创名为staff的表,并向其添加字段name varchar(50) comment '姓名',number int comment  '工号',gender varchar(1) comment  '性别'
)comment '员工表';查询表
show tables;                    #查看此数据库中所有的表
desc staff;                     #查看名为staff表的结构
show create table staff;        #查看名为staff表的建表语句

表修改
alter table staff add age tinyint unsigned comment '年龄';  #向表staff中添加字段,字段名为age,数据类型为tinyint unsigned
alter table staff modify age tinyint;                       #修改表staffage字段的数据类型,将其数据类型修改为tinyint
alter table staff change age year tinyint unsigned comment '无符号的tinyint类型'; #修改表中的age字段的名称和数据类型,名称修改为year,数据类型修改为tinyint unsigned
alter table staff drop year;       #删除名为year的字段
alter table staff rename staff1;   #staff表重命名为staff1

表删除
drop table if exists test2;    #如果test2表存在,则删除test2truncate table test1;         #删除test1表,并重新创建此表(test1表必须存在)

DQL语句

Data Query Language 查询数据库中表的记录(数据)

DQL的执行顺序

DQL的编写顺序是固定的

SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY分组字段列表 HAVING分组后条件列表 ORDER BY  排序字段列表 LIMIT分页参数;

SELECT         字段列表

FROM            表名列表

WHERE          条件列表

GROUP BY     分组字段列表

HAVING         分组后条件列表

ORDER BY     排序字段列表

LIMIT             分页参数

DQL的执行顺序

FROM            表名列表                     先查找表

WHERE          条件列表                     查询满足条件的字段值

GROUP BY     分组字段列表              对这些满足条件的字段进行分组

HAVING         分组后条件列表           对分组后的字段再进行判断

SELECT         查询后返回的字段列表  此时将分组后的判断通过的数据显示出来

ORDER BY     排序字段列表              对显示出来的字段值做排序

LIMIT             分页参数                     对排序后的值最分页

基本查询 SELECT

SELECT字段列表 FROM表名

查询多个字段

SELECT 字段1,字段2…… FROM 表名

查询全部字段

SELECT * FROM 表名;

查询时为字段设置别名方便阅读(AS可以省略)

SELECT 字段1 [AS 别名1] , 字段2 [AS 别名2]…… FROM 表名;

查询时去除重复记录(DISTINCT关键字只可以使用在第一个字段名之前)

SELECT DISTINCT 字段1,字段2,…… FROM 表名;

select  name from staff1;   #查询staff1表中name字段的所有数据

select * from staff1;       #查询staff1表中所有字段的所有数据

select  name '姓名', number '工号' from staff1; #查询staff1表中name、number字段的所有数据,并设置别名方便阅读

select distinct name from staff1;   #查询staff1表中name字段的所有数据,并去除重复数据

条件查询 WHERE

SELECT字段列表 FROM表名WHERE 条件列表;

先用WHERE查询出符合指定条件的记录,然后再选取出SELECT语句指定的字段

可以指定的条件

算数运算符——所有和NULL的算数运算,结果都是NULL

+     加法

-     减法

*      乘法

/      除法

比较运算符——普通的运算符无法比较NULL值,必须使用特定的IS NULL来匹配NULL值

>            大于

>=         大于等于

<            小于

<=         小于等于

<>或!=   不等于

BETWEEN … AND …     在某个范围之内(左闭右闭)

IN(…)                           …为多个信息,in(…)表示只要满足…中的某个信息就算匹配

LIKE 占位符               模糊匹配(_表示匹配单个字符、%表示匹配任意字符)

IS NULL                       表示NULL值

IS NOT NULL               表示非NULL值

逻辑运算符

AND 或 &&         多个条件同时成立

OR 或 ||               多个条件成立其中一个

NOT 或 !             条件取反

SQL的三值逻辑

普通编程语言的布尔型只有 True 和 False,因此被称为二值逻辑

在SQL中除了True、False,还有Unknown ,因此被称为三值逻辑

UNKNOWN   和NULL比较是使用IS NULL、IS NOT NULL运算符,返回的值为True或Flase

                     和NULL比较使用(>、<、=等)返回的值都为UNKNOWN

True and unknown 为unknown        True or unknown 为 true

False and unknown 为false              False or unknown 为unknown 

Unknown and/or unknown 为 unknown

select age from  staff1 ;         #只查看年龄字段对应的值

select * from staff1 where gender = null ;      #Where的结果为Unknown,无法提取出任何记录
select * from staff1 where gender is null ;     #查询gender为null,并将其对应的所有字段的值都显示出来

select * from staff1 where gender is not null ; #查询gender为非null,并将其对应的所有字段的值都显示出来

select * from staff1 where gender = '' and name = '张三';    #查询性别为男,名为张三的信息,并将其对应的所有字段的值都显示出来

select * from staff1 where gender in ('','') ;            #查询性别为男、或者性别为女的信息,并将其对应的所有字段的值都显示出来

select * from staff1 where name like '__'  ;                #查询名称为2个字符信息,并将其对应的所有字段的值都显示出来

select * from staff1 where number between 20000100 and 20000102 #查询number20000100到20000102之间对应的信息,并将其对应的所有字段的值都显示出来

select * from staff1 where name = null or name = '张三'; #返回的结果就是name=’张三’的结果 

分组查询 GROUP BY

聚合函数——分组查询一般结合聚合函数使用

将一列数据作为一个整体,进行纵向计算(所有NULL值不参与计算)

count     统计行量(一列有多少个值)

max        最大值(一列的最大值)

min        最小值(一列的最小值)

avg         平均值(一列的平均值)

sum        求和(一列的所有数值求和)

注意事项

只有SELECT、HAVING、ORDER BY可以使用聚合函数

聚合函数使用格式

SELECT 聚合函数 (字段列表) AS [别名] FROM 表名 [WHERE条件列表];

select COUNT(*) from emp;   #统计这个表有多少行(*表示统计全部的列,由于Null不参与统计,可能每个列的统计数值不一致,其中会取最大值作为结果返回)
select COUNT(distinct age) from emp#统计age字段有多少种不同的值(去除重复值后的行数)
select max(age) from emp;   #统计age的最大值,并显式出来
select avg(age) from emp;   #统计age的平均值,并显式出来只有count可以使用*,其它函数无法使用*,所有聚合函数都可以使用distinct关键字

分组查询

格式

SELECT 字段列表,[聚合函数] (要显示出来的字段或聚合函数)FROM 表名 [WHERE条件列表]  GROUP BY 需要分组的字段名 [HAVING对分组后的结果执行的过滤条件];

通过使用聚合函数和GROUP BY子句,可以将表分割后再进行汇总

执行顺序:FROM 、 WHERE、GROUP BY、聚合函数、HAVING 、SELECT

Where和Having的区别

执行的时机不同:where是分组之前进行过滤,不满足此过滤条件的不参与分组;having是对分组之后的结果进行过滤

判断条件不同:where无法对聚合函数判断;having可以对聚合函数做判断

执行速度不同:在Where处理的速度要比在Having中快一点

注意事项

此处的聚合函数是对分组后的内容执行

分组之后,需要查询的字段一般就是聚合函数或者分组的字段,查询其他字段没有意义(即SELECT子句处理聚合函数外,一般只出现分组字段)

如果分组的数据中有NULL,则NULL单独为一组

GROUP BY子句显示的结果是无序的,可以通过排序实现

#对gender进行分组,并查询每个组对应的gender
select gender from staff1 group by gender;

#对gender进行分组,并分别统计每个组的数量,并将统计的数量显式出来,然后将count(*)别名为number1
select count(*) number1 from staff1 group by gender;

#对gender进行分组,并分别统计每个组的的数量,并查询每个组对应的gender
select gender,count(*) from staff1 group by gender;

#对gender进行分组,并计算每个组的平均年龄是多少,并查询每个组对应的gender
select gender,avg(age)from staff1 group by gender;

#对gender进行分组,并计算每个组的平均年龄和每个组的数量,并查询每个组对应的gender
select gender,avg(age),count(*) from staff1 group by gender;

#对age小于30以下的人通过gender进行分组,统计每个组的数量,并将数量大于2的提取出来,并查询每个组对应的gender
select gender,count(*) from staff1 where age<30 group by gender having count(*) > 2;

排序查询 ORDER BY

格式

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2;

执行顺序:FROM 、 WHERE、GROUP BY、聚合函数、HAVING 、SELECT、ORDER BY

排序方式

 ASC:升序(默认),在书写时可以省略

 DESC:降序

注意事项

多字段排序时,先按照第一个字段排序;当第一个字段的值相同时,对这些相同的值按照第二个字段排序

NULL不进行排序,含有NULL的列作为排序键时,NULL会在结果的开头或末尾显示

select * from  staff1  order by age asc ;      #对年龄按照升序排序,并显示出所有字段的值select * from  staff1  order by age desc, number  #对年龄按照降序排序,并对相同年龄按照number的升序排序select gender,count(*) from staff1 group by gender order by count(*);        #gender进行分组,并分别统计每个组的的数量,并查询每个组对应的gender,然后对count*)进行升序显示

分页查询 LIMIT

格式

SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 每页显示的记录数;

注意事项

起始索引从0开始,它的的值等于(需要查询页码数-1)* 每页显示的记录数

即:0代表第一页(无论每页的记录数是多少);

如果查询第二页,每页有5条记录,则起始索引为5才表示查询第二页数据

如果查询第二页,每页有10条记录,则起始索引为10才表示查询第二页数据

如果查询的是第一页数据,起始索引可以省略,可以直接LIMIT 查询记录数

分页查询时数据库的方言,不同的数据库有不同的实现,MySQL是LIMIT

select * from staff1 limit 0,2; #查询第一页数据,每页显示2行数据
select * from staff1 limit 3,3; #每页显示3行数据,查询第二页的数据
select gender,count(*) from staff1 group by gender;


DML语句

Data Manipilation Language 用来对数据库中表的数据进行增删改

添加数据 INSERT INIO

实际上insert inio 每执行一次,就执行一行数据的插入

给指定的部分字段添加一条数据

INSERT INTO 表名称 (字段1,字段2,……) VALUES (值1,值2,……);

将字段与字段、值与值之间使用逗号隔开,并包含在()内的形式称为清单

INSERT INIO包含列清单和值清单两种

给全部字段添加一条数据

可以省略列清单

INSERT INTO 表名称 VALUES (值1,值2,……);

给字段添加多条数据

INSERT INTO 表名称 (字段1,字段2,……) VALUES (值1,值2,……), (值1,值2,……);

INSERT INTO 表名称 VALUES (值1,值2,……) ,(值1,值2,……);

将表2的数据添加到表1中(要求两表之间的表结构一致  字段名、字段类型等)

INSERT INTO 表1 列清单 SELECT 字段列表 FROM 表2;

注意表2的字段列表要与表1的列清单内容一致

注意事项

添加的值的顺序要与字段的顺序一致;列清单的数目必须与值清单的数目保持一致,否则无法插入数据

在插入时,如果列清单没有包含所有字段,则没有包含的字段填充默认值(如果该字段没有默认值则设置为NULL)

值的大小要在字段数据类型的规定范围以内

如果值为字符串或者日期,应该用引号包含

insert into staff1 (name, number) values ('张三','20000101');      #给指定的字段添加一组数据insert into staff1 values ('李四','20000102','');                #给全部字段添加一组数据insert into staff1 (name, number,gender) values ('老五','20000103',''),('六妹','20000104','');    #给指定的字段添加多组数据

修改/更新数据UPDATE … SET

修改某个字段的值

UPDATE 表名称 SET 字段名=值1  [WHERE 条件];

如果没有修改条件,则会将整张表中此字段对应的所有值都修改为值1

修改多个字段的值

UPDATE 表名称 SET 字段名=值1,字段名=值2,…… [WHERE 条件];

设置NULL清空(将某列值都设置为NULL)

UPDATE 表名称 SET 字段名=NULL;

update staff1 set gender = '';     #修改某个字段的值(无条件)  将表中gender字段的所有值都修改为男update staff1 set number = 20000100 where name = '张三';      #修改某个字段的值(有条件) 将name为张三的number修改为20000100update staff1 set name='五弟',number=1111111 where name='老五'; #修改多个字段的值(有条件)  将neme为老五的name修改为五弟,number修改为1111111

删除数据DELETE FROM

DELETE FROM 表名称 [WHERE 条件]

如果有条件,则表示删除条件对应的所有数据;如果没有条件,则会删除整张表的数据

DELETE语句无法删除某一个字段的值,删除某一个字段的值可以使用UPDATE将某个字段的值设置为NULL

DELETE语句只可以使用WHERE语句,无法使用GROUP BY、ORDER BY等语句

delete from staff1 where name='六妹';     #删除name为六妹送对应的全部数据update staff1 set number=NULL where name='张三'#删除name为张三的number信息


DCL语句

Data Control Language 数据控制语言,用来管理数据库用户、控制数据库的访问权限等

用户管理

查询用户

用户所具有的全新信息都是存放在mysql数据库中的user表中

所以我们可以直接进入mysql数据库,然后查询user表就可以查询用户

在MySQL中的用户通过Host(主机名—此用户可以在哪些主机上访问此SQL)和User(用户名)来定位

use mysql;              #进入到名为mysql的数据库中
select * from user;     #查询数据库中user表的所有字段及其值

创建用户

CREATE USER ‘用户名’@’主机名’ IDENTIFIED BY ‘密码’;

主机名为% 表示可以在任意主机访问数据库

create user 'admin'@'localhost' identified by '123456';     #创建用户名为admin,主机名为localhost的用户,密码为123456   此时创建的用户没有分配权限

修改用户密码

ALTER USER ‘用户名’@’主机名’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;

musql_naative_password:为密码的一种加密方式(MySQL默认的加密方式,采用hash)

其它的加密方式:sha256_password(使用sha-256算法)、caching_sha2_password(使用sha-256算法,只是在服务器端使用内存缓存的方式使得重新连接的用户更快的进行认证)

alter user 'admin'@'localhost' identified with mysql_native_password by '12345'#修改密码为12345

删除用户

DROP USER ‘用户名’@’主机名’;

drop user 'admin'@'localhost'#删除用户

权限控制

常用的权限类型

USAGE                                没有任何权限

ALL(ALL PRIVILEGES)      所有权限

SELECT                               查询数据的权限

INSERT                               插入数据的权限

UPDATE                              修改数据的权限

DELETE                               删除数据的权限

ALTER                                 修改表/字段的权限

DROP                                 删除数据库/表/视图的权限(后续讲解视图)

CREATE                              创建数据库/表的权限

查询用户权限

SHOW GRANTS FOR ‘用户名’@’主机名’;

show grants for 'admin'@'localhost';        #查询权限显示结果如下:GRANT USAGE ON *.* TO `admin`@`localhost`  表示对所有数据库的所有表都没有权限,只是能够登录连接到SQL

授予用户权限

GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@’主机名’;

grant all on test.staff1 to 'admin'@'localhost';    #对此用户授予权限(对名为test数据库下的staff1表有所有权限)此时查询此用户的权限显示如下:
GRANT ALL PRIVILEGES ON `test`.`staff1` TO `admin`@`localhost`

撤销用户权限

REVOKE 权限列表 ON 数据库名.表名 FROM  ‘用户名’@’主机名’;

revoke delete,update on test.staff1 from 'admin'@'localhost'; #撤销此用户的权限(对名为test数据库下的staff1表的删除数据权限和修改数据的权限进行撤销)

注意事项

多个权限之间使用逗号分隔

授权时数据库名和表名都可以使用*代替,表示所有数据库、所有表

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

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

相关文章

Python Flask构建微信小程序订餐系统 (十)

🔥 编辑会员信息 🔥 编辑会员信息可以通过点击会员列表操作,也可以点击会员信息详情点击进行操作 🔥 修改编程会员信息列表布局 🔥 修改 web/templates/member/index.html 文件,添加跳转到编辑会员信息的页面 web/templates/member/set.html 🔥 创建用于会员…

python机器学习(四)线性代数回顾、多元线性回归、多项式回归、标准方程法求解、线性回归案例

回顾线性代数 矩阵 矩阵可以理解为二维数组的另一种表现形式。A矩阵为三行两列的矩阵&#xff0c;B矩阵为两行三列的矩阵&#xff0c;可以通过下标来获取矩阵的元素&#xff0c;下标默认都是从0开始的。 A i j : A_{ij}: Aij​:表示第 i i i行&#xff0c;第 j j j列的元素。…

在虚拟机中安装anaconda和pytorch

首先我用的是VMware&#xff0c;ubuntu16.04. 首先建议安装anaconda,登录官网Free Download | Anaconda 下载完成后&#xff0c;来到安装文件目录处&#xff0c;打开终端&#xff0c; 然后在终端输入bash <anaconda文件名> 然后就一直enter和yes到底&#xff0c;直到安…

服务器中了Locked勒索病毒怎么解决,勒索病毒解密恢复方式与防护措施

服务器是企业重要数据存储和处理的关键设备&#xff0c;然而&#xff0c;众所周知&#xff0c;服务器系统并非完全免受网络攻击的。其中一种常见的威胁是勒索病毒&#xff0c;其中一种恶名昭彰的变种是Locked勒索病毒。Locked勒索病毒采用了对称AES与非对称RSA的加密形式&#…

曲线长度预测神经网络设计与实现

在本文中&#xff0c;我们使用深度神经网络 (DNN) 解决几何中的一个基本问题&#xff1a;曲线长度的计算。 我们从监督学习方法的示例中学习了几何属性。 由于最简单的几何对象是曲线&#xff0c;因此我们重点学习平面曲线的长度。 为此&#xff0c;重建了基本长度公理并建立了…

Microsoft发布用于 AutoML 算法和训练的 NNI v1.3

将传统的机器学习方法应用于现实世界的问题可能非常耗时。自动化机器学习 &#xff08;AutoML&#xff09; 旨在改变这种状况——通过对原始数据运行系统流程并选择从数据中提取最相关信息的模型&#xff0c;使构建和使用 ML 模型变得更加容易。 为了帮助用户以高效和自动的方…

【雕爷学编程】Arduino动手做(170)---LGT8F328P 开发板

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

【C++ 程序设计】第 1~9 章:常见知识点汇总

目录 一、C 语言简介 二、面向对象的基本概念 三、类和对象进阶 四、运算符重载 五、类的继承与派生 六、多态与虚函数 七、输入/输出流 八、文件操作 九、函数模板与类模板 一、C 语言简介 知识点名称内容C语言的发展简史★★1. C 语言是 C 语言的前身 &…

PyTorch深度学习实战(6)——神经网络性能优化技术

PyTorch深度学习实战&#xff08;6&#xff09;——神经网络性能优化技术 0. 前言1. 数据准备1.1 数据集分析1.2 数据集加载 2. 使用 PyTorch 训练神经网络2.1 神经网络训练流程2.2 PyTorch 神经网络训练 3. 缩放数据集4. 修改优化器5. 构建深层神经网络小结系列链接 0. 前言 …

C#之事件

目录 一、发布者和订阅者 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;有关事件的重要事项 &#xff08;三&#xff09;有关事件的私有委托需要了解的重要事项 二、源代码组件概览 三、声明事件 事件是成员 四、订阅事件 五、触发事件 六、标准事件的…

【Zerotier】通过docker自建PLANET服务器

在如今全球互联的时代&#xff0c;我们对于互联网的依赖程度越来越高。然而&#xff0c;传统的网络连接方式在某些情况下可能会受到一些限制&#xff0c;例如局域网的范围限制、防火墙的阻断或者设备所处的多层NAT等。但是&#xff0c;现在有一个名为ZeroTier的工具出现了&…

【C语言进阶】文件操作

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C语言 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、什么是文件 1.1程序文件 1.2数据文件 1.3文件名 二、文件的打开和关闭 2…

银河麒麟服务器v10 sp1 nginx 部署项目

上一篇&#xff1a;银河麒麟服务器v10 sp1 nginx开机自动启动_csdn_aspnet的博客-CSDN博客 由于项目为前后端分离&#xff0c;前端项目使用nginx部署&#xff0c;VUE项目打包后上传至银河麒麟服务器&#xff1a; 8063 为前端项目文件目录&#xff0c;修改配置 &#xff0c;默认…

脑电信号处理与特征提取——三. 脑电实验设计的原理与实例(古若雷)

三、脑电实验设计的原理与实例 被试间设计的实验结果也有可能是人员不同造成的&#xff0c;所以建议被试内设计。

双端队列(deque)与优先队列(priority_queue)

文章目录 一.双端队列——deque1.deque的优点与缺点2.deque的原理 二.优先队列——priority_queue1.什么是优先队列&#xff1f;2.优先队列的基本使用3.什么是仿函数&#xff1f;4.优先队列的模拟实现 一.双端队列——deque 在上一章stack、queue的模拟实现中&#xff0c;我们…

Mysql 数据库开发及企业级应用

文章目录 1、Mysql 数据库开发及企业级应用1.1、为什么要使用数据库1.1.1、数据库概念&#xff08;Database&#xff09;1.1.2、为什么需要数据库 1.2、程序员为什么要学习数据库1.3、数据库的选择1.3.1、主流数据库简介1.3.2、使用 MySQL 的优势1.3.3、版本选择 1.4、Windows …

【VUE】解决图片视频加载缓慢/首屏加载白屏的问题

1 问题描述 在 Vue3 项目中&#xff0c;有时候会出现图片视频加载缓慢、首屏加载白屏的问题 2 原因分析 通常是由以下原因导致的&#xff1a; 图片或视频格式不当&#xff1a;如果图片或视频格式选择不当&#xff0c;比如选择了无损压缩格式&#xff0c;可能会导致文件大小过大…

unity 控制text根据字数自动扩展大小,并扩展UI背景

需求&#xff1a;文字内容位置保持不变&#xff0c;向下增加&#xff0c;背景框随之同步扩展。 1.UGUI 九宫格 拉伸 对背景框图片资源处理&#xff0c;避免图片拉伸。 (10条消息) unity UGUI 九宫格 拉伸_unity九宫格拉伸_野区捕龙为宠的博客-CSDN博客 2.背景框添加组件 3.…

php裁剪图片,并给图片加上水印

本次以裁剪四个图片为例&#xff0c;图片如下 代码如下 public function cutImg($imgUrl){try{// 读取原始图片$src_img imagecreatefromjpeg($imgUrl);// 获取原始图片的宽度和高度$src_width imagesx($src_img);$src_height imagesy($src_img);// 计算每个部分的宽度和高…

【数字信号处理】带通采样定理及其MATLAB仿真

目录 一、带通采样定理1.1 内容1.2 公式推导 二、MATLAB信号仿真2.1 信号仿真实验2.2 MATLAB代码 三、总结参考 一、带通采样定理 按照奈奎斯特采样定理(低通采样)&#xff0c;采样频率 f s f_{s} fs​ 要大于等于信号中最高频率 f m a x f_{max} fmax​ 的2倍&#xff0c;才…