数据库入门-----SQL基础知识

目录

📖前言:

📑SQL概述&&通用语法:

 🐳DDL:

🐻操作数据库:

🐞数据类型:

 🦉操作表:

🦦DML:

语法规则:

案例演示:

🦏DQL:

语法规则:

案例演示:

# 基础查询:

 # 条件查询:

 #聚合函数:

 # 分组查询:

 #排序查询:

 #分页查询:

 执行顺序:

🫎DCL:

语法规则:


📖前言:

SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数库或与其相关的产品来据存储,而操纵数据库的语言正是 SQL !!!

SQL相当于一种工具,它可以帮助我们完成工作,创造价值。 本文就来详细讲解SQL的相关概念与操作,为后面的数据库深入学习打下基础。

😺😺😺数据库与SQL相关说明:

名称全称简称
数据库
存储数据的仓库,数据是有组织的进行存储
DataBase DB
数据库管 理系统
操纵和管理数据库的大型软件
DataBase Management
System (DBMS)
SQL
操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
Structured Query
Language (SQL)

📑SQL概述&&通用语法:

SQL,全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。

😀学习SQL的作用:

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。

  • SQL 可创建新数据库
  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可从数据库删除记录
  • SQL 可更新数据库中的数据

 👌SQL分类:

SQL 语句,根据其功能,主要分为四类: DDL DML DQL DCL

🧐SQL通用语法:

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL 语句可以使用空格 / 缩进来增强语句的可读性
  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。​​​​​​
    * 注释:
    1)单行注释: -- 注释内容 # 注释内容
    2)多行注释: /* 注释内容 */ 

好了,通过上面的一些说明,想必你对SQL有了一定了解了,那我们直接开始SQL的学习吧~~~

 🐳DDL:

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段)

🐻操作数据库:

这里先列出总的语法,后面依次解释说明:

# 库操作
-- 1.1 查询所有数据库
show databases ;
-- 1.2 查询当前数据库
select database() ;
-- 1.3 创建数据库
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序
规则 ] ;
-- 1.4 删除数据库
drop database [ if exists ] 数据库名 ;
-- 1.5 切换数据库
use 数据库名 ;# 表操作:-- 2.1 查询当前数据库所有表
show tables;
-- 2.2 查看指定表结构
desc 表名 ;
-- 2.3 查询指定表的建表语句
show create table 表名 ;
-- 2.4 创建表结构
create table 表名(
字段1 字段1类型 [comment 字段1注释 ],
字段2 字段2类型 [comment 字段2注释 ],
字段3 字段3类型 [comment 字段3注释 ],
......
字段n 字段n类型 [comment 字段n注释 ]
) [ comment 表注释 ] ;
  • 查询所有数据库:
show databases ;

 ------->可以看到这里有四个系统自带的数据库

  •  创建数据库:
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序
规则 ] ;
/*create database if not exists 数据库名 --->如果数据库已经存在(同名)则不创建,否则创建*/
/*中括号中的内容是可选的,可以写也可以不写*/

在mysql中输入下面指令,名为itcast的数据库创建成功 

  •  查询当前数据库:
select database() ; 
  •  切换数据库 :
我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。比如,切换到itcast 数据,执行如下 SQL
use itcast;

  • 删除数据库 :
drop database [ if exists ] 数据库名 ;
/*如果删除一个不存在的数据库,将会报错。
此时,可以加上参数 if exists ,如果数据库存在,再
执行删除,否则不执行删除。*/

🐞数据类型:

在建表语句中,我们指定字段的数据类型时,常常用到int ,varchar,那么在MySQL中除了 以上的数据类型,还有哪些常见的数据类型呢? 接下来,我们就来详细介绍一下MySQL的数据类型。

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

🦏🦏🦏常用类型

  • int:整型
  • double:浮点型,例如 double(5,2)表示最多 5 位,其中必须有 2 位小数,即最大值为 999.99;
  • decimal:泛型型,在表单线方面使用该类型,因为不会出现精度缺失问题;
  • char:固定长度字符串类型;(当输入的字符不够长度时会补空格)
  • varchar:固定长度字符串类型;
  • text:字符串类型;
  • blob:字节类型;
  • date:日期类型,格式为:yyyy-MM-dd;
  • time:时间类型,格式为:hh:mm:ss
  • timestamp:时间戳类型;

更多数据类型可以查看这篇文章:最全 SQL 字段类型(4种)、属性(6种)总结_sql字段类型-CSDN博客

 🦉操作表:

  •  创建表:

 🐞🐞🐞注意:[    ] 中的内容是可选的,最后一个字段没有逗号.

比如,我们创建一张表 tb_user ,对应的结构如下

 那么建表语句为:

create table tb_user(
id int comment '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
) comment '用户表';
  •  查询当前数据库所有表:
show tables;
  • . 查看指定表结构:
desc 表名 ;

演示:

  • 查询指定表的建表语句:
show create table 表名 ;

上述,我们已经讲解了通过DDL语句,如何操作数据库、操作表、操作表中的字段,而通过DDL语句执 行在命令进行操作,主要存在以下两点问题:

1).会影响开发效率 ;

2). 使用起来,并不直观,并不方便 ;

所以,后续语法与操作展示我将在SQL图示化工具------Vavicat中展示,感兴趣的小伙伴可已自行下载:Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理

🦦DML:

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进 行增、删、改操作。

语法规则:

-- 1. 添加数据
# 1.1 给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);# 1.2 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);# 1.3 批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值
1, 值2, ...) ;-- 2. 修改数据
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
/* 没有条件where表示将表中的所有数据都进行修改*/-- 3.  删除数据
DELETE FROM 表名 [ WHERE 条件 ] ;
/* 没有条件where相当于删除所有数据 */

 按照上述操作,我们创建表并给表插入信息:

案例演示:

-- 查看所有数据库
show databases;
-- 创建emp数据库
create database if not exists emp;
-- 使用当前数据库
use emp;
-- 创建员工表
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
workaddress varchar(50) comment '工作地址',
entrydate date comment '入职时间'
)comment '员工表';
-- 展示所创建的表信息
desc employee;
-- 加入表中成员
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (1, '0001', ' 柳岩', '女', 19, ' 123445', '北京', '2024-04-01');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (2, '0002', '坤坤', '男', 20, '34568', '北京', '2024-04-02');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (3, '0004', '张三', '男', 22, '45678', '上海', '2024-04-03');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (4, '0005', '李四', '男', 18, '23535', '深圳', '2024-04-05');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (5, '0006', '小明', '男', 35, '23535', '福建', '2024-04-06');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (6, '0007', '丽华', '女', 34, '135252', '天津', '2024-04-07');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (8, '0008', '小猫', '女', 18, '1235215', '福建', '2024-04-05');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (9, '0009', '凉凉', '男', 20, '12345135', '西安', '2024-04-04');
INSERT INTO `employee` (`id`, `workno`, `name`, `gender`, `age`, `idcard`, `workaddress`, `entrydate`) VALUES (10, '0010', '菜菜', '女', 19, '135235', '安徽', '2024-04-02');
-- 这里先用来查看所有表中信息,后续会讲到
select * from employee;/*  这里是不运行的部分,仅作展示
-- 修改表中信息:
update emp set name = '小王' where id = 1;
update emp set entrydate = '2008-01-01'; -- 没有条件where就是全部修改
-- 删除表中数据
delete from emp where gender = '女'; */

运行结果:

注意:

  • DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
  • DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。
  • 所有字符串数据必须使用单引用!

🦏DQL:

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。查询关键字: SELECT

在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站, 在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能 还会涉及到条件、排序、分页等操作。比如京东购物网站:

语法规则:

# 基础查询
-- 1.1 查询多个字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;-- 带*号是查询所有字段-- 1.2 字段设置别名:
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名; -- as可以省略-- 1.3  去除重复记录
SELECT DISTINCT 字段列表 FROM 表名; -- 保留不同的字段# 条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;#聚合函数
SELECT 聚合函数(字段列表) FROM 表名 ;#分组查询
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];# 排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
ASC : 升序(默认值) -- 排序方式
DESC: 降序 -- 排序方式# 分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

案例演示:

# 基础查询

A.查询指定字段 name, workno, age并返回:

select name,workno,age from emp;

B:查询返回所有字段:

select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp; -- 1
select * from emp; -- 2

C:查询所有员工的工作地址,起别名:

select workaddress (as) '工作地址' from emp; -- as 可以省略

D:查询公司员工的上班地址有哪些(不要重复):

select distinct workaddress '工作地址' from emp;

D:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 # 条件查询:

常用的比较运算符如下:

 常用的逻辑运算符如下:

案例: 

A. 查询年龄等于 88 的员工:

select * from emp where age = 88;

B.查询年龄小于等于 20 的员工信息:

select * from emp where age <= 20;

C.查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息:

select * from emp where age >= 15 && age <= 20; -- 1
select * from emp where age >= 15 and age <= 20; -- 2
select * from emp where age between 15 and 20; -- 3

 D.查询身份证号最后一位是X的员工信息:

-- % 匹配任意个字符
select * from emp where idcard like '%X'; 
-- _ 匹配一个字符,若身份证号18位,则X前有17个空格
select * from emp where idcard like '_________________X'; 

 D:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 #聚合函数:

将一列数据作为一个整体,进行纵向计算 ,下面展示常见聚合函数:

​​​​​​​​​​​​​​

 注意 : NULL值是不参与所有聚合函数运算的!!!

案例:

A. 统计该企业员工数量:

select count(*) from emp; -- 统计的是总记录数,含创建的null字段
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数

B.统计该企业员工的平均年龄:

select avg(age) from emp;

C. 统计该企业员工的最大年龄:

select max(age) from emp;

D.统计福建地区员工的年龄之和:

select sum(age) from emp where workaddress = '福建';

  D:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 # 分组查询:

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];

🐻🐻🐻 where 和 having的区别:

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以

案例:

A. 根据性别分组 , 统计男性员工 和 女性员工的数量:

select gender, count(*) from emp group by gender ;

B. 根据性别分组 , 统计男性员工 和 女性员工的平均年龄:

select gender, avg(age) from emp group by gender 

C. 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于2的工作地址:

select workaddress, count(*) address_count from emp where age < 45 group by
workaddress having address_count >= 2;

C:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 #排序查询:

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

注意:

  •  如果是升序, 可以不指定排序方式ASC ;
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

案例:

A. 根据年龄对公司的员工进行升序排序:

select * from emp order by age asc;
select * from emp order by age; -- 默认升序排序

B.根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序:

select * from emp order by age asc , entrydate desc;

 B:这里演示最后一个查询结果,其他类似(以DML中创建的员工表为例):

 #分页查询:

分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台 都需要借助于数据库的分页操作。

1).语法:

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

注意事项:

  •  起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10(一页10条信息)。

案例:

A.查询第1页员工数据, 每页展示10条记录:

select * from emp limit 0,10;
select * from emp limit 10; -- 第一页,0可以省略

B.查询第2页员工数据, 每页展示10条记录 --------> (页码-1)*页展示记录数:

select * from emp limit 10,10;

 A:这里演示第一个查询结果,其他类似(以DML中创建的员工表为例):

 执行顺序:

在讲解DQL语句的具体语法之前,我们已经讲解了DQL语句的完整语法,及编写顺序,接下来,我们要来说明的是DQL语句在执行时的执行顺序,也就是先执行那一部分,后执行那一部分,下面一张图说明执行顺序:

🫎DCL:

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访 问权限。

语法规则:

# 管理用户
-- 1.1  查询用户
select * from mysql.user;-- 1.2  创建用户-- 1.3 修改用户密码-- 1.4  删除用户
DROP USER '用户名'@'主机名' ;# 权限控制-- 2.1  查询权限
SHOW GRANTS FOR '用户名'@'主机名' ;-- 2.2 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';-- 2.3  撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意:

  • 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户
  • 主机名可以使用 % 通配
  • 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库 管理员)使用。

对于权限控制,官方提供了许多方法 ,可以参考:MySQL :: MySQL 8.0 Reference Manual :: 8.2.2 Privileges Provided by MySQL

这里不做过多展示了,有兴趣的小伙伴可以自行想学习相应规则 

结语: 写博客不仅仅是为了分享学习经历,同时这也有利于我巩固知识点,总结该知识点,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进。同时也希望读者们不吝啬你们的点赞+收藏+关注,你们的鼓励是我创作的最大动力!

​​​​​​​

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

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

相关文章

xgo: golang基于-toolexec实现猴子补丁

注&#xff1a; 转载请注明出处&#xff0c; 原文链接。 概述 在这篇博客中&#xff0c;我将详细介绍 xgo 的实现细节。 如果你不知道&#xff0c;xgo 项目位于 https://github.com/xhd2015/xgo。 它的作用很简单&#xff0c;就是在每个 Go 函数的开头添加拦截器&#xff0…

吴恩达深度学习 (week1,2)

文章目录 1、神经网络监督学习2、深度学习兴起原因3、深度学习二元分类4、深度学习Logistic 回归5、Logistic 回归损失函数6、深度学习梯度下降法7、深度学习向量法8、Python 中的广播9、上述学习总结10、大作业实现:rocket::rocket:&#xff08;1&#xff09;训练初始数据&…

Android 关于apk反编译d2j-dex2jar classes.dex失败的几种方法

目录 确认路径正确直接定位到指定目录确定目录正确&#xff0c;按如下路径修改下面是未找到相关文件正确操作 确认路径正确 &#xff0c;即d2j-dex2jar和classes.dex是否都在一个文件夹里&#xff08;大部分的情况都是路径不正确&#xff09; 直接定位到指定目录 路径正确的…

2024年32款数据分析工具分五大类总览

数据分析工具在现代商业和科学中扮演着不可或缺的角色&#xff0c;为组织和个人提供了深入洞察和明智决策的能力。这些工具不仅能够处理大规模的数据集&#xff0c;还能通过强大的分析和可视化功能揭示隐藏在数据背后的模式和趋势。数据分析工具软件主要可以划分为以下五个类别…

2024年抖音小店还有机会吗?多年小店商家,带来最新判断!

大家好&#xff0c;我是电商糖果 糖果做电商有7年时间了&#xff0c;从2020年开始做抖音小店&#xff0c;现在已经经营了多家小店。 关于抖音小店的热度这几年一直居高不下&#xff0c;说实话几乎每天都有不少朋友找糖果咨询&#xff0c;2024年抖音小店还有机会吗&#xff1f…

JS 表单验证

点击注册的时候&#xff0c;渲染出来&#xff0c;验证码是自动获取出来的 html&#xff1a; <div class"div1">用户名<input type"text" id"yhm"><span id"span1"></span><br>密码<input type"…

一起学习python——基础篇(10)

前言&#xff0c;Python 是一种面向对象的编程语言。以前大学读书的时候经常开玩笑说的一句话“如果没有对象&#xff0c;就new一个”。起因就是编程老师上课时经常说一句“首先&#xff0c;我们new一个对象”。 今天讲一下python的类和对象。 类是什么&#xff1f;它是一种用…

外包干了25天,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

【运输层】TCP 的可靠传输是如何实现的?

目录 1、发送和接收窗口&#xff08;滑动窗口&#xff09; &#xff08;1&#xff09;滑动窗口的工作流程 &#xff08;2&#xff09;滑动窗口和缓存的关系 &#xff08;3&#xff09;滑动窗口的注意事项 2、如何选择超时重传时间 &#xff08;1&#xff09;加权平均往返…

爬虫 BeautifulSoup模块

爬虫 BeautifulSoup模块 【一】介绍 【1】说明 BeautifulSoup库是python的一个第三方库&#xff0c;主要用于处理HTML和XML文档他提供了一些简单的、python式的函数来解析、导航、搜索以及修改分析树&#xff0c;使得从网页抓取的数据变得简单高效BeautifulSoup自动将输入文…

ctfshow web入门 命令执行 web53--web77

web53 日常查看文件 怎么回事不让我看十八 弄了半天发现并不是很对劲&#xff0c;原来我发现他会先回显我输入的命令再进行命令的回显 ?cnl${IFS}flag.php||web54 绕过了很多东西 基本上没有什么命令可以用了但是 grep和?通配符还可以用 ?cgrep${IFS}ctfshow${IFS}???…

BFS宽度优先搜索例题(蓝桥杯)——逃跑的牛

问题描述&#xff1a; 农夫John的一头牛逃跑了&#xff0c;他想要将逃跑的牛找回来。现假设农夫John和牛的位置都在一条直线上&#xff0c;农夫John的初始位置为N&#xff08;0≤N≤100,000&#xff09;&#xff0c;牛的初始位置为K&#xff08;0≤K≤100,000&#xff09;。农夫…

R语言数据操纵:常用函数

目录 处理循环的函数 lapply函数 apply函数 mapply函数 tapply函数 split函数 排序的函数 sort函数与order函数 总结数据信息的函数 head函数与tail函数 summary函数 str函数 table函数 any函数 all函数 xtab函数 object.size函数 这篇文章主要介绍R语言中处理…

APP测试面试题详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、基础篇 1、请介绍一下&#xff0c;APP测试流程&#xff1f…

【算法统治世界】动态规划 个人笔记总结

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

分布式主键ID生成策略

业务系统对分布式ID的要求 唯一性&#xff1a;在分布式系统中&#xff0c;每个节点都需要生成唯一的标识符来确保数据的唯一性。传统的单点生成ID方式无法满足分布式环境下的需求&#xff0c;而分布式ID能够在整个系统中保证每个节点生成的ID都是唯一的。 顺序性&#xff1a;某…

CSS设置网页颜色

目录 前言&#xff1a; 1.颜色名字&#xff1a; 2.十六进制码&#xff1a; 3.RGB&#xff1a; 4.RGBA&#xff1a; 5.HSL&#xff1a; 1.hue&#xff1a; 2.saturation&#xff1a; 3.lightness&#xff1a; 6.HSLA&#xff1a; 前言&#xff1a; 我们在电脑显示器&…

Linux 多线程

目录 初识线程 线程的概念 Linux下的线程 线程优缺点 线程控制 线程创建 线程终止 线程等待 线程分离 线程取消 其它 线程互斥 互斥的概念 互斥锁的使用 锁的本质 线程同步 线程同步的概念 条件变量的概念 条件变量的使用 信号量 信号量的概念 信号量接口…

007 CSS的继承和层叠 元素特性

文章目录 CSS属性的继承CSS属性的层叠选择器的权重 HTML元素的类型编写HTML注意事项元素隐藏方法CSS属性-overflowCSS样式不生效可能原因 CSS属性的继承 如果一个属性具备继承性&#xff0c;那么在该元素上设置后&#xff0c;它的后代元素都可以继承这个属性 如果后代元素自己…

如何将平板或手机作为电脑的外接显示器?

先上官网链接&#xff1a;ExtensoDesk 家里有一台华为平板&#xff0c;自从买回来以后除了看视频外&#xff0c;基本没什么作用&#xff0c;于是想着将其作为我电脑的第二个屏幕&#xff0c;提高我学习办公的效率&#xff0c;废物再次利用。最近了解到华为和小米生态有多屏协同…