mysql的一些函数及其用法

mysql

1-来自于leetcode1517的题目

表: Users

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| name          | varchar |
| mail          | varchar |
+---------------+---------+

已知一个表,它的创建语句

Create table If Not Exists Users 
(user_id int, name varchar(30), mail varchar(50))

添加语句

Truncate table Users//清空users这个
insert into Users (user_id, name, mail) values ('1', 'Winston', 'winston@leetcode.com')

2----来自于1527道题

患者信息表: Patients

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| patient_id   | int     |
| patient_name | varchar |
| conditions   | varchar |
+--------------+---------+
在 SQL 中,patient_id (患者 ID)是该表的主键。
'conditions' (疾病)包含 0 个或以上的疾病代码,以空格分隔。
这个表包含医院中患者的信息。
Create table If Not Exists Patients (patient_id int, patient_name varchar(30), conditions varchar(100))

3----第1581题

表:Visits

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| visit_id    | int     |
| customer_id | int     |
+-------------+---------+
visit_id 是该表中具有唯一值的列。
该表包含有关光临过购物中心的顾客的信息。
 

表:Transactions

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| transaction_id | int     |
| visit_id       | int     |
| amount         | int     |
+----------------+---------+
transaction_id 是该表中具有唯一值的列。
此表包含 visit_id 期间进行的交易的信息。
Create table If Not Exists Visits(visit_id int, customer_id int)
Create table If Not Exists Transactions(transaction_id int, visit_id int, amount int)

4----第1587

表: Users

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| account      | int     |
| name         | varchar |
+--------------+---------+
account 是该表的主键(具有唯一值的列)。
该表的每一行都包含银行中每个用户的帐号。
表中不会有两个用户具有相同的名称。
 

表: Transactions

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| trans_id      | int     |
| account       | int     |
| amount        | int     |
| transacted_on | date    |
+---------------+---------+
trans_id 是该表主键(具有唯一值的列)。
该表的每一行包含了所有账户的交易改变情况。
如果用户收到了钱, 那么金额是正的; 如果用户转了钱, 那么金额是负的。
所有账户的起始余额为 0
Create table If Not Exists Users (account int, name varchar(20))
Create table If Not Exists Transactions (trans_id int, account int, amount int, transacted_on date)

常见且重要且关键的sql语句的一些匹配方式

关于某个数据需要进行判断,该数据的类型是字符串类型,其前缀必须是字母开头,可以包含字母(大写或小写),数字,下划线 '_' ,点 '.' 和/或破折号 '-'

#这道题需要用到正则表达式
regexp 是“正则表达式”(Regular Expression)的缩写,正则表达式是一种用于描述字符串模式的工具。它允许用户定义复杂的字符串匹配规则,可以用于搜索、替换和验证字符串。
^:表示字符串的开始。确保匹配从字符串的开头开始。

[a-zA-Z]:表示匹配一个字母,范围是大写字母 A-Z 或小写字母 a-z。这意味着电子邮件的用户名部分必须以字母开头。

[\\w.-]*:

\\w:表示匹配任何字母数字字符(包括下划线),相当于 [a-zA-Z0-9_].:表示匹配一个点字符。由于在正则表达式中,点 . 是一个特殊字符,表示匹配任何单个字符,因此需要转义为 \.(在某些语言中需要用双反斜杠 \\. 来表示)。
-:表示匹配一个连字符。
*:表示前面的字符集可以出现零次或多次。这意味着在字母之后,可以有多个字母、数字、下划线、点或连字符。
\\@leetcode:表示匹配字符串 @leetcode。同样,由于 @ 是一个特殊字符,通常需要转义,所以用 \\@ 来表示。

\\.com:表示匹配字符串 .com。同样,点 . 需要转义,所以用 \\. 来表示。

$:表示字符串的结束。确保匹配到字符串的末尾。

regexp '^[a-zA-Z][\\w.-]*\\@leetcode\\.com$'

详细的请看1517.

关于某个数据中间包含了某一个数据(字符,单词)

WHERE conditions LIKE 'DIAB1%':查找 conditions 字段以 DIAB1 开头的记录。

OR conditions LIKE '% DIAB1%':查找 conditions 字段中包含 DIAB1 作为一个单词(前面有空格)的记录。

OR conditions LIKE '%DIAB1%':查找 conditions 字段中包含 DIAB1 的记录,不论前面是否有空格。

详情间1527题

为什莫要用一个空格,由于有的单词可能会包含里面的这些单词

常见的查询顺序

select 数据
fromwhere 条件
·group by 某个数据的排序

聚合函数sum()和count()的区别

SUM()COUNT()SQL 中常用的聚合函数,它们的主要区别在于它们的功能和用途。以下是对这两个函数的详细解释:

1. SUM()
功能:SUM() 函数用于计算指定列中所有数值的总和。
用法:通常用于数值型数据列。
返回值:返回一个数值,表示该列所有行的总和。如果没有行符合条件,则返回 NULL。
示例:
SELECT SUM(salary) AS total_salary
FROM Employees;
这个查询将计算 Employees 表中所有员工的薪水总和。
2. COUNT()
功能:COUNT() 函数用于计算符合条件的行数。
用法:可以用于任何类型的数据列,也可以用于 * 来计算所有行。
返回值:返回一个整数,表示符合条件的行数。如果没有行符合条件,则返回 0。
示例:
SELECT COUNT(*) AS total_employees
FROM Employees;
这个查询将计算 Employees 表中的所有员工数量。
主要区别
特点	SUM()	COUNT()
功能	计算数值的总和	计算行数
返回值类型	数值	整数
用法	仅适用于数值型数据	可用于任何数据类型
NULL 值处理	忽略 NULLNULL 值也会被计入(如果使用 COUNT(column_name),则 NULL 值不计入)
例子对比
假设有一个名为 Sales 的表,包含以下数据:

id	amount
1	100
2	200
3	NULL
4	300
使用 SUM()SELECT SUM(amount) AS total_amount FROM Sales;
返回结果:400100 + 200 + 300NULL 被忽略)

使用 COUNT()SELECT COUNT(amount) AS total_count FROM Sales;
返回结果:3(计入了 100200300NULL 不计入)

总结
使用 SUM() 计算数值的总和。
使用 COUNT() 计算行数或特定列的非 NULL 值数量。
了解这两个函数的区别可以帮助您更有效地进行数据分析和查询。

Having这个函数在什么情况下会被使用

HAVING 子句在 SQL 中用于对聚合结果进行过滤,通常与 GROUP BY 子句一起使用。与 WHERE 子句不同,WHERE 用于在数据分组之前过滤行,而 HAVING 用于对分组后的结果进行过滤。下面是一些关于 HAVING 的使用场景和示例。

使用场景
聚合条件过滤:当你需要根据聚合函数(如 SUM()COUNT()AVG() 等)的结果来过滤数据时,使用 HAVING。

与 GROUP BY 一起使用:HAVING 通常与 GROUP BY 子句结合使用,以便在分组后对每个组的聚合结果进行条件筛选。

复杂的条件:如果需要基于聚合结果的复杂条件进行过滤,HAVING 是合适的选择。

示例
假设有一个名为 Sales 的表,包含以下字段:id、product_id、quantity 和 sales_amount。我们想要找出销售数量大于 100 的产品:

SELECT product_id, SUM(quantity) AS total_quantity
FROM Sales
GROUP BY product_id
HAVING SUM(quantity) > 100;
解释
SELECT product_id, SUM(quantity) AS total_quantity:选择产品 ID 和该产品的总销售数量。

FROM Sales:从 Sales 表中查询数据。

GROUP BY product_id:按产品 ID 对数据进行分组。

HAVING SUM(quantity) > 100:过滤出总销售数量大于 100 的产品。

关键点
与 WHERE 的区别:WHERE 用于在数据分组之前过滤行,而 HAVING 用于在数据分组之后过滤聚合结果。例如,WHERE 不能用于聚合函数,而 HAVING 可以。

性能考虑:由于 HAVING 是在数据分组后执行的,因此在某些情况下,使用 WHERE 进行初步过滤可以提高查询性能。

总结
使用 HAVING 来对聚合结果进行过滤。
通常与 GROUP BY 子句一起使用。
适合复杂的聚合条件过滤。

降序升序关键字

返回的结果表按 percentage 的 降序 排序,若相同则按 contest_id 的 升序 排序。
ORDER BY percentage DESC, contest_id ASC

聚合函数avg()

AVG()SQL 中的一个聚合函数,用于计算一组数值的平均值。它会将指定列中的所有数值相加,然后除以该列中非空值的数量,从而得到平均值。

语法
AVG(column_name)
示例
假设有一个名为 employees 的表,包含员工的工资信息,如下所示:

employee_id	salary
1	5000
2	6000
3	7000
4	NULL
如果你想计算所有员工的平均工资,可以使用以下 SQL 查询:

SELECT AVG(salary) AS average_salary
FROM employees;
在这个例子中,AVG(salary) 将计算出所有非空工资的平均值,即 (5000 + 6000 + 7000) / 3 = 6000。

注意事项
AVG() 函数只会计算非空值(NULL)的平均值。
如果列中所有值都是 NULLAVG() 将返回 NULLAVG() 函数在数据分析和报告中非常有用,能够帮助我们快速了解数据集的中心趋势。

如何将首字母变成大写的,其余都是小写

这段 SQL 代码的作用是将一个字符串的首字母转换为大写,其余字母转换为小写,从而实现首字母大写的效果。我们可以逐步解析这段代码的含义:

LEFT(name, 1): 这部分提取 name 字符串的第一个字符(即首字母)。

UPPER(LEFT(name, 1)): 将提取到的首字母转换为大写。

SUBSTRING(name, 2): 这部分提取 name 字符串从第二个字符开始的所有字符。

LOWER(SUBSTRING(name, 2)): 将从第二个字符开始的所有字符转换为小写。

CONCAT(...): 最后,CONCAT 函数将大写的首字母和小写的其余部分连接在一起,形成一个新的字符串。

示例
假设 name 的值为 "jOhn",那么:

LEFT(name, 1) 会返回 "j"
UPPER(LEFT(name, 1)) 会返回 "J"
SUBSTRING(name, 2) 会返回 "Ohn"
LOWER(SUBSTRING(name, 2)) 会返回 "ohn"
CONCAT(UPPER(LEFT(name, 1)), LOWER(SUBSTRING(name, 2))) 会返回 "John"
总结
这段代码可以用于格式化名字,使其符合常见的“首字母大写,其余小写”的格式。

求字符串的长度

CHAR_LENGTH()

union

SQL 中,UNION 是一个用于合并两个或多个 SELECT 查询结果的操作符。使用 UNION 可以将多个查询的结果集合并成一个结果集,且该结果集会自动去除重复的行。

语法
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
使用要求
列数和数据类型: 所有参与 UNIONSELECT 查询必须具有相同数量的列,并且对应列的数据类型应该兼容。
去重: UNION 默认会去除重复的记录。如果希望保留重复的记录,可以使用 UNION ALL。
示例
假设有两个表 employees_2022 和 employees_2023,它们的结构相同,包含员工的 ID 和姓名:

employees_2022 表:

employee_id	name
1	Alice
2	Bob
employees_2023 表:

employee_id	name
2	Bob
3	Charlie
如果你想要获取这两年所有员工的姓名,可以使用 UNIONSELECT name FROM employees_2022
UNION
SELECT name FROM employees_2023;
结果
这个查询将返回以下结果:

name
Alice
Bob
Charlie
注意:Bob 只会出现一次,因为 UNION 会自动去除重复的记录。

使用 UNION ALL
如果希望保留所有记录,包括重复的,可以使用 UNION ALLSELECT name FROM employees_2022
UNION ALL
SELECT name FROM employees_2023;
结果
这个查询将返回以下结果:

name
Alice
Bob
Bob
Charlie
总结
UNION 是一个强大的工具,可以帮助我们合并来自不同表或查询的结果集,适用于需要整合多条查询结果的场景。

count(1)

你可以将 COUNT(1) 与其他 SQL 功能结合使用,例如 GROUP BY 和 HAVING:

SELECT 
    department,
    COUNT(1) AS employee_count
FROM 
    employees
GROUP BY 
    department
HAVING 
    COUNT(1) > 10;
这个查询将返回每个部门的员工数量,并只显示员工数量大于 10 的部门。

总结
使用 COUNT(1) 是一种有效的方式来获取记录数量,适用于多种场景。根据具体需求,可以选择 COUNT(1) 或 COUNT(*)。

第n行的数据

源查询语句
SELECT DISTINCT
            Salary
        FROM
            Employee
        ORDER BY Salary DESC
        LIMIT 1 OFFSET 1
        
        
LIMIT 1 表示只返回一条记录。
OFFSET 1 表示跳过第一条记录。结合使用 LIMIT 和 OFFSET,这条语句实际上是获取排序后第二条记录。

窗口函数DENSE_RANK()

是 SQL 中的一个窗口函数,用于为结果集中的行分配排名。与 RANK() 函数不同,DENSE_RANK() 在遇到重复值时不会跳过排名,而是为相同的值分配相同的排名,并为下一个不同的值分配下一个连续的排名。

窗口函数over()

OVER() 是 SQL 中用于窗口函数的一个关键字,它定义了窗口的范围和排序方式。窗口函数允许你在查询结果的每一行上执行计算,而不需要将结果分组。以下是一些常见的用法和示例:

示例

假设你有一个名为 Sales 的表,包含 salespersonamount 列,你想计算每个销售人员的累计销售额。

SELECT 
    salesperson,
    amount,
    SUM(amount) OVER (PARTITION BY salesperson ORDER BY sale_date) AS cumulative_sales
FROM 
    Sales;

说明:

  • SUM(amount): 这是一个聚合函数,用于计算销售额的总和。
  • OVER(): 关键字,指示这是一个窗口函数。
  • PARTITION BY salesperson: 将结果集按销售人员分区,每个销售人员的计算是独立的。
  • ORDER BY sale_date: 在每个分区内,按销售日期排序,以便计算累计销售额。

注意事项:****

  • OVER() 可以与多种聚合函数一起使用,如 ROW_NUMBER(), RANK(), DENSE_RANK(), AVG(), COUNT() 等。
  • 你可以根据需要使用 PARTITION BYORDER BY 来定义窗口的范围和顺序。

over和dense_rank()结合一起使用

表: Scores

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| score       | decimal |
+-------------+---------+
id 是该表的主键(有不同值的列)。
该表的每一行都包含了一场比赛的分数。Score 是一个有两位小数点的浮点值。

编写一个解决方案来查询分数的排名。排名按以下规则计算:

  • 分数应按从高到低排列。
  • 如果两个分数相等,那么两个分数的排名应该相同。
  • 在排名相同的分数后,排名数应该是下一个连续的整数。换句话说,排名之间不应该有空缺的数字。

score 降序返回结果表。

查询结果格式如下所示。

示例 1:

输入: 
Scores 表:
+----+-------+
| id | score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+
输出: 
+-------+------+
| score | rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+
SELECT
  S.score,
  DENSE_RANK() OVER (
    ORDER BY
      S.score DESC
  ) AS 'rank'
FROM
  Scores S;

datediff()

datediff(a.event_date, p.login)=1

ATEDIFF() 函数用于计算两个日期之间的差异,通常以天为单位。你提到的表达式 DATEDIFF(a.event_date, p.login) = 1 的含义是:

解释

  • DATEDIFF(a.event_date, p.login): 这个函数计算 a.event_datep.login 之间的天数差。如果 a.event_date 是晚于 p.login 的日期,结果将是正整数;如果是早于,结果将是负整数;如果两者相同,结果为 0。
  • = 1: 这个条件表示我们只关心那些 a.event_datep.login 晚一天的记录。换句话说,a.event_datep.login 的后一天。

COALESCE函数

COALESCE 函数用于返回其参数中的第一个非空值。你提到的 COALESCE(s2.student, s1.student) 的意思是,如果 s2.student 的值不为空,则返回 s2.student 的值;如果 s2.student 的值为空,则返回 s1.student 的值。

语法

COALESCE(value1, value2, ..., valueN)
  • value1, value2, ..., valueN: 你可以传入多个值,COALESCE 将返回第一个非空值。

示例

假设你有两个表 students1students2,它们都有一个名为 student 的列。你想要从这两个表中获取学生的名字,但优先选择 students2 表中的名字,如果 students2 表中没有名字,则使用 students1 表中的名字。

SELECT 
    COALESCE(s2.student, s1.student) AS student_name
FROM 
    students1 s1
LEFT JOIN 
    students2 s2 ON s1.id = s2.id;

结果解释

  • 如果 s2.student 不为空,则 student_name 的值将是 s2.student 的值。
  • 如果 s2.student 为空,则 student_name 的值将是 s1.student 的值。
  • 这样,你可以确保 student_name 列总是有一个有效的学生名字(如果存在的话)。

用途

COALESCE 函数在处理缺失数据时非常有用,尤其是在需要从多个来源合并数据时。它可以确保查询结果中没有空值,提供更完整的信息。

row_number() over()连用

ROW_NUMBER() 是 SQL 中的一个窗口函数,用于为结果集中的每一行分配一个唯一的序列号。结合 PARTITION BYORDER BY 子句时,它可以按照指定的分组和排序规则生成行号。

语法

ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY column3, column4, ...)
  • PARTITION BY: 指定如何将结果集划分为多个分区。每个分区内的行号是独立的。
  • ORDER BY: 指定在每个分区内如何排序行,以确定行号的分配顺序。

示例

假设你有一个名为 orders 的表,包含以下列:

  • order_id: 订单的唯一标识符
  • customer_id: 顾客的唯一标识符
  • order_date: 订单日期

你希望为每个顾客的订单分配一个行号,按照订单日期升序排列。可以使用如下查询:

SELECT 
    order_id,
    customer_id,
    order_date,
    ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date) AS row_num
FROM 
    orders;

结果解释

  • PARTITION BY customer_id: 这意味着结果集将根据 customer_id 列的值进行分组。每个顾客的订单将被视为一个独立的分区。
  • ORDER BY order_date: 在每个顾客的分区内,订单将按照 order_date 列的值进行升序排序。
  • ROW_NUMBER(): 对于每个顾客的订单,ROW_NUMBER() 将分配一个行号,最早的订单将被分配为 1,第二个订单为 2,以此类推。

示例结果

假设 orders 表的数据如下:

order_idcustomer_idorder_date
11012023-01-01
21012023-01-05
31022023-01-03
41012023-01-02
51022023-01-04

执行上述查询后,结果可能如下:

order_idcustomer_idorder_daterow_num
11012023-01-011
41012023-01-022
21012023-01-053
31022023-01-031
51022023-01-042

用途

ROW_NUMBER() 函数在许多场景中非常有用,例如:

  • 在分页查询中为每一页的结果分配行号。
  • 在需要对分组数据进行排序并获取前 N 条记录时。
  • 数据分析和报告中,生成序列号以便于引用。

查找每个月和每个国家/地区。

数据表中的 trans_date 是精确到日,我们可以使用 DATE_FORMAT() 函数将日期按照年月 %Y-%m 输出。比如将 2019-01-02 转换成 2019-01 。

DATE_FORMAT(trans_date, ‘%Y-%m’)

sum(amount) over(rows 6 preceding)

SUM(amount) OVER (ROWS 6 PRECEDING) 是一种窗口函数的用法,用于对数据集中的某一列(在这个例子中是 amount)进行求和,并且可以在特定的窗口范围内进行计算。

解释

  • SUM(amount): 这是一个聚合函数,用于计算 amount 列的总和。
  • OVER: 关键字用于定义窗口函数的范围。
  • ROWS 6 PRECEDING: 这个部分指定了窗口的大小和位置。6 PRECEDING 意味着从当前行开始向上(即之前的行)计算总和,包括当前行在内的前6行。

示例

假设我们有一个销售记录的表格,结构如下:

idamount
1100
2200
3300
4400
5500
6600
7700
8800

如果我们执行如下 SQL 查询:

SELECT 
    id, 
    amount, 
    SUM(amount) OVER (ROWS 6 PRECEDING) AS running_total
FROM 
    sales;

结果

查询的结果将会是:

idamountrunning_total
1100100
2200300
3300600
44001000
55001500
66002100
77002700
88003300

注意事项

  1. 窗口的起始点: 在第一行(id = 1)时,只有这一行可用,因此它的 running_total 只会是 100
  2. 窗口大小: 当行数少于6时,窗口会自动调整为可用的行数。例如,在 id = 1id = 6 的行中,running_total 会包含所有可用的行。
  3. 性能: 使用窗口函数时,可能会对查询性能产生影响,尤其是在处理大数据集时,因此在使用时需要注意。

limit

LIMIT 可以接受两个参数:第一个参数表示要跳过的行数,第二个参数表示要返回的行数。

语法

SELECT column1, column2, ...
FROM table_name
LIMIT offset, row_count;
  • offset: 要跳过的行数。
  • row_count: 要返回的行数。

示例

假设我们有一个名为 employees 的表,结构如下:

idnamesalary
1Alice50000
2Bob60000
3Charlie70000
4David80000
5Eva90000
6Frank100000
7Grace110000
8Henry120000

如果我们执行以下查询:

SELECT * FROM employees
LIMIT 6, 2;

结果

这个查询的结果将会是:

idnamesalary
7Grace110000
8Henry120000

解释

  • LIMIT 6, 2

    :

    • 6 表示跳过前 6 行。
    • 2 表示返回接下来的 2 行。

注意事项

  1. 行数限制: 在一些数据库系统(如 MySQL)中,LIMIT 子句可以接受两个参数;而在其他数据库系统(如 SQL Server)中,可能使用不同的语法(如 OFFSETFETCH NEXT)。
  2. 性能: 使用 LIMITOFFSET 时,尤其是在处理大数据集时,可能会影响查询性能,因为数据库需要跳过一定数量的行。
  3. 数据顺序: 使用 LIMIT 时,通常需要结合 ORDER BY 子句,以确保返回的结果是有序的。

mod()

在 SQL 中,MOD() 函数用于计算两个数相除后的余数。这个函数常用于需要处理数值运算和判断奇偶性等场景。

语法

MOD(dividend, divisor)
  • dividend: 被除数。
  • divisor: 除数。

示例

假设我们有一个名为 numbers 的表,结构如下:

idvalue
110
215
320
425

我们可以使用 MOD() 函数来计算每个值除以 3 的余数:

SELECT 
    id, 
    value, 
    MOD(value, 3) AS remainder
FROM 
    numbers;

结果

执行上述查询后,结果将会是:

idvalueremainder
1101
2150
3202
4251

解释

  • 对于 value 为 10,计算 10 MOD 3 得到余数 1。
  • 对于 value 为 15,计算 15 MOD 3 得到余数 0。
  • 对于 value 为 20,计算 20 MOD 3 得到余数 2。
  • 对于 value 为 25,计算 25 MOD 3 得到余数 1。

使用场景

  1. 判断奇偶性: 可以用 MOD() 函数来判断一个数是奇数还是偶数。例如,MOD(value, 2) 返回 0 表示偶数,返回 1 表示奇数。
  2. 分组: 在某些情况下,可以使用 MOD() 函数对数据进行分组,例如将数据分为不同的组。
  3. 循环: 在处理循环逻辑时,MOD() 函数可以用于确定当前循环的状态。

注意事项

  • 在使用 MOD() 函数时,除数不能为 0,否则会导致错误。
  • 不同的数据库系统可能提供不同的实现方式。例如,在某些 SQL 方言中,可能使用 % 运算符来代替 MOD() 函数。

如何判断非空值以及空值

表: 教师表

+-------------+---------+
| 字段名称     | 类型     |
+-------------+---------+
| 教师号       | int     |
| 教师姓名     | varchar |
+-------------+---------+

教师号 是该表的主键。
该表的每一行表示 一名教师的信息,包含编号、姓名。

找出姓名不为空值的教师信息。

查询结果如下例所示。

示例 1:

输入: 
表:教师表
+-------+---------+
| 教师号 | 教师姓名 |
+-------+--------+
| 1     |  猴子   |
| 2     |  小明   |
| 3     |        |
| 4     |  null  |
+-------+--------+


输出: 
+-------+---------+
| 教师号 | 教师姓名 |
+-------+--------+
| 1     |  猴子   |
| 2     |  小明   |
+-------+--------+
解释:
编号 3 的教师姓名为空值,编号 4 的教师姓名为 null,因此返回 编号 1 和 2 的教师信息
select

  *

from

  教师表

where 教师姓名 is not null and 教师姓名 <> ''

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

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

相关文章

高性能网络模式:Reactor 和 Proactor

Reactor Reactor 采用I/O多路复用监听事件&#xff0c;收到事件后&#xff0c;根据事件类型分配给某个进程/线程。 实际应用中用到的模型&#xff1a; 单 Reactor 单进程 单 Reactor 多线程 优点&#xff1a;能充分利用多核CPU性能。 缺点&#xff1a;存在多线程竞争共享资源…

扩散模型论文概述(三):Stability AI系列工作【学习笔记】

视频链接&#xff1a;扩散模型论文概述&#xff08;三&#xff09;&#xff1a;Stability AI系列工作_哔哩哔哩_bilibili 本期视频讲的是Stability AI在图像生成的工作。 同样&#xff0c;第一张图片是神作&#xff0c;总结的太好了&#xff01; 介绍Stable Diffusion之前&…

大数据技术-Hadoop(四)Yarn的介绍与使用

目录 一、Yarn 基本结构 1、Yarn基本结构 2、Yarn的工作机制 二、Yarn常用的命令 三、调度器 1、Capacity Scheduler&#xff08;容量调度器&#xff09; 1.1、特点 1.2、配置 1.2.1、yarn-site.xml 1.2.2、capacity-scheduler.xml 1.3、重启yarn、刷新队列 测试 向hi…

玩转大语言模型——ollama导入huggingface下载的模型

ollama导入huggingface模型 前言gguf模型查找相关模型下载模型 导入Ollama配置参数文件导入模型查看导入情况 safetensfors模型下载模型下载llama.cpp配置环境并转换 前言 ollama在大语言模型的应用中十分的方便&#xff0c;但是也存在一定的问题&#xff0c;比如不能使用自己…

apollo内置eureka dashboard授权登录

要确保访问Eureka Server时要求输入账户和密码&#xff0c;需要确保以下几点&#xff1a; 确保 eurekaSecurityEnabled 配置为 true&#xff1a;这个配置项控制是否启用Eureka的安全认证。如果它被设置为 false&#xff0c;即使配置了用户名和密码&#xff0c;也不会启用安全认…

【Dify】Dify自定义模型设置 | 对接DMXAPI使用打折 Openai GPT 或 Claude3.5系列模型方法详解

一、Dify & DMXAPI 1、Dify DIFY&#xff08;Do It For You&#xff09;是一种自动化工具或服务&#xff0c;旨在帮助用户简化操作&#xff0c;减少繁琐的手动操作&#xff0c;提升工作效率。通过DIFY&#xff0c;用户能够快速完成任务、获取所需数据&#xff0c;并且可以…

【深度学习】布匹寻边:抓边误差小于3px【附完整链接】

布匹寻边 项目简介 布匹寻边是指布料裁剪过程中&#xff0c;通过AI寻边技术自动识别布匹的边缘&#xff0c;将检测到的边缘信息输出&#xff0c;确保裁剪的准确性&#xff0c;减少浪费&#xff0c;并提高生产效率。 项目需求 将打满针眼的布匹边缘裁剪掉&#xff0c;且误差小…

http range 下载大文件分片

摘自&#xff1a;https://www.jianshu.com/p/32c16103715a 上传分片下载也能分 HTTP 协议范围请求允许服务器只发送 HTTP 消息的一部分到客户端。范围请求在传送大的媒体文件&#xff0c;或者与文件下载的断点续传功能搭配使用时非常有用。 检测服务器端是否支持范围请求 假…

解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题

错误背景 WordPress版本&#xff1a;wordpress-6.6.2-zh_CN WooCommerce版本&#xff1a;woocommerce.9.5.1 WordPress在安装了WooCommerce插件后&#xff0c;安装的过程中没有问题&#xff0c;在安装完成后提示&#xff1a; 此站点遇到了致命错误&#xff0c;请查看您站点管理…

用户使用LLM模型都在干什么?

Anthropic 对用户与 Claude 3.5 Sonnet 的大量匿名对话展开分析&#xff0c;主要发现及相关情况如下&#xff1a; 使用用途分布 软件开发主导&#xff1a;在各类使用场景中&#xff0c;软件开发占比最高&#xff0c;其中编码占 Claude 对话的 15% - 25%&#xff0c;网页和移动应…

【巨实用】Git客户端基本操作

本文主要分享Git的一些基本常规操作&#xff0c;手把手教你如何配置~ ● 一个文件夹中初始化Git git init ● 为了方便以后提交代码需要对git进行配置&#xff08;第一次使用或者需求变更的时候&#xff09;&#xff0c;告诉git未来是谁在提交代码 git config --global user.na…

腾讯云AI代码助手编程挑战赛:自动生成漂亮的网页

在当今数字化时代&#xff0c;网页设计和开发已经成为一项至关重要的技能。在当今时代&#xff0c;借助AI的力量&#xff0c;这部分工作变得简单。本文借助腾讯云AI代码助手——“自动生成需要的网页”。本文将详细介绍如何利用AI代码助手生成网页素材&#xff0c;帮助你轻松打…

多台PC共用同一套鼠标键盘

当环境中有多个桌面 pc 需要操作的时候&#xff0c;在 多台 pc 之间切换会造成很多的不方便 可以通过远程进行连接&#xff0c;但是有一个更好的方案是让多台机器之间共用同一套键盘鼠标 常用的解决方案 synergy 和 sharemouse&#xff0c;通过移动光标在不同的 pc 间切换 s…

UOS系统mysql服务安装

UOS系统mysql服务安装 背景 1、安装环境&#xff1a;kvm虚拟机2、运行环境&#xff1a;uos server-1060e3、架构&#xff1a;x864、安装mysql版本&#xff1a;mysql-5.71、安装准备 # Mysql官网 https://downloads.mysql.com/archives/community/ # 下载安装包 wget -i -c …

Binlog实现MySQL主从同步

主从复制原理 ● Master 数据库只要发生变化&#xff0c;立马记录到Binary log 日志文件中 ● Slave数据库启动一个I/O thread连接Master数据库&#xff0c;请求Master变化的二进制日志 ● Slave I/O获取到的二进制日志&#xff0c;保存到自己的Relay log 日志文件中。 ● Sla…

matlab离线安装硬件支持包

MATLAB 硬件支持包离线安装 本文章提供matlab硬件支持包离线安装教程&#xff0c;因为我的matlab安装的某种原因&#xff08;破解&#xff09;&#xff0c;不支持硬件支持包的安装&#xff0c;相信也有很多相同情况的朋友&#xff0c;所以记录一下我是如何离线安装的&#xff…

C#进阶-在Ubuntu上部署ASP.NET Core Web API应用

随着云计算和容器化技术的普及&#xff0c;Linux 服务器已成为部署 Web 应用程序的主流平台之一。ASP.NET Core 作为一个跨平台、高性能的框架&#xff0c;非常适合在 Linux 环境中运行。本篇博客将详细介绍如何在 Linux 服务器上部署 ASP.NET Core Web API 应用&#xff0c;包…

从光子到图像——相机如何捕获世界?

引言 你是否想过为何我们按一下相机快门就可以将眼前广袤多彩的世界显示于一个小小的相机屏幕上&#xff1f;本期推文中将带着大家重现从光子转换为电子、电子转换为图像中数字驱动值的整个流程。 ▲人们通过相机捕获眼前的场景 从光子到电子的转换 光线首先通过光学镜头进入相…

C# 或 .NetCore 如何使用 NPOI 导出图片到 Excel 文件

今天在本文中&#xff0c;我们将尝试使用NPOI库将图像插入到 Excel 文件的特定位置。请将以下逻辑添加到您的写作方法中&#xff0c;在 Excel 文件中添加图像&#xff08;JPEG、PNG&#xff09;,我已经有一个示例 jpeg 文件 - Read-write-excel-npoi.jpg &#xff0c;我们将尝试…

OpenCV实现基于拉普拉斯算子的浮雕特效

图像浮雕效果的实现原理主要基于图像处理技术&#xff0c;特别是利用图像中像素之间的灰度差异来模拟立体感。以下是对该原理的详细解释&#xff1a; 一、浮雕效果的基本概念 浮雕是把所要呈现的图像突起于材质表面&#xff0c;根据凹凸的程度不同从而形成三维的立体感。在计…