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进行测试:

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

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

相关文章

【郭林保大夫】——这些事情做到了,想患上帕金森都难!

郭林保大夫说&#xff1a;帕金森病的发病原因尚不完全清楚&#xff0c;但可能与多种因素有关&#xff0c;包括遗传因素、环境因素、神经系统老化等。具体病因可能是这些因素相互作用的结果。病情后期&#xff0c;严重程度会因个体差异而异。一些患者可能出现严重的运动障碍&…

Gelato Network的创始人HILMAR ORTH确认出席HackSummit2024区块链开发者大会

随着Web3技术的日新月异&#xff0c;区块链领域正以前所未有的速度席卷全球。在这一变革的浪潮中&#xff0c;备受瞩目的区块链盛会——Hack.Summit() 2024区块链开发者大会&#xff0c;将于2024年4月9日至10日&#xff0c;在香港数码港隆重登场。这一里程碑式的大会不仅标志着…

栈、队列——练习题

1. ✌有效的括号 代码实现&#xff1a; 方法一&#xff1a;括号匹配 在任意一个位置上&#xff0c;左括号数量 > 右括号数量在最后一个位置上&#xff0c;左括号数量 右括号数量 方法二&#xff1a;栈 bool isValid(char* s) {char stack[10000];int top -1;while (*s) {i…

数据结构·排序

1. 排序的概念及运用 1.1 排序的概念 排序&#xff1a;排序是将一组“无序”的记录序列&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减归零调整为“有序”的记录序列的操作 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同关键字的记…

机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】

目录 前言 一、什么是线性回归 二、什么是逻辑回归 三、基于Python 和 Scikit-learn 库实现线性回归 示例代码&#xff1a; 使用线性回归来预测房价: 四、基于Python 和 Scikit-learn 库实现逻辑回归 五、总结 线性回归的优缺点总结&#xff1a; 逻辑回归&#xff08;Logistic…

RabbitMQ 的高阶应用及可靠性保证

目录 一、RabbitMQ 高阶应用 1.1 消息何去何从 1.2 过期时间 1.3 死信队列 1.4 延迟队列 1.5 优先级队列 1.6 消费质量保证&#xff08;QOS&#xff09; 二、持久化 三、生产者确认 四、消息可靠性和重复消费 4.1 消息可靠性 4.2 重复消费问题 上篇文章介绍了 Rabb…

QT----给程序添加上任务栏托盘图标和退出

让我们的程序拥有任务栏托盘图标&#xff0c;实现程序后台运行&#xff0c;退出等功能 1、关闭程序保持后台 重写关闭事件,忽略点击窗口关闭 void MainWindow::closeEvent(QCloseEvent *event) {// 隐藏窗口&#xff0c;而不是真正关闭setVisible(false);// 忽略关闭事件&am…

由浅到深认识Java语言(26):阶段性练习

该文章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…

后端如何返回404地址

当我们网站输入不存在的地址&#xff0c;经常会出现404的页面&#xff0c;这是如何做到的 1.添加配置 spring:mvc:view:prefix: /templates/suffix: .html 2.resources下添加templates目录&#xff0c;下面放404的网站 3.添加依赖&#xff0c;版本在主pom里面配置好了&#x…

一个开源的分布式在线教育系统

项目介绍 roncoo-education —— 一个分布式在线教育系统。目前主要功能有课程点播功能&#xff0c;支持多家视频云的接入&#xff0c;课程附件管理功能&#xff0c;支持多家存储云的接入&#xff0c;可以帮助个人或者企业快速搭建一个轻量级的在线教育平台。 系统分为后台、前…

CHAT~(持续更新)

CHAT&#xff08;持续更新&#xff09; 实现一个ChatGPT创建API设计页面布局业务操作技术架构 编码其他 实现一个ChatGPT 创建API 最简单也最需要信息的一步 继续往下做的前提 此处省略&#xff0c;想要获取接口创建方式联系 设计 页面布局 按照官网布局 业务操作 注册登…

Linux Ncurses库部分函数使用说明

目录 1. initscr&#xff08;&#xff09;函数 2. endwin&#xff08;&#xff09;函数 3. curs_set()函数 4.noecho()函数 5. keypad()函数 6. start_color()函数 7.init_pair()函数 8.getch()函数 9.move()函数 10.addch()函数 11. refresh()函数 12.inch()函数…

网络协议栈--网络层--IP协议

目录 本节重点网络层IP协议一、 基本概念二、 IP协议报头格式三、网段划分(重要)四、特殊的IP地址五、IP地址的数量限制六、私有IP地址和公网IP地址七、路由八、IP协议全部内容一览图 本节重点 1、理解网络层的作用, 深入理解IP协议的基本原理 2、对整个TCP/IP协议有系统的理解…

llvm后端

SelectionDAGBuilder是LLVM&#xff08;Low Level Virtual Machine&#xff09;编译器中的一个重要组件&#xff0c;它负责将LLVM中间表示&#xff08;Intermediate Representation&#xff0c;IR&#xff09;转换为SelectionDAG&#xff08;选择有向无环图&#xff09;的形式。…

JavaScript进阶

1. 作用域 1.1 局部作用域 1.2 全局作用域 1.3 作用域链 1.4 JS垃圾回收机制&#xff08;闭包做铺垫&#xff09; 1.4.1 什么是垃圾回收机制 1.4.2 内存的声明周期 1.4.3 垃圾回收的算法说明 1.4.3.1 引用计数法 1.4.3.2 标记清除法 1.5 闭包 <!DOCTYPE html> <html …

QTabWidget的tabbar不同方向显示 文字方向设置 图标跟随变化 实现方式 qt控件绘制原理

先来看结果图&#xff1a;&#xff08;参考博客&#xff1a;QTabWidget中tab页文本水平或垂直设置_pyqt tab_widget.settabposition(qtabwidget.west) 字体-CSDN博客&#xff09; 从图中可知&#xff0c;"普通"是qt自己的样式&#xff0c;但是很明显&#xff0c;在垂…

【linux】进程的地址空间

1.代码看现象引入 #include<stdio.h>#include<unistd.h>#include<string.h> #include<stdlib.h>int val100;int main (){ printf("i am father,pid:%d,ppid:%d,val:%d&#xff0c;&val:%p\n",getpid(),getppid(),val,&val);size_t…

Linux:点命令source

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 source命令用于读取一个文件的内容并在当前Shell环境&#xff08;包括交互式Shell或是非交互式Shell&#xff09;执行里面的命令。它被称为点命令是因为命令名source也可…

IIS7/iis8/iis10安装II6兼容模块 以windows2022为例

因安全狗的提示 安全狗防护引|擎安装失败 可能原因是: IIS7及以上版本末安装1IS6兼容模块! .所以操作解决 如下. 在开始菜单中,找到服务器管理器.找到下图的IIS,右键添加角色和功能,找到web服务器的管理工具选项,iis6管理兼容性 打钩并安装. 如下图

自然拼读-组合音(上篇)

自然拼读-组合音 1、元音字母A的二声发音组合 组合音at 注意&#xff1a;“t”是气音&#xff0c;不要太重。 Eg&#xff1a;cat&#xff08;猫&#xff09; fat&#xff08;肥的&#xff09; bat&#xff08;蝙蝠&#xff09; 组合音ap 注意&#xff1a;“p”在尾巴发音…