Mysql数据库的SQL语言详解

目录

一、数据库的基础操作

1、数据库的基本查看和切换

1.1 查看数据库信息

1.2 切换数据库

1.3 查看数据库中的表信息

1.4 查看数据库或数据库中表的结构(字段)

1.5 数据类型 

1.5.1 整数型

1.5.2 浮点型(float和double)

1.5.3 定点数

1.5.4 字符串

1.5.5 日期和时间类型

1.6 数据类型的修饰符

1.6.1 适用所有类型的修饰符

1.6.2 适用数值型的修饰符

2、使用SQL语言管理数据库

2.1 SQL语言的概述

2.2 管理数据库(DDL)

2.2.1 创建库或表

2.2.2 删除库或表

2.3 管理表中的数据(DML)

2.3.1 表中插入数据

2.3.2 修改表中的数据

2.3.3 删除表中的数据 

2.4 查询表中的数据(DQL)

2.4.1 未指定条件查询

2.4.2 指定条件查询

2.5 修改表名和表结构(DCL)

2.5.1 修改表名

2.5.2 修改表结构

二、数据库的高级操作

1、清空表命令的区别

1.1 drop table 表名

1.2 truncate table 表名

1.3 delete from 表名

2、创建临时表

3、克隆表

三、数据库用户管理

1、登录用户管理

1.1 新建并查看用户

1.2 修改用户的用户名和密码

1.2.1 修改用户的用户名

1.2.2 修改用户密码

1.3 删除用户

1.4 忘记root密码解决方法

2、登录用户权限管理

2.1 常见的用户权限

2.2 查看用户已有权限

2.3 授权操作

2.3.1 对不存在的用户进行创建并授权

2.3.2 对存在的用户进行授权

2.4 撤销用户权限


一、数据库的基础操作

1、数据库的基本查看和切换

1.1 查看数据库信息

show databases;      #查看数据库信息

1.2 切换数据库

use  数据库名;         #切换至具体的数据库

1.3 查看数据库中的表信息

show tables;                     #查看当前所处数据库的表信息
show tables in 数据库名;         #查看指定数据库的表信息

1.4 查看数据库或数据库中表的结构(字段)

describe(简写:desc)  表名               #查看当前所处数据库的指定表的结构
describe(简写:desc)  数据库.表名        #查看指定数据库中表的结构

describe(简写:desc)  表名\G             #查看当前所处数据库的指定表的结构
describe(简写:desc)  数据库.表\G        #查看指定数据库中表的结构

1.5 数据类型 

MySQL支持多种内置数据类型,分别为数值类型、日期/时间类型、字符串(字符)类型

数据类型参考链接:https://dev.mysql.com/doc/refman/8.0/en/data-types.html

1.5.1 整数型
  • tinyint(m) :1个字节 范围(-128~127) 有一个正或负的表示符

  • smallint(m): 2个字节 范围(-32768~32767)

  • mediumint(m) :3个字节 范围(-8388608~8388607)

  • int(m): 4个字节 范围(-2147483648~2147483647)

  • bigint(m) :8个字节范围(+-9.22*10的18次方)

上述数据类型,如果加修饰符unsigned后,则最大值翻倍

如:tinyint unsigned的取值范围为(0~255)

1.5.2 浮点型(float和double)
  • float(m,d) :单精度浮点型 8位精度(4字节) m总个数,d小数位, 注意: 小数点不占用总个数
  • double(m,d) :双精度浮点型 m16位精度(8字节) m总个数,d小数位, 注意: 小数点不占用总个数

如:一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.456,但总个数还以实际为准,即6位

1.5.3 定点数

在数据库中存放的是精确值,存为十进制 decimal(5.2) 100.01 - 999.99

格式 decimal(m,d) 表示 最多 m 位数字,其中 d 个小数,小数点不算在长度内,参数m<65 是总个数,d<30且 d<m 是小数位

如: decimal(6,2) 总共能存6位数字,末尾2位是小数,字段最大值 9999.99 (小数点不算在长度内)

1.5.4 字符串
类型大小用途
char0-255 bytes定长字符串
varchar0-65535 bytes变长字符串
tinyblob0-255 bytes不超过 255 个字符的二进制字符串
tinytext0-255 bytes短文本字符串
blob0-65 535 bytes二进制形式的长文本数据
text0-65 535 bytes长文本数据
mediumblob0-16 777 215 bytes二进制形式的中等长度文本数据
mediumtext0-16 777 215 bytes中等长度文本数据
longblob0-4 294 967 295 bytes二进制形式的极大文本数据
longtext0-4 294 967 295 bytes极大文本数据

char和varchar的比较:

参考:https://dev.mysql.com/doc/refman/8.0/en/char.html
charvarchar
存储固定长度的字符串存储可变长度的字符串
存储时会根据定义的长度固定占用空间,如果存储的字符串长度小于定义的长度,会在后面补空格存储时根据实际数据长度动态分配空间,只占用实际数据长度加上一定的长度描述开销
适用于存储长度固定的数据,比如固定长度的代码或者状态适用于存储长度可变的数据,比如变长的描述文本或者用户名
如果存储的数据大部分是相同长度的,使用CHAR可能比较高效如果存储的数据长度变化较大,使用VARCHAR可以节省空间

如:

Valuechar(4)Storage RequiredvarcharStorage Required
''''4 bytes''1 byte
'ab''ab'4 bytes'ab'3 bytes
'abcd''abcd'4 bytes'abcd'5 bytes
'abcdefgh''abcd'4 bytes'abcd'5 bytes
  • char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不限于此
  • char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节,所以varchar(4),存入3个字符将占用4个字节
  • 如果存入n多个字符数,则char(n)和varchar(n)就会截取前n个
  • char类型的字符串检索速度要比varchar类型的快

拓展:varchar(50) 能存放几个 UTF8 编码的汉字?

答:mysql 5.0以上版本 varchar(50) 指的是50字符,无论存放的是数字、字母还是 utf8 编码的汉字,都可以存放50个 

1.5.5 日期和时间类型

表示时间值的日期和时间类型为datetime、date、timestamp、time和year

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值

类型大小 ( bytes)范围格式用途
date31000-01-01/9999-12-31YYYY-MM-DD日期值
time3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
year11901/2155YYYY年份值
datetime81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp41970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS混合日期和时间值,时间戳

1.6 数据类型的修饰符

1.6.1 适用所有类型的修饰符
名称说明
null数据列可包含NULL值,默认值
not null数据列不允许包含NULL值,*为必填选项
default默认值
primary key主键,所有记录中此字段的值不能重复,且不能为NULL
unique key唯一键,所有记录中此字段的值不能重复,但可以为NULL
character setname 指定一个字符集
1.6.2 适用数值型的修饰符
名称作用
auto_increment自动递增,适用于整数类型
unsigned无符号

2、使用SQL语言管理数据库

2.1 SQL语言的概述

什么是SQL语言: 

  • Structured Query Language的缩写,即结构化查询语言
  • 关系型数据库的标准语言
  • 用于维护管理数据库:包括数据查询、数据更新、访问控制、对象管理等功能

SQL中的名词:

  • 数据库:database
  • 表:table,行:row 列:column
  • 索引:index
  • 视图:view
  • 存储过程:procedure
  • 存储函数:function
  • 触发器:trigger
  • 事件调度器:event scheduler,任务计划
  • 用户:user
  • 权限:privilege

数据库对象和命名:

  • 数据库的组件(对象)

数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等。

  • 命名规则

①必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
②不要使用MySQL的保留字,如 table、select、show、databases。
③数据库名、表名、用户名区分大小

SQL语言规范:

  • 在数据库系统中,SQL 语句不区分大小写,建议用大写。
  • SQL语句可单行或多行书写,默认以 " ; " 结尾。
  • 关键词不能跨多行或简写。
  • 用空格和TAB 缩进来提高语句的可读性。
  • 子句通常位于独立行,便于编辑,提高可读性。

SQL语言的分类: 

  • DDL:数据定义语言(Data Definition Language),用于创建数据库对象,如库、表、索引等。

如:create,drop,alter等。

  • DML:数据操纵语言(Data Manipulation Language),用于对表中的数据进行管理。

如:select、update、insert、delete 等。

  • DQL:数据查询语言( Data Query Languag ),用于从数据表中查找符合条件的数据记录。

如:select

  • DCL:数据控制语言(Data Control Language),用于设置或者更改数据库用户或角色权限

如:grant,revoke

  • TCL:事务控制语言(Transaction Control Language),用于管理数据库中的事务。 TCL经常被用于快速原型开发、脚本编程、GUI和测试等方面。

如: commit,rollback,savepoint

2.2 管理数据库(DDL)

用于创建数据库对象,如库、表、索引等

2.2.1 创建库或表
#创建新的数据库
create database 数据库名;

#创建数据库中新的表
create table (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
create database xgy;
show databases;
use xgy;

create table dianzi (id int not null,name char(10) not null,score decimal(4,2),passwd char(50) default'',primary key (id));

create table tongxin (id int not null,name char(10) not null,score decimal(4,2),passwd char(50) default'',primary key (id));
#创建表名为tongxin的表:且第一列为id、数据类型为整型,不能为空;第二列为name、数据类型为固定长度的字符类型为10字节,不能为空;第三列为score、数据类型为指定长度数组、第四列为passwd、数据类型为固定长度的字符类型为50字节,默认可为空;指定主键为id列

show tables;

desc dianzi;

2.2.2 删除库或表
#删除指定的数据库
drop  database 数据库名;

#删除当前数据库中的指定表
drop table 表名;
#删除指定的数据库中的表
drop table 数据库名.表名;

2.3 管理表中的数据(DML)

对表中的数据进行管理,用来插入、删除和修改数据库中的数据

2.3.1 表中插入数据
insert into 表名(字段1,字段2[,...]) values (字段1的值,字段2的值,...);
insert into 表名 values (字段1的值,字段2的值,...);
#指定字段插入对应的字段值
insert into dianzi(id,name,score,passwd) values(1,'cxy',88,'123456');
#不指定字段,按创建表时的字段,对应插入字段的值
insert into dianzi values(2,'zly',95,password('654321'));
#其中password指加密显示密码
select * from dianzi;    #查询表中所有数据

2.3.2 修改表中的数据
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
#改score值
update dianzi set score=70 where name='cxy';
select * from dianzi;
update dianzi set score=90 where id='1';
select * from dianzi;

#改name值
update dianzi set name='xz' where id='2';
update dianzi set name='wuq' where score='90.00';
select * from dianzi;

2.3.3 删除表中的数据 
delete from 表名 where 条件表达式;      #删除具体的一条数据
delete from 表名;     #删除表里所有的数据,但字段和结构还存在
delete from dianzi where name='xz';
select * from dianzi;
delete from dianzi;
select * from dianzi;

2.4 查询表中的数据(DQL)

SELECT 字段名1,字段名2[,...] FROM 表名[WHERE 条件表达式];
2.4.1 未指定条件查询
select * from 表名[\G]            #查询当前所处库中表里的数据
select * from 库名.表名[\G]       #查询指定数据库中表里的数据

2.4.2 指定条件查询
select 字段名1,字段名2,……  from 表名 where 条件表达式;
select * from dianzi;
select name,score from dianzi;
select name,score from dianzi where name='cqq';
select score from dianzi where name='cqq';

#行显示
select * from dianzi limit 3;
select * from dianzi limit 3,2;
select id,name from dianzi limit 3;

2.5 修改表名和表结构(DCL)

2.5.1 修改表名
#修改表名
alter table 旧表名 rename 新表名;

2.5.2 修改表结构

(1)扩展表结构(增加字段)

alter table 表名 add 字段名 varchar(50) default '地址不详';
#default '地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用
alter table dianzi add address varchar(50) default '地址不详';
desc dianzi;
select * from dianzi;

update dianzi set address='江苏南京' where id='1';

(2)修改字段(列)名,添加唯一键

alter table 表名 change 旧列名 新列名 数据类型 [unique key];
#unique key:唯一键(特性:唯一,但可以为空,空值只允许出现一次)   
#Primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。)
alter table dianzi change name mingzi varchar(15) unique key;

insert into dianzi values(4,'zly',55,password('444444'),'浙江杭州');
insert into dianzi values(4,'cqq',55,password('444444'),'浙江杭州');

(3)删除字段

alter table 表名 drop 字段名;

(4)修改字段类型

alter table 表名 modify column 字段名 类型;
#数据库中表字段是varchar(50),修改类型可以用modify(谨慎修改类型,可能会导致原有数据出错)
alter table dianzi modify column mingzi char(20);
desc dianzi\G;

二、数据库的高级操作

1、清空表命令的区别

特性/命令drop table 表名truncate table 表名delete from 表名
语言类属于DDL属于DDL属于DML
回滚恢复不可回滚(无法恢复)不可回滚(无法恢复)可回滚(可恢复)
是否带where不可带where不可带where

可带where

删除情况表内容和结构删除表内容删除(结构保留)表结构保留,表内容视where执行情况
删除速度删除速度快删除速度快删除速度慢,需要逐行删

1.1 drop table 表名

drop table语句用于完全删除表,包括表结构和所有数据。执行drop table将永久删除整个表,需要小心使用,因为数据无法恢复

1.2 truncate table 表名

truncate清空表后,没有返回被删除的条目

truncate table语句用于从表中删除所有行,但保留表的结构。它比delete语句更快,因为它不是逐行删除,而是直接删除整个表的数据,ID会从1开始重新记录

insert into tongxin(name,score,passwd) value('mimi',54,password('123456'));

1.3 delete from 表名

delete清空表后,返回的结果内有删除的记录条目

delete工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用delete from删除
所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录

insert into tongxin(name,score,passwd) value('mimi',54,password('123456'));

2、创建临时表

可以创建临时数据库(Temporary Database)来存储临时数据或执行临时操作。临时数据库是在当前连接会话中创建的数据库,当会话结束时,临时数据库会自动删除,不会保留数据或数据库结构。这对于需要临时存储数据或执行临时操作而不想在数据库中永久保存这些数据时非常有用

create temporary table 表名 (字段1 数据类型,字段2 数据类型[, ...]
create temporary table class (id int(4) zerofill primary key auto_increment,name varchar(15) not null,cardid int(18) not null unique key,work varchar(60));

#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL

insert into class values(1,'xyh',32011063,'student');
insert into class values(2,'lyq',13425576,'player');
insert into class values(3,'cht',13425576,'cooker');
insert into class values(3,'cht',14257396,'cooker');

insert into class(name,cardid,work) values('whr',87654321,'teacher');

当退出数据库再重新进入,临时数据库会自动删除,不会保留数据或数据库结构

3、克隆表

克隆表是基于现有表结构和数据创建一个全新的表,新表与原表具有相同的结构和数据,但是它们是独立的

方法一:建议迁移数据时使用

create table dianzi2 like dianzi;      #复制dianzi表的格式字段
insert into dianzi2 select * from dianzi;      #复制dianzi表中的数据内容

方法二:建议备份数据时使用

create table dianzi3 (select * from dianzi);     #一条命令实现复制字段和内容,不包括结构

三、数据库用户管理

1、登录用户管理

1.1 新建并查看用户

create user '用户名'@'来源地址' [identified by [password] '密码'];
 
#说明
#'用户名':指定将创建的用户名
#'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录,可用通配符%
#'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密
若使用加密密码,需要先使用select password('密码');获取密文,再在语句中添password '密文';
若省略“identified by"部分,则用户的密码将为空(不建议使用)

明文密码创建登录用户:

用户信息存放在 mysql 数据库下的 user 表(MySQL 服务下存在一个系统自带的 mysql 数据库

create user 'dh'@'localhost' identified by '123456';
use mysql;
select * from user\G;      #查看登录用户详细信息

加密密码创建登录用户:

select password('123456');    #先获取加密的密码​
create user 'xz'@'localhost' identified by password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

select user,authentication_string,Host from user;   
#查看用户信息,创建后的用户保存在mysql数据库的user表里

1.2 修改用户的用户名和密码

1.2.1 修改用户的用户名
rename user 'xz'@'localhost' to 'xxy'@'localhost';

1.2.2 修改用户密码

修改当前用户密码:

 set password = password('abc123');

修改指定用户密码: 

普通用户只有修改自身密码的权限;root用户是超级管理员,它不仅可以修改自身密码,还能修改其他用户的密码

set password for 'cxy'@'localhost'=password('123456');

1.3 删除用户

drop user 'xxy'@'localhost';

1.4 忘记root密码解决方法

该操作必须是在数据库本机且为root用户,才可进行

(1)修改 /etc/my.cnf 配置文件,添加免密登录mysql,并重启数据库服务

[root@localhost ~]#vim /etc/my.cnf
[mysqld]
skip-grant-tables    
#添加,使登录mysql不使用授权表
[root@localhost ~]#systemctl restart mysqld.service

(2)无密码登录之后,修改数据库用户中的 root 密码

update mysql.user set authentication_string = password('123') where user='root';
#用于更新MySQL数据库系统表mysql.user中的用户root的密码。AUTHENTICATION_STRING是MySQL 5.7.0以后版本中用于存储密码的字段名

(3)登录测试新密码

(4)撤销添加的免密码认证设置,重启数据库服务

[root@localhost ~]#vim /etc/my.cnf
[mysqld]
#skip-grant-tables    
#撤销添加的免密码认证设置
[root@localhost ~]#systemctl restart mysqld.service

2、登录用户权限管理

2.1 常见的用户权限

权限权限说明权限级别
create     创建数据库、表或索引的权限数据库、表或索引
drop删除数据库或表的权限数据库或表
grant option赋予权限选项数据库或表
references引用权限数据库或表
alter更改表的权限数据表
delete删除表数据的权限数据表
index操作索引的权限数据表
insert添加表数据的权限数据表
select查询表数据的权限数据表
update更新表数据的权限数据表
create view创建视图的权限视图
show view查看视图的权限    视图
alter routine        更改存储过程的权限存储过程
create routine             创建存储过程的权限存储过程
execute              执行存储过程权限存储过程
file           服务器主机文件的访问权限文件管理
create temporary tables 创建临时表的权限服务器管理
lock tables       锁表的权限  服务器管理
create user           创建用户的权限服务器管理
reload         执行 flush privileges, refresh, reload 等刷新命令的权限  服务器管理
process                查看进程的权限服务器管理
replication client  查看主从服务器状态的权限服务器管理
relication slave        主从复制的权限服务器管理
show databases           查看数据库的权限服务器管理
shutdown             关闭数据库的权限服务器管理
super            超级权限  服务器管理
all [privilege]    所有权限    
usage没有任何权限   

2.2 查看用户已有权限

查看当前用户(自己)的权限:

show grants;      #查看当前用户(自己)的权限

查看其他用户的权限:

show grants for '用户名'@'localhost';      #查看其他用户的权限

2.3 授权操作

2.3.1 对不存在的用户进行创建并授权

[NO_AUTO_CREATE_USER], 即在grant语句中禁止创建空密码的账户,使用grant语法创建用户必须带上 “identified by”关键字设置账户密码,否则就被认为是非法的创建语句

grant 权限列表 on 数据库名.表名 to  '用户名'@'来源地址' identified by '密码';
如:grant all on *.* to  'xz'@'localhost' identified by '123';
#给用户xz授予本地登录的所有操作权限

#说明
#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔如"select, insert,update"。 使用"all"表示所有权限(实际上部分权限仍无法使用,只包括大部分权限),可授权执行任何操作。
#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符*。 例如,使用"mysql.*" 表示授权操作的对象为mysql数据库中的所有表。  ​  
#'用户名'@'来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。 来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址。
#identified by:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略"identified by"部分,则用户的密码将为空。
grant select on xgy.dianzi  to  'cxy'@'172.16.12.%' identified by '123456';

use mysql;
select user,authentication_string,Host from user;
show grants for 'cxy'@'172.16.12.%';

mysql服务器本地连接查看: 

使用Navicat图形化工具远程连接:

2.3.2 对存在的用户进行授权
grant all on xgy.dianzi to 'dh'@'localhost';
show grants for 'dh'@'localhost';

登录到被授权的用户进行测试: 

update dianzi set score=99 where id='1';
delete from dianzi where id='5';
select * from dianzi;

2.4 撤销用户权限

 revoke 权限列表/all on 库名.表名 from '用户名'@'来源地址';
 revoke all on xgy.dianzi from 'dh'@'localhost';

登录到用户dh进行测试:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Lealfet.js展示Turf.js生成的平滑曲线实践

目录 前言 一、问题的由来 1、创建网页框架 2、创建map对象 3、构建点位&#xff0c;生成路线 二、Turf.js平滑曲线改造 1、官网方法介绍 2、0.4弯曲度曲线 3、0.85弯曲度曲线 4、0.1度弯曲曲线 5、综合对比 总结 前言 在很多的关于路线的gis应用中&#xff0c;我们…

什么是485数据采集模块?

在工业自动化、智能楼宇、环境监测等众多领域&#xff0c;数据的采集与传输是实现智能化管理的关键。而485数据采集模块&#xff0c;作为一种高效、稳定的数据采集设备&#xff0c;正日益受到广泛关注。HiWoo Box&#xff0c;作为一款卓越的485数据采集模块&#xff0c;以其强大…

Android性能自测

目录 一、应用启动耗时自测 二、帧率查看 三、Top命令查看系统资源占用 3.1 第一行&#xff1a;任务(进程) 3.2 第二行&#xff1a;mem状态 3.3 第三行&#xff1a;swap交换分区 3.4 第四行&#xff1a;cpu状态 3.5 第五行&#xff1a;标题 四、抓取trace.html文件分析…

CCF-CSP认证考试 202305-3 解压缩 100分题解

更多 CSP 认证考试题目题解可以前往&#xff1a;CSP-CCF 认证考试真题题解 原题链接&#xff1a; 202305-3 解压缩 时间限制&#xff1a; 5.0s 内存限制&#xff1a; 512.0MB 题目背景 西西艾弗岛运营公司是一家负责维护和运营岛上基础设施的大型企业。在公司内&#xff0c;…

如何注册 onlyFans? onlyFans 如何订阅教程

一、onlyFans 介绍 OnlyFans 是一个在线平台&#xff0c;允许创作者为他们的内容提供订阅服务&#xff0c;通常是成人内容或独家内容。该平台于2016年成立&#xff0c;起初被认为是一个用于演员、模特、艺术家和其他创意行业从业者分享内容的地方。随着时间的推移&#xff0c;O…

linux命令(四)

操作文件 创建文件 touch test.txt修改文件后缀 mv test.txt test.sh将test.txt 改为test.sh 查看当前路径下的文件 ls如果你想知道你现在是在哪个目录下&#xff0c;可以使用pwd命令(不要认为pwd是密码的意思&#xff0c;pwd 是Print Working Directory的缩写) pwd查看文…

初识二叉树

文章目录 一.什么是树二.什么是二叉树三.二叉树的访问次序四.特殊的二叉树五.求结点个数六.平衡二叉树总结 一.什么是树 树是由一个集合以及在该集合上定义的一种关系构成的。 集合中的元素称为树的节点&#xff0c;所定义的关系称为父子关系。 父子关系在树的节点之间建立了一…

【C++ leetcode】双指针问题

1. 611. 有效三角形的个数 题目 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 题目链接 . - 力扣&#xff08;LeetCode&#xff09; 画图 和 文字 分析 判断是否是三角形要得到三边&#xff0c;由于遍历三边要套三层循环&#x…

LeetCode每日一题【24. 两两交换链表中的节点】

思路&#xff1a;先创建虚拟头结点&#xff0c;再用双指针&#xff0c;两两交换 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr…

推荐几个自动化测试实战练习项目

学习自动化测试最难的是没有合适的项目练习。 测试本身既要讲究科学&#xff0c;又有艺术成分&#xff0c;单单学几个 API 的调用很难应付工作中具体的问题。 你得知道什么场景下需要添加显性等待&#xff0c;什么时候元素定位需要写得更加优雅&#xff0c;为什么需要断言这个…

js处理数组分类

const obj [{"groupingType": "1","remark": "梨花带雨","totalRmbMoney": 7,"kyeGroupingType": "广州一组"},{"groupingType": "2","remark": "99","…

权限管理系统-0.6.0

七、员工端审批 员工端审批的大致流程如下图&#xff1a; 这个模块目的是实现员工在微信端的审批提交和处理功能&#xff0c;为了与之前的管理系统区分开&#xff0c;新建一个controller完成这些功能。 7.1 查询审批分类和审批模板 7.1.1 后端接口 //controller Api(tags …

【论文速读】| 视觉对抗样本:突破对齐的大语言模型

本次分享论文为&#xff1a;Visual Adversarial Examples: Jailbreak Aligned Large Language Models 基本信息 原文作者&#xff1a;Xiangyu Qi, Peter Henderson, Kaixuan Huang, Ashwinee Panda, Mengdi Wang, Prateek Mittal 作者单位&#xff1a;普林斯顿大学、斯坦福大…

使用npm创建一个全局的cli命令,就像vue-cli一样

我们用过vue-cli等工具包&#xff0c;全局安装之后&#xff0c;我们可以直接使用vue create等命令&#xff0c;实际上能够这样使用的原因&#xff0c;就是使用了package.json里面的bin字段注册命令。接下来就以一个脚本文件为例子为大家演示一下bin是如何发挥作用的。 创建项目…

数据库引论:2.SQL简介

SQL(Structured Query Language,结构化查询语言) 2.1 SQL查询语言概览 SQL语言包含 数据定义语言(Data-Definition Language,DDL)。SQL DDL提供定义关系模式、删除关系以及修改关系模式的命令。数据操纵语言(Data-Manipulation Language,DML)。SQL DML提供从数据库中查询信息…

PLC通过智能网关采用HTTP协议JSON文件对接MES等服务系统平台

智能网关IGT-DSER集成了多种PLC的原厂协议&#xff0c;方便实现各种PLC、智能仪表通过HTTP协议与MES等各种系统平台通讯对接。PLC内不用编写程序&#xff0c;通过网关的参数配置软件(下载地址)绑定JSON文件的字段与PLC寄存器地址&#xff0c;配置URL即可。支持POST/GET/PUT等多…

基于YOLOv5s的电动车入梯识别系统(数据集+权重+登录界面+GUI界面+mysql)

本人训练的yolov5s模型&#xff0c;准确率在98.6%左右&#xff0c;可准确完成电梯内检测电动车任务&#xff0c;并搭配了GUI检测界面&#xff0c;支持权重选择、图片检测、视频检测、摄像头检测、识别结果拍照和在线标注数据集等功能。 并且为用户提供了登录注册功能&#xff0…

python版:使用TotalSegmentator工具可在1分钟内自动分割全身117个器官,附批量技巧

TotalSegmentator用于对 CT 图像中超过 117 个类别进行分割的工具。它接受了各种不同 CT 图像&#xff08;不同扫描仪、机构、协议等&#xff09;的训练&#xff0c;因此应该适用于大多数图像。大部分训练数据集可以从Zenodo下载&#xff08;1228 个主题&#xff09;。您还可以…

由浅到深认识Java语言(7):方法(函数)

该文章Github地址&#xff1a;https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

ZYNQ EMIO MIO

1 概述 先来了解GPIO的BANK分布&#xff0c;在UG585文档GPIO一章中可以看到GPIO是有4个BANK&#xff0c; 注意与MIO的BANK区分。 BANK0 控制32个信号&#xff0c;BANK1控制22个信号&#xff0c;总共是MIO的54个引脚&#xff0c;也就是诸如 SPI,I2C,USB,SD 等 PS 端外设接口&am…