【数据库】SQL语句基础
【数据库】SQL语句基础
文章目录
- 【数据库】SQL语句基础
- 一、SQL与数据库
- 二、 SQL语句类型
- 2.1 数据定义语言(DDL)
- 1. 创建数据库:CREATE DATABASE
- 2. 创建表:CREATE TABLE
- 3. 删除表:DROP TABLE
- 4. 修改表结构:ALTER TABLE
- 5. 删除数据库:DROP DATABASE
- 2.2 数据操作语言(DML)
- 1. 插入数据:INSERT INTO
- 2. 更新数据:UPDATE
- 3. 删除数据:DELETE
- 4. 清除数据:TRUNCATE TABLE
- 2.3 数据查询语言(DQL)
- 1. 查询数据:SELECT
- 2. 去除重复数据:DISTINCT
- 3. 排序查询:ORDER BY
- 4. 聚合函数:COUNT(), AVG(), SUM(), MIN(), MAX()
- 5. 分组查询:GROUP BY
- 6. 条件查询:WHERE, AND, OR
- 7. 分页查询:LIMIT 和 OFFSET
- 8. 内连接查询:INNER JOIN
- 9. 外连接查询:LEFT JOIN, RIGHT JOIN
- 10. 子查询
- 2.4 数据控制语言(DCL)
- 1. 管理用户:CREATE USER, DROP USER
- 2. 权限管理:GRANT, REVOKE
- 3. 刷新权限:FLUSH PRIVILEGES
- 4. 查看权限:SHOW GRANTS
- 5. 权限类型
- 三、 SQL关键字与操作符
- 四、 常用SQL函数
- 1. 聚合函数
- 2. 字符串处理函数
- 3. 日期函数
一、SQL与数据库
SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准编程语言。通过SQL,用户可以进行数据插入、更新、删除、查询等操作。SQL并不依赖于特定的编程语言,而是作为数据库的查询语言,与多种开发语言结合使用(如Python、Java等)以进行数据的操作。
数据库是一个有组织的、存储和管理数据的系统。它包含一系列的数据表,每个表有若干字段和记录。数据库用于存储大量的结构化数据,可以高效地进行数据查询、更新、插入和删除操作。数据库管理系统(DBMS)则是用于创建、管理、访问和维护数据库的软件。
关系型数据库管理系统(RDBMS)
关系型数据库管理系统(RDBMS)是一种基于关系模型的数据库管理系统。在RDBMS中,数据存储在表格形式中,表之间通过主键和外键建立关系。常见的关系型数据库系统包括MySQL、PostgreSQL、Oracle和SQL Server等。RDBMS的主要特点是数据的结构化存储、数据之间的关系、支持ACID(原子性、一致性、隔离性、持久性)特性以及支持SQL查询语言。
常见的数据库管理系统
- MySQL:开源的关系型数据库管理系统,广泛应用于网站、应用程序开发等领域。MySQL支持ACID事务和多种数据类型,具备高效的查询性能。
- PostgreSQL:开源的对象-关系型数据库系统,注重标准兼容性和扩展性。PostgreSQL支持复杂的查询、事务和数据类型,广泛应用于学术研究和企业级应用。
- Oracle:由甲骨文公司开发的商用数据库管理系统,适用于大规模、复杂的数据库应用。Oracle具备强大的性能、可靠性和安全性。
- SQL Server:微软推出的关系型数据库管理系统,通常与微软技术栈(如ASP.NET)配合使用,适合企业级应用开发。
在正式开始学习SQL之前需要知道一些常识:
SQL本身在大多数数据库系统中是不区分大小写的,特别是在关键字和函数名称方面。例如,SELECT
、select
、SeLeCt
都可以视为相同的。尽管如此,表名、列名以及其他标识符(如数据库名)是否区分大小写取决于所使用的数据库系统和其配置。例如:
- 在MySQL中,表名默认区分大小写,列名通常不区分大小写。
- 在PostgreSQL中,表名和列名默认是区分大小写的。
因此,在编写SQL时,建议遵循统一的命名规则,以保持代码的可读性和可维护性,包括:
- SQL关键字通常建议使用大写字母书写(虽然大部分数据库系统对大小写不敏感,但大写有助于代码的可读性)。
- 每条SQL语句通常以分号(
;
)结尾,特别是在多条语句中时。- 对于表名、列名等标识符,避免使用SQL保留字,并尽量保持一致的命名规范。
SQL语言的结构通常包括以下几类操作:
-
数据定义语言(DDL):用于定义数据库结构。常用的DDL语句有:
CREATE
:创建数据库、表、视图等。ALTER
:修改数据库结构(如修改表结构)。DROP
:删除数据库、表、视图等。
-
数据操作语言(DML):用于操作数据内容。常用的DML语句有:
SELECT
:查询数据。INSERT
:插入数据。UPDATE
:更新数据。DELETE
:删除数据。
-
数据控制语言(DCL):用于控制对数据库的访问权限。常用的DCL语句有:
GRANT
:授予权限。REVOKE
:撤销权限。
-
事务控制语言(TCL):用于管理事务的提交和回滚。常用的TCL语句有:
COMMIT
:提交事务。ROLLBACK
:回滚事务。SAVEPOINT
:设置事务的保存点。
SQL语句的基本结构通常包括:
- 关键字:例如
SELECT
、FROM
、WHERE
、INSERT INTO
等。- 标识符:如表名、列名、数据库名等。
- 运算符和表达式:如
+
、-
、*
、/
等数学运算符,以及条件表达式。- 条件子句:如
WHERE
、HAVING
、AND
、OR
等。
二、 SQL语句类型
SQL语句可以分为多种类型,每种类型用于不同的操作,包括定义数据库结构、操作数据、查询数据和管理数据库权限等。
2.1 数据定义语言(DDL)
数据定义语言(DDL,Data Definition Language)是SQL的一个子集,主要用于定义、修改和删除数据库结构。DDL语句不直接操作数据,它们影响数据库的结构、表格、索引等对象。常见的DDL语句包括创建数据库、创建表、删除表、修改表结构、删除数据库等。
1. 创建数据库:CREATE DATABASE
CREATE DATABASE
语句用于创建一个新的数据库。它是SQL中最基础的DDL操作之一。创建数据库时,你需要为其指定一个名称,可以选择定义字符集、排序规则等。
语法:
CREATE DATABASE database_name;
可以在创建数据库时指定一些属性,例如字符集和排序规则(具体数据库系统可能有所不同)。例如,在MySQL中,指定字符集和排序规则的语法为:
CREATE DATABASE database_name
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
示例:
CREATE DATABASE SchoolDB;
此语句会创建一个名为SchoolDB
的数据库。
2. 创建表:CREATE TABLE
CREATE TABLE
语句用于创建一个新表,并定义该表的结构,包括列名、数据类型和约束。表的结构是数据库设计的核心部分,合理设计表的结构可以确保数据的完整性和查询效率。
语法:
CREATE TABLE table_name (column1 datatype [constraint],column2 datatype [constraint],...
);
table_name
:表的名称。column_name
:列的名称。datatype
:列的数据类型(如INT
、VARCHAR
、DATE
等)。constraint
:约束(如PRIMARY KEY
、NOT NULL
、UNIQUE
等),用于限制列的值或表的完整性。
示例:
CREATE TABLE Students (StudentID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),Age INT,Email VARCHAR(100) UNIQUE NOT NULL
);
此语句创建一个名为Students
的表,包含四个列:StudentID
(主键)、FirstName
、LastName
、Age
和Email
。其中,Email
列设置为唯一且不能为空。
3. 删除表:DROP TABLE
DROP TABLE
语句用于删除现有的表及其所有数据。删除表后,该表的结构和其中的数据都将永久丢失。因此,在执行此操作时需要非常小心。
语法:
DROP TABLE table_name;
示例:
DROP TABLE Students;
此语句将删除名为Students
的表,并且无法恢复其包含的数据。
4. 修改表结构:ALTER TABLE
ALTER TABLE
语句用于修改现有表的结构,允许对表进行多种操作,如添加、删除、修改列,修改约束等。它非常强大,可以对表进行动态调整,而不需要重新创建表。
常见的ALTER TABLE
操作有:
-
添加列:
ADD
用于向表中添加一个新的列。可以指定列的名称、数据类型及约束。
语法:
ALTER TABLE table_name ADD column_name datatype [constraint];
示例:
ALTER TABLE Students ADD DateOfBirth DATE;
该语句会向
Students
表添加一个名为DateOfBirth
的新列,数据类型为DATE
。 -
删除列:
DROP COLUMN
用于从表中删除某个列。删除列时,数据会丢失,且不能恢复。
语法:
ALTER TABLE table_name DROP COLUMN column_name;
示例:
ALTER TABLE Students DROP COLUMN Email;
该语句会从
Students
表中删除名为Email
的列。 -
修改列:
MODIFY
或CHANGE
用于修改列的数据类型或约束。具体语法和使用方法会根据不同的数据库系统略有不同。
语法(MySQL):
ALTER TABLE table_name MODIFY column_name new_datatype [new_constraint];
示例:
ALTER TABLE Students MODIFY Age INT NOT NULL;
该语句会修改
Students
表中的Age
列,确保该列的值不能为空。另外,有些数据库系统(如MySQL)也支持
CHANGE
操作,用于修改列的名称和数据类型。语法:
ALTER TABLE table_name CHANGE old_column_name new_column_name new_datatype;
示例:
ALTER TABLE Students CHANGE FirstName FirstName VARCHAR(100);
该语句会将
FirstName
列的名称更改为FirstName
(实际上没有更改列名,但可以修改数据类型等)。
5. 删除数据库:DROP DATABASE
DROP DATABASE
语句用于删除数据库及其所有对象(包括所有表、视图、索引等)。这是一项不可逆的操作,删除数据库后,所有相关数据将被丢失。
语法:
DROP DATABASE database_name;
示例:
DROP DATABASE SchoolDB;
此语句会删除SchoolDB
数据库以及其中所有的表和数据。
2.2 数据操作语言(DML)
数据操作语言(DML,Data Manipulation Language)用于操作数据库中的数据,包括插入、更新、删除和清除数据。与数据定义语言(DDL)不同,DML不涉及表结构的更改,而是专注于数据的增、删、改、查等操作。DML语句是日常数据库操作的核心部分,帮助用户有效地管理和操作数据。
1. 插入数据:INSERT INTO
INSERT INTO
语句用于向表中插入一行或多行数据。可以插入指定列的数据,也可以插入所有列的数据。如果插入数据时未指定某列,数据库将使用该列的默认值(如果有的话)。
语法:
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
table_name
:目标表的名称。column1, column2, ...
:要插入的列名。value1, value2, ...
:要插入的对应列的值。
示例:
INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES (1, 'John', 'Doe', 20);
该语句将一行数据插入到Students
表中,其中包含StudentID
为1,FirstName
为"John",LastName
为"Doe",Age
为20的记录。
插入多行数据:
可以一次插入多行数据,使用逗号分隔各行数据:
INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES
(2, 'Jane', 'Smith', 22),
(3, 'Mike', 'Johnson', 21),
(4, 'Emily', 'Brown', 23);
2. 更新数据:UPDATE
UPDATE
语句用于修改表中已存在的记录。可以更新一个或多个列的值,但必须指定更新条件,以避免不小心更新所有记录。
语法:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE [condition];
table_name
:要更新数据的表名。column1, column2, ...
:需要更新的列名。value1, value2, ...
:新的列值。WHERE [condition]
:指定条件,只有满足该条件的记录才会被更新。如果省略WHERE
子句,表中所有记录都会被更新。
示例:
UPDATE Students
SET Age = 21
WHERE StudentID = 1;
该语句将更新Students
表中StudentID
为1的记录,将Age
列的值修改为21。
注意事项:
- 如果没有
WHERE
条件,UPDATE
语句会更新表中的所有记录。例如,UPDATE Students SET Age = 25;
会将Students
表中所有学生的年龄修改为25,这通常是一个错误操作。
3. 删除数据:DELETE
DELETE
语句用于从表中删除满足特定条件的记录。删除操作是不可恢复的,因此在执行DELETE
时需要谨慎。DELETE
会逐行删除数据,但保留表结构不变。
语法:
DELETE FROM table_name
WHERE [condition];
table_name
:要删除数据的表名。WHERE [condition]
:删除满足该条件的记录。如果没有WHERE
条件,表中所有记录将被删除。
示例:
DELETE FROM Students
WHERE StudentID = 1;
该语句会删除Students
表中StudentID
为1的记录。
注意事项:
- 与
UPDATE
类似,DELETE
如果没有指定WHERE
条件,会删除表中的所有记录。为了防止不小心删除所有数据,始终建议加上WHERE
子句。
4. 清除数据:TRUNCATE TABLE
TRUNCATE TABLE
语句用于删除表中的所有数据,但与DELETE
不同,它不逐行删除数据,而是通过更高效的方式清空整个表。TRUNCATE
通常比DELETE
速度更快,但也有一些区别:
TRUNCATE
会重置表的自增计数器(例如,在MySQL中,如果表中有自增列,TRUNCATE
会将计数器重置为初始值)。TRUNCATE
无法与WHERE
条件一起使用,它会删除表中的所有数据。TRUNCATE
通常不产生日志记录,因此操作不可恢复。
语法:
TRUNCATE TABLE table_name;
示例:
TRUNCATE TABLE Students;
该语句会删除Students
表中的所有记录,但表的结构保持不变。TRUNCATE
通常用于快速清空表数据,尤其是在需要删除大量数据时。
注意事项:
- 与
DELETE
不同,TRUNCATE
不能触发删除触发器(如果存在)。 - 由于
TRUNCATE
是不可恢复的,所以在使用时需要特别小心。
2.3 数据查询语言(DQL)
数据查询语言(DQL,Data Query Language)主要用于从数据库中查询数据。
SELECT
语句是DQL中最常用的语句,它用于从一个或多个表中提取信息。DQL的核心功能是查询和提取数据,结合其他SQL语句可以非常灵活地操作和展示数据。
1. 查询数据:SELECT
SELECT
语句用于从一个或多个表中检索数据。可以指定要查询的列、表和条件,还可以使用排序、去重、聚合等功能。
基本语法:
SELECT column1, column2, ...
FROM table_name
WHERE [condition];
column1, column2, ...
:要查询的列名。如果要查询所有列,可以使用*
。table_name
:从哪个表中查询数据。[condition]
:指定查询条件,筛选符合条件的记录。
示例:
SELECT FirstName, LastName
FROM Students
WHERE Age > 18;
该语句查询Students
表中,年龄大于18的学生的名字和姓氏。
查询所有列:
SELECT *
FROM Students;
该语句返回Students
表中的所有数据。
2. 去除重复数据:DISTINCT
DISTINCT
关键字用于返回查询结果中不重复的值。它适用于需要排除重复数据的场景。
语法:
SELECT DISTINCT column_name
FROM table_name;
示例:
SELECT DISTINCT Age
FROM Students;
该语句返回Students
表中不重复的年龄。
3. 排序查询:ORDER BY
ORDER BY
用于对查询结果进行排序。默认情况下,排序是按升序(ASC)排列的。如果需要降序排列,可以使用DESC
关键字。
语法:
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name [ASC|DESC];
column_name
:用于排序的列名。ASC
:升序排序(默认)。DESC
:降序排序。
示例:
SELECT FirstName, LastName
FROM Students
ORDER BY Age DESC;
该语句根据Age
列的值降序排列Students
表中的数据。
4. 聚合函数:COUNT(), AVG(), SUM(), MIN(), MAX()
聚合函数用于对查询结果进行计算,通常用在需要统计、计算总数、求平均数等场景。
COUNT()
: 计算行数AVG()
: 计算平均值SUM()
: 计算总和MIN()
: 获取最小值MAX()
: 获取最大值
语法:
SELECT COUNT(*) FROM table_name;
SELECT AVG(column_name) FROM table_name;
SELECT SUM(column_name) FROM table_name;
SELECT MIN(column_name) FROM table_name;
SELECT MAX(column_name) FROM table_name;
示例:
SELECT COUNT(*) FROM Students;
该语句返回Students
表中记录的总数。
SELECT AVG(Age) FROM Students;
该语句返回Students
表中学生的平均年龄。
5. 分组查询:GROUP BY
GROUP BY
用于根据一个或多个列将查询结果分组,通常与聚合函数一起使用。它用于统计各个分组的数据。
语法:
SELECT column, COUNT(*)
FROM table_name
GROUP BY column;
示例:
SELECT Age, COUNT(*)
FROM Students
GROUP BY Age;
该语句会按Age
列对Students
表中的数据进行分组,并统计每个年龄段的学生人数。
6. 条件查询:WHERE, AND, OR
WHERE
用于筛选查询结果,指定一个或多个条件。AND
和OR
用于连接多个条件,进行更复杂的筛选。
语法:
SELECT column1, column2
FROM table_name
WHERE [condition1] AND|OR [condition2];
示例:
SELECT FirstName, LastName
FROM Students
WHERE Age > 18 AND LastName = 'Doe';
该语句查询Students
表中年龄大于18并且姓氏为’Doe’的学生。
使用OR
连接条件:
SELECT FirstName, LastName
FROM Students
WHERE Age > 18 OR LastName = 'Doe';
该语句查询Students
表中年龄大于18或姓氏为’Doe’的学生。
7. 分页查询:LIMIT 和 OFFSET
分页查询用于限制查询返回的记录数,常用于在Web应用中显示查询结果时进行分页。LIMIT
指定返回的记录数,OFFSET
指定从哪一条记录开始返回。
语法:
SELECT column1, column2
FROM table_name
LIMIT number_of_records OFFSET start_position;
number_of_records
:要返回的记录数。start_position
:从哪一条记录开始返回(从0开始)。
示例:
SELECT * FROM Students
LIMIT 10 OFFSET 20;
该语句返回Students
表中从第21条记录到第30条记录的数据(注意,OFFSET
是从0开始计算的)。
8. 内连接查询:INNER JOIN
INNER JOIN
用于返回两个或多个表中匹配的记录。如果表中没有匹配的记录,则不会返回任何结果。
语法:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
示例:
SELECT Students.FirstName, Students.LastName, Courses.CourseName
FROM Students
INNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentID
INNER JOIN Courses ON Enrollments.CourseID = Courses.CourseID;
该语句查询所有注册课程的学生的名字、姓氏以及课程名称。
9. 外连接查询:LEFT JOIN, RIGHT JOIN
外连接用于返回两个表中匹配的数据以及不匹配的数据。LEFT JOIN
返回左表的所有记录以及匹配的右表记录,RIGHT JOIN
则返回右表的所有记录以及匹配的左表记录。
LEFT JOIN
:返回左表的所有记录和匹配的右表记录。RIGHT JOIN
:返回右表的所有记录和匹配的左表记录。
语法:
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
示例:
SELECT Students.FirstName, Students.LastName, Courses.CourseName
FROM Students
LEFT JOIN Enrollments ON Students.StudentID = Enrollments.StudentID
LEFT JOIN Courses ON Enrollments.CourseID = Courses.CourseID;
该语句查询所有学生的名字、姓氏以及他们注册的课程。如果某个学生没有注册课程,查询结果中该学生的课程名称将为空。
10. 子查询
子查询是一个嵌套在其他查询中的查询。根据返回的结果不同,子查询可以分为以下几种类型:
-
单行单列子查询:返回单个值(行和列)。
SELECT FirstName, LastName FROM Students WHERE Age = (SELECT MAX(Age) FROM Students);
-
多行单列子查询:返回多个值(行,但只有一个列)。
SELECT FirstName, LastName FROM Students WHERE Age IN (SELECT Age FROM Students WHERE Age > 18);
-
多行多列子查询:返回多个值(行和列)。
SELECT FirstName, LastName, Age FROM Students WHERE (FirstName, LastName) IN (SELECT FirstName, LastName FROM Students WHERE Age > 18);
2.4 数据控制语言(DCL)
数据控制语言(DCL,Data Control Language)用于管理数据库中的访问权限、用户管理以及控制数据操作的权限。DCL语句确保数据库的安全性和合理的访问控制,主要包括用户的创建、权限的授予与撤销。常见的DCL语句有
CREATE USER
、DROP USER
、GRANT
和REVOKE
。
1. 管理用户:CREATE USER, DROP USER
-
CREATE USER
:
用于在数据库中创建一个新的用户,并为该用户分配一个密码。用户可以根据需要与特定的主机(如localhost
或%
)相关联。语法:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username
:要创建的用户名。host
:指定用户连接数据库的主机,可以是localhost
(本机)或者%
(任何主机)。password
:用户的登录密码。
示例:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
该语句在数据库中创建了一个名为
new_user
的用户,并为其设置了密码password
。该用户仅能从localhost
主机登录。 -
DROP USER
:
用于删除数据库中的用户。如果一个用户不再需要访问数据库,或者由于其他原因需要删除该用户时,可以使用此命令。语法:
DROP USER 'username'@'host';
示例:
DROP USER 'new_user'@'localhost';
该语句会删除名为
new_user
且只允许从localhost
主机登录的用户。
2. 权限管理:GRANT, REVOKE
权限管理语句用于授予或撤销用户对数据库中对象的访问权限(如表、视图、数据库等)。使用这些语句可以控制用户能否执行某些操作,例如读取、插入、更新、删除数据等。
-
GRANT
:
GRANT
语句用于授予用户对数据库对象的权限。可以为一个用户授予一或多个权限。语法:
GRANT privilege_type ON database_name.table_name TO 'username'@'host';
privilege_type
:要授予的权限类型(如SELECT
、INSERT
、UPDATE
等)。database_name.table_name
:指定授予权限的数据库和表名。如果是整个数据库,可以使用*
。username
:要授予权限的用户名。host
:指定用户连接数据库的主机。
示例:
GRANT SELECT, INSERT ON Students.* TO 'new_user'@'localhost';
该语句授予
new_user
用户在localhost
主机上的Students
表的SELECT
(查询)和INSERT
(插入)权限。还可以授予多个权限:
GRANT SELECT, INSERT, UPDATE ON Students TO 'new_user'@'localhost';
授予所有权限:
如果希望授予用户所有权限,可以使用ALL PRIVILEGES
关键字:GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
该语句授予
username
用户对database_name
数据库中所有表的所有权限。 -
REVOKE
:
REVOKE
语句用于撤销用户对数据库对象的权限。撤销某个权限后,用户将无法再执行相应的操作。语法:
REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';
privilege_type
:要撤销的权限类型。database_name.table_name
:指定撤销权限的数据库和表名。username
:要撤销权限的用户名。host
:指定用户连接数据库的主机。
示例:
REVOKE SELECT, INSERT ON Students.* FROM 'new_user'@'localhost';
该语句撤销
new_user
用户在localhost
主机上的Students
表的SELECT
(查询)和INSERT
(插入)权限。还可以撤销多个权限:
REVOKE SELECT, INSERT, UPDATE ON Students FROM 'new_user'@'localhost';
撤销所有权限:
如果希望撤销用户对某个数据库或表的所有权限,可以使用ALL PRIVILEGES
:REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
3. 刷新权限:FLUSH PRIVILEGES
当使用GRANT
或REVOKE
修改用户权限时,修改的权限会在下次用户连接时生效。在某些情况下,可以使用FLUSH PRIVILEGES
语句强制数据库立即重新加载权限表,从而立即生效。
语法:
FLUSH PRIVILEGES;
此语句会重新加载权限表,确保所有权限更改立即生效。
4. 查看权限:SHOW GRANTS
SHOW GRANTS
语句用于查看某个用户的权限。可以查询特定用户的权限情况,以确认用户当前拥有的操作权限。
语法:
SHOW GRANTS FOR 'username'@'host';
示例:
SHOW GRANTS FOR 'new_user'@'localhost';
该语句将显示new_user
用户在localhost
主机上拥有的所有权限。
5. 权限类型
常见的权限类型有:
SELECT
:允许查询数据。INSERT
:允许插入数据。UPDATE
:允许更新数据。DELETE
:允许删除数据。CREATE
:允许创建数据库或表。DROP
:允许删除数据库或表。ALTER
:允许修改数据库或表的结构。INDEX
:允许创建或删除索引。GRANT OPTION
:允许将权限授予其他用户。ALL PRIVILEGES
:授予所有权限。
三、 SQL关键字与操作符
SQL中有许多关键字与操作符,它们用于帮助进行更灵活的查询和数据操作。以下是一些常见的SQL关键字与操作符。
关键字/操作符 | 描述 | 示例 |
---|---|---|
LIKE | 用于在WHERE 子句中进行模糊查询,可以匹配指定模式的字符串。通常与通配符% 和_ 一起使用。% 表示零个或多个字符,_ 表示单个字符。 | SELECT * FROM Students WHERE FirstName LIKE 'J%'; (查找所有名字以’J’开头的学生) |
IN | 用于检查某个值是否在指定的值列表或子查询返回的结果集中。它简化了多个OR 条件的写法。 | SELECT * FROM Students WHERE Age IN (18, 19, 20); (查找年龄为18、19或20岁的学生) |
BETWEEN | 用于检查某个值是否在一个范围内。包括范围的两个边界。 | SELECT * FROM Students WHERE Age BETWEEN 18 AND 22; (查找年龄在18到22岁之间的学生) |
AS | 用于给列或表指定别名,通常用于结果的展示,增强可读性。 | SELECT FirstName AS Name, Age FROM Students; (将 FirstName 列重命名为Name ) |
JOIN | 用于从两个或多个表中查询相关数据,连接表的方式有多种(如INNER JOIN 、LEFT JOIN 等)。 | SELECT Students.FirstName, Courses.CourseName FROM Students INNER JOIN Enrollments ON Students.StudentID = Enrollments.StudentID; (查找学生和他们选修的课程) |
UNION | 用于合并多个SELECT 语句的结果集。默认情况下,UNION 去除重复的记录。如果想保留所有记录,可以使用UNION ALL 。 | SELECT FirstName FROM Students WHERE Age > 18 UNION SELECT FirstName FROM Students WHERE Age < 18; (查找所有学生的名字) |
NOT NULL | 用于指定某列的数据不允许为NULL ,常用于字段约束。 | CREATE TABLE Students (StudentID INT, FirstName VARCHAR(50) NOT NULL); ( FirstName 列不能为空) |
VIEW | 用于创建一个虚拟表,该表包含一个SQL查询的结果集,方便多次查询使用,且不存储实际数据。 | CREATE VIEW StudentAgeView AS SELECT FirstName, Age FROM Students WHERE Age > 18; (创建一个视图 StudentAgeView ,显示所有年龄大于18岁的学生) |
-
LIKE
:- 用于进行模糊匹配查询,可以结合通配符进行更加灵活的查询。
%
代表任意数量的字符,_
代表单个字符。 - 示例:
SELECT * FROM Employees WHERE LastName LIKE 'S%'; -- 查找所有姓氏以'S'开头的员工SELECT * FROM Employees WHERE FirstName LIKE '_n'; -- 查找所有名字为2个字符且第二个字符为'n'的员工
- 用于进行模糊匹配查询,可以结合通配符进行更加灵活的查询。
-
IN
:- 用于指定一个值是否在给定的列表中,避免了多个
OR
语句的使用,使SQL更简洁。 - 示例:
SELECT * FROM Employees WHERE Department IN ('HR', 'IT', 'Finance'); -- 查找部门为HR、IT或Finance的员工
- 用于指定一个值是否在给定的列表中,避免了多个
-
BETWEEN
:- 用于在一定范围内查找数据,适用于数字、日期等类型。
BETWEEN
包含范围的两端。 - 示例:
SELECT * FROM Products WHERE Price BETWEEN 100 AND 500; -- 查找价格在100到500之间的产品
- 用于在一定范围内查找数据,适用于数字、日期等类型。
-
AS
:- 用于给表或列指定别名,提升可读性。尤其在复杂查询中,别名非常有用。
- 示例:
SELECT Name AS EmployeeName FROM Employees; -- 将列`Name`命名为`EmployeeName`
-
JOIN
:- 用于将两个或多个表的数据按相关联的列进行连接。常见的连接类型有:
INNER JOIN
:返回两个表中满足连接条件的记录。LEFT JOIN
:返回左表的所有记录以及右表中满足条件的记录。如果右表没有匹配记录,返回NULL。RIGHT JOIN
:与LEFT JOIN
相对,返回右表的所有记录以及左表中满足条件的记录。
- 示例:
SELECT Employees.Name, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
该查询返回所有员工和他们所在部门的名称。
- 用于将两个或多个表的数据按相关联的列进行连接。常见的连接类型有:
-
UNION
:- 用于合并多个
SELECT
查询的结果,去除重复的记录。如果希望包含重复记录,可以使用UNION ALL
。 - 示例:
SELECT FirstName FROM Employees WHERE Age > 30UNIONSELECT FirstName FROM Employees WHERE Age < 30;
该查询返回所有员工的名字,去除重复。
- 用于合并多个
-
NOT NULL
:- 用于限制列值不能为空,常用于数据表的列约束,确保数据完整性。
- 示例:
CREATE TABLE Employees (ID INT PRIMARY KEY,Name VARCHAR(50) NOT NULL, -- Name列不能为空Age INT);
-
VIEW
:- 视图是一个虚拟表,基于SELECT查询的结果创建。它没有存储实际数据,但可以像普通表一样进行查询,简化复杂的查询。
- 示例:
CREATE VIEW EmployeeDetails AS SELECT Name, Age, Department FROM Employees WHERE Age > 30;
该视图返回年龄大于30岁的所有员工的详细信息。
四、 常用SQL函数
SQL提供了多种函数,用于执行各种数据处理任务。常用的函数包括聚合函数、字符串处理函数和日期函数。
1. 聚合函数
聚合函数用于对一组值执行计算并返回单一的结果。常见的聚合函数有:
AVG()
:计算某列的平均值。例如,SELECT AVG(Salary) FROM Employees;
会计算所有员工的平均工资。COUNT()
:计算某列或表中的行数(不包含NULL
值)。例如,SELECT COUNT(*) FROM Employees;
计算表中员工的总数。也可以使用COUNT(DISTINCT column)
计算某列中不重复的值的个数。SUM()
:计算某列的总和。例如,SELECT SUM(Salary) FROM Employees;
计算所有员工工资的总和。MAX()
:返回某列的最大值。例如,SELECT MAX(Salary) FROM Employees;
返回员工中最高的工资。MIN()
:返回某列的最小值。例如,SELECT MIN(Salary) FROM Employees;
返回员工中最低的工资。
这些聚合函数通常与GROUP BY
语句结合使用,用于对查询结果进行分组后进行计算。例如,SELECT Department, AVG(Salary) FROM Employees GROUP BY Department;
返回每个部门的平均工资。
2. 字符串处理函数
字符串函数用于对字符串数据进行操作和处理。常见的字符串处理函数有:
CONCAT()
:连接两个或多个字符串。例如,SELECT CONCAT(FirstName, ' ', LastName) AS FullName FROM Employees;
将FirstName
和LastName
合并为FullName
。LENGTH()
:返回字符串的长度(以字符为单位)。例如,SELECT LENGTH(FirstName) FROM Employees;
返回FirstName
列每个值的字符长度。UPPER()
:将字符串转换为大写。例如,SELECT UPPER(FirstName) FROM Employees;
将员工的名字转换为大写字母。LOWER()
:将字符串转换为小写。例如,SELECT LOWER(LastName) FROM Employees;
将员工的姓氏转换为小写字母。TRIM()
:去除字符串两端的空白字符。例如,SELECT TRIM(FirstName) FROM Employees;
去除FirstName
两端的空格。SUBSTRING()
:提取字符串的子字符串。例如,SELECT SUBSTRING(FirstName, 1, 3) FROM Employees;
提取FirstName
列中每个值的前三个字符。REPLACE()
:替换字符串中的子字符串。例如,SELECT REPLACE(FirstName, 'John', 'Mike') FROM Employees;
将名字为 ‘John’ 的员工名字替换为 ‘Mike’。FIND_IN_SET()
:查找字符串是否在逗号分隔的字符串中,返回位置。例如,SELECT FIND_IN_SET('HR', 'HR,IT,Finance') AS DepartmentPosition;
查找 ‘HR’ 在字符串 ‘HR,IT,Finance’ 中的位置。
3. 日期函数
日期函数用于处理日期和时间数据。常见的日期函数有:
NOW()
:返回当前日期和时间(系统时间)。例如,SELECT NOW();
返回当前日期和时间,如2024-12-21 10:30:00
。CURDATE()
:返回当前日期。例如,SELECT CURDATE();
返回当前日期,如2024-12-21
。DATEDIFF()
:计算两个日期之间的天数差异。例如,SELECT DATEDIFF('2024-12-21', '2024-12-01');
计算两个日期之间的天数差异,结果为20天。DATE_ADD()
:向日期添加指定的时间间隔。例如,SELECT DATE_ADD('2024-12-01', INTERVAL 10 DAY);
在2024-12-01
上添加 10 天,结果为2024-12-11
。DATE_SUB()
:从日期中减去指定的时间间隔。例如,SELECT DATE_SUB('2024-12-21', INTERVAL 5 DAY);
从2024-12-21
减去 5 天,结果为2024-12-16
。YEAR()
:返回日期的年份部分。例如,SELECT YEAR('2024-12-21');
返回2024
。MONTH()
:返回日期的月份部分。例如,SELECT MONTH('2024-12-21');
返回12
。DAY()
:返回日期的日部分。例如,SELECT DAY('2024-12-21');
返回21
。WEEKDAY()
:返回日期的星期几(0=星期一,6=星期天)。例如,SELECT WEEKDAY('2024-12-21');
返回5
,表示星期六。
相关文章:
【数据库】SQL语句基础
【数据库】SQL语句基础 文章目录 【数据库】SQL语句基础一、SQL与数据库二、 SQL语句类型2.1 数据定义语言(DDL)1. 创建数据库:CREATE DATABASE2. 创建表:CREATE TABLE3. 删除表:DROP TABLE4. 修改表结构:A…...
性能】JDK和Jmeter的安装与配置
一、JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 选择对应系统的安装包,下载后安装,安装中记录JDK安装的地址,之后一直点击下一…...
Hadoop、Hbase使用Snappy压缩
1. 前期准备 系统环境:centos7.9 配置信息:8C8G100G hadoop和hbase为单节点部署模式 jdk版本jdk1.8.0_361 1.1. 修改系统时间 timedatectl set-timezone <TimeZone> 1.2. 修改主机名以及主机名和IP的映射 vim /etc/hosts #将自己的主机名以及…...
初试Docker
1. 查看版本 docker --version2. 拉取镜像并查看当前存在的镜像 docker pull hello-world查看是否成功拉取到docker docker images在Docker Desktop 可视化查看 3. 删除镜像 docker rmi xxx4. 启动容器 以下命令使用 mysql镜像启动一个容器,参数为以命令行模…...
【Rust自学】4.5. 切片(Slice)
4.5.0. 写在正文之前 这是第四章的最后一篇文章了,在这里也顺便对这章做一个总结: 所有权、借用和切片的概念确保 Rust 程序在编译时的内存安全。 Rust语言让程序员能够以与其他系统编程语言相同的方式控制内存使用情况,但是当数据所有者超…...
番外:ubuntu 下的sqlite3
What Is SQLite? SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world ps:SQLite Home Page sqlite3 的安装: user…...
全脐点曲面当且仅当平面或者球面的一部分
S 是全脐点曲面当且仅当 S 是平面或者球面的一部分。 S_\text{ 是全脐点曲面当且仅当 }{S_\text{ 是平面或者球面的一部分。}} S 是全脐点曲面当且仅当 S 是平面或者球面的一部分。 证: 充分性显然,下证必要性。 若 r ( u , v ) r(u,v) r(u,v)是…...
Vue之版本演进
一、引言 Vue.js,发音为 /vjuː/,是一款轻量级的用于构建用户界面的渐进式JavaScript框架。自2014年由前Google工程师尤雨溪(Evan You)发布以来,Vue.js凭借其简洁的API、灵活的组件系统以及高效的性能,迅速…...
四川托普信息技术职业学院教案1
四川托普信息技术职业学院教案 【计科系】 周次 第 1周,第1次课 备 注 章节名称 第1章 XML语言简介 引言 1.1 HTML与标记语言 1.2 XML的来源 1.3 XML的制定目标 1.4 XML概述 1.5 有了HTML了,为什么还要发展XML 1.5.1 HTML的缺点 1.5.2 XML的特点 1.6 X…...
《Java核心技术I》Swing中的边框
边框 BorderFactory静态方法创建边框,凹斜面,凸斜面,蚀刻,直线,蒙版,空白。 边框添加标题,BorderFactory.createTitledBorder 组合边框,BorderFactory.createCompoundBorder JCo…...
xlua中自定义lua文件加载的一种方式
此种方法来自LoxodonFramework,这里只做记录 定义一个LoaderBase类,做一个到CustomLoader的隐式类型转换 public abstract class LoaderBase {protected abstract byte[] Load(ref string fileName);/// <summary>/// 隐式类型转换,将…...
Suno Api V4模型无水印开发「高清音频WAV下载」 —— 「Suno Api系列」第6篇
历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中,支持120并发任务 Suno Api V4模型无水印开发「灵感模式」 —— 「Suno Api系列」第1篇 Suno Api V4模型无水印开发「自定义模式」 —— 「Suno Api系列」第2篇 Suno Api V4模型无水印开发「AI生成歌词」…...
EE308FZ_Sixth Assignment_Beta Sprint_Sprint Essay1
AssignmentBeta SprintCourseEE308FZ[A] — Software EngineeringClass Link2401_MU_SE_FZURequirementsSixth Assignment——Beta SprintTeam NameFZUGOObjectiveSprint Essay 1_Day1-Day2 (12.11-12.12)Other Reference1. WeChat Mini Program Design Guide 2. Javascript St…...
github如何给本机绑定 ssh密钥(MACOS)
生成 SSH 密钥 如果没有现成的密钥,执行以下命令来生成一个新的 SSH 密钥: ssh-keygen -t rsa -b 4096 -C "替换为你的邮箱" 添加 SSH 密钥到 SSH 代理 在终端中运行以下命令,启动 SSH 代理: eval "$(ssh-agen…...
使用Python实现基于AR的教育应用:打破课堂的墙壁
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...
【数据分析】层次贝叶斯
文章目录 一、 贝叶斯推理二、 层次贝叶斯模型三、 层次贝叶斯的特点四、 数学表述五、推断方法六、应用领域 层次贝叶斯(Hierarchical Bayesian)方法是一种基于贝叶斯推理的统计模型,用于处理具有多个层次结构的数据模型。 它允许我们在同一…...
linux top命令刷新速度的原理
top命令刷新速度的原理 top命令默认会按照一定的时间间隔(通常是3秒)更新系统资源使用情况的显示内容。它通过读取系统的/proc文件系统中的相关文件(如/proc/stat用于CPU信息、/proc/meminfo用于内存信息等)来获取最新的进程和资源…...
bestphp‘s revenge
bestphp’s revenge 知识点 php session反序列化 解题 <?php highlight_file(__FILE__); $b implode; call_user_func($_GET[f], $_POST); //参数二的位置固定为 $_POST 数组,我们很容易便想到利用 extract 函数进行变量覆盖,以便配合后续利用…...
中化信息与枫清科技深化合作:共探“AI+”产业新生态
随着数字化转型的浪潮席卷全球,数据已成为推动创新和经济增长的关键力量。为持续深化数据要素价值挖掘与应用实践,推动打造行业交流平台,驱动产业创新共荣,2024 年 12 月 18 日 -19 日,由中国通信标准化协会主办的“20…...
Java性能测试Benchmark使用总结
如何测量Java代码的性能 在 Java 中,可以使用多种方法来测量一段代码的执行性能。使用 System.currentTimeMillis()是最常见的方法 long startTime System.currentTimeMillis();// 需要测量的代码块 for (int i 0; i < 1000000; i) {// 示例代码 }long endTi…...
完整微服务设计 功能实现
我们将以一个简单的电商系统为例,实现微服务架构,逐步用Java代码详细实现每个模块,并配合注释帮助小白理解。在这个实现中,我们使用以下工具和框架: Spring Boot:用于构建微服务。Spring Cloud:…...
【Java基础面试题025】什么是Java的Integer缓存池?
回答重点 Java的Integer缓存池(Integer Cache)是为了提升性能和节省内存。根据实践发现大部分的数据操作都集中在值比较小的范围,因此缓存这些对象可以减少内存分配和垃圾回收的负担,提升性能 在 -128到127范围内的Integer对象会…...
道可云人工智能元宇宙每日资讯|浙江工商大学发布“人工智能时代创新型人才培养行动计划”
道可云元宇宙每日简报(2024年12月20日)讯,今日元宇宙新鲜事有: 浙江工商大学发布“人工智能时代创新型人才培养行动计划” 12月18日,浙江工商大学发布了《人工智能时代创新型人才培养行动计划》,提出人工…...
树莓派4B 搭建openwrt内置超多插件docker,nas等等使用教程
刷入固件 (想要固件的加我vx wyy7293) bleachwrt-plus-20241112-bcm27xx-bcm2711-rpi-4-squashfs-factory.img上电,并且把网线两头分别插在pi网口上和电脑的网口上(电脑必须断网) 等待网口灯亮,进入192.168.1.1 默认账密 root password 进入系统后更改openwrt的网关地址相关…...
excel 列名是数据表 的字段名 ,单元格的值 是数据表对应字段的值,生成sql插入语句
在 Excel 中,按 Alt F11 打开 VBA 编辑器。在菜单栏选择 插入 -> 模块,在新模块中粘贴以下代码。 VBA 代码 Sub GenerateSQLInsertStatementsToFile()Dim ws As WorksheetDim lastRow As Long, lastCol As Long, i As Long, j As LongDim sql As S…...
【Rust自学】4.3. 所有权与函数
4.3.0 写在正文之前 在学习了Rust的通用编程概念后,就来到了整个Rust的重中之重——所有权,它跟其他语言都不太一样,很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节: 所有权࿱…...
OpenShift 4 - 多云管理(2) - 配置多集群观察功能
《OpenShift / RHEL / DevSecOps 汇总目录》 本文在 OpenShift 4.17 RHACM 2.12 环境中进行验证。 文章目录 多集群观察技术架构安装多集群观察功能监控多集群的运行状态监控多集群的应用运行在被管集群监控应用运行在管理集群监控被管集群的应用运行 参考 多集群观察技术架构…...
【机器学习】机器学习的基本分类-强化学习(Reinforcement Learning, RL)
强化学习(Reinforcement Learning, RL)是一种基于试错的方法,旨在通过智能体与环境的交互,学习能够最大化累积奖励的策略。以下是强化学习的详细介绍。 强化学习的核心概念 智能体(Agent) 执行动作并与环境…...
Docker 设置代理的三种方法(2024年12月19日亲自测试)
Docker 设置代理的三种方法 在 Docker 中设置代理是非常常见的需求,尤其是在某些需要通过代理访问外部资源的网络环境下。本文将介绍三种配置 Docker 使用代理的常见方法:通过 daemon.json 配置镜像加速器、通过 daemon.json 配置 HTTP/HTTPS 代理、以及…...
Pycharm配置Python开发环境
Pycharm配置Python开发环境 在之前的文章中,安装好了Pyhton和Pycharm。 打开Pycharm,如下图 配置完成之后,如下图所示:...
【信息系统项目管理师】高分论文:论信息系统项目的进度管理(一体化智能公共数据平台)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划进度管理2、定义活动3、排列活动顺序5、制定进度计划6、控制进度论文 2022年9月,我作为项目经理参加了XX市的一体化智能公共数据平台项目的建设工作,2022年是XX市政府数字化改革的元年,全市上下…...
Chromium CDP 开发(十):Chromium 中增加自己的Domain
1. 引言 在深入了解了 Chromium CDP(Chrome DevTools Protocol)的开发过程之后,接下来我们将探讨如何创建一个自定义的 CDP Domain。通过为特定功能创建自己的 CDP Domain,可以避免对已有的 CDP 进行侵入式修改,从而更…...
《基于 Python 的网页爬虫详细教程》
一、引言 在当今信息时代,从互联网上获取大量有价值的数据对于许多领域的研究和分析至关重要。网页爬虫是一种自动化程序,可以从网页上抓取所需的数据。Python 作为一种强大的编程语言,拥有丰富的库和工具,使得网页爬虫的开发变得…...
前端知识图谱 - JavaScript基础(变量和类型)
变量和类型 1. JavaScript 规定了几种语言类型? JavaScript 语言的每一个值都属于某一种数据类型,它规定了 7 种语言类型。语言类型广泛用于变量、函数参数、表达式、函数返回值等场合,根据最新的语言标准,这 7 种语言类型如下&…...
五十个网络安全学习项目——(九)无线网络安全分析
五十个网络安全学习项目——(九)无线网络安全分析 这个系列灵感来源是:50个网络安全项目创意:覆盖新手至专家级,本人打算把这些项目都做一遍,做好记录,也算是对自己的提升。 本文将对WAPI 协议…...
10. 考勤信息
题目描述 公司用一个字符串来表示员工的出勤信息 absent:缺勤late: 迟到leaveearly: 早退present: 正常上班 现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下: 缺勤不超过一次,没有连续的迟到/早退:任意连续7次考勤&a…...
预览和下载 (pc和微信小程序)
1.微信小程序 预览pdf 或者 图片等 //utils.js 文件//通过接口返回文件链接 打开文档 export default function previewFile({ downLinkUrl, tempFilePath }) {let url "https://" downLinkUrl.replace("http://", "").replace("https:…...
Redis 7.x如何安装与配置?保姆级教程
大家好,我是袁庭新。最新写了一套最新版的Redis 7.x企业级开发教程,今天先给大家介绍下Redis 7.x如何在Linux系统上安装和配置。 1 Redis下载与安装 使用非关系型数据库Redis必须先进行安装配置并开启Redis服务,然后使用对应客户端连接使用…...
序列化和反序列化(一)
因为通过这段时间的学习,发现,序列化和反序列化的考点和漏洞在平时遇到的还是比较多的,而且自己也没有特别去学习过这个知识点,所以在这里写一篇关于这里序列化和反序列话的博客,废话就停止在这里了。 在介绍具体的序列…...
1小时放弃Rust(2): 两数之和
1. 目的 陈越姥姥说,ACM拿奖的人有两类,一类是 NOIP 搞了好几年的,另一类是大学才开始搞 ACM 但是专注度远超常人的人。 学习 Rust 大概也是需要高度的专注度。让我试一下 ACM 的入门题目 AB 吧! 2. 题目地址 https://leetcod…...
罗德与施瓦茨NRP33SN,一款独立、特性齐全的功率探头
罗德与施瓦茨NRP33SN功率探头概述 ROHDE & SCHWARZ NRP33S 三路二极管功率传感器 罗德与施瓦茨 NRP33S 三路二极管功率传感器是一款独立 、特性齐全的仪器。它们可以通过罗德与施瓦茨 NRP2 基 本单元、通过 USB 的笔记本电脑/PC 以及许多罗德与施瓦 茨仪器(例如…...
【GoF23种设计模式】02_单例模式(Singleton Pattern)
文章目录 前言一、什么是单例模式?二、为什么要用单例模式?三、如何实现单例模式?总结 前言 提示:设计者模式有利于提高开发者的编程效率和代码质量: GoF(Gang of Four,四人帮)设计…...
springboot452当代中国获奖的知名作家信息管理系统的设计与实现(论文+源码)_kaic
摘 要 计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即时通话…...
基于Redis的网关鉴权方案与性能优化
文章目录 前言一、微服务鉴权1.1 前端权限检查1.2 后端权限检查1.3 优缺点 二、网关鉴权2.1 接口权限存储至Redis2.2 网关鉴权做匹配 总结 前言 在微服务架构中,如何通过网关鉴权结合Redis缓存提升权限控制的效率与性能。首先,文章对比了两种常见的权限…...
FutureWarning: `clean_up_tokenization_spaces` was not set.
警告内容: "clean_up_tokenization_spaces was not set. It will be set to True by default. This behavior will be deprecated in transformers v4.45, and will be then set to False by default. For more details check this issue: https://github.com…...
卫星综合电子软件系统
微小卫星星载综合电子系统采用星上总线网络将星载功能模块互相连接,实现微小卫星平台的模块集成、资源重组优化以及内部信息共享和综合利用。综合电子系统是微小卫星的核心组成部分,是整星的信息和控制中心。 包括遥控遥测管理系统、载荷管理系统、 热控…...
M3D: 基于多模态大模型的新型3D医学影像分析框架,将3D医学图像分析从“看图片“提升到“理解空间“的层次,支持检索、报告生成、问答、定位和分割等8类任务
M3D: 基于多模态大模型的新型3D医学影像分析框架,将3D医学图像分析从“看图片“提升到“理解空间“的层次,支持检索、报告生成、问答、定位和分割等8类任务 论文大纲理解1. 确认目标2. 分析过程(目标-手段分析)核心问题拆解 3. 实…...
开源数字人系统源码短视频文案提取文案改写去水印小程序
应用场景 短视频去水印: 个人用户:在社交媒体上分享短视频时,去除原视频中的水印,以保护个人隐私或避免侵权问题。企业用户:在广告、宣传和营销活动中,使用无水印的短视频以提高品牌知名度和吸引力。 文案提…...
范德蒙矩阵(Vandermonde 矩阵)简介:意义、用途及编程应用
参考: Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares Stephen Boyd and Lieven Vandenberghe 书的网站: https://web.stanford.edu/~boyd/vmls/ Vandermonde 矩阵简介:意义、用途及编程应用 在数学和计算科学中&a…...
CSSmodule的作用是什么
CSS Modules的作用主要体现在以下几个方面: 1. 解决全局样式污染问题 在传统的CSS管理方式中,样式定义通常是全局的,这很容易导致全局样式污染。当多个组件或页面共享同一个样式时,可能会出现样式冲突和覆盖的情况,从…...