MYSQL写题收获--查询

目录

1.<>的用法

2.空值的判断

(1)IS NULL 和IS NOT NULL

(2)<=>

3.OR和UNION

4.DISTINCT

5.ORDER BY

6.CHAR_LENGTH(str)和LENGTH(str)


1.<>的用法

    在MySQL中,尖括号(<>)通常表示不等于的关系。当在MySQL中使用这个符号时,它用来比较两个值,如果它们不相等,则条件为真。这是在SQL查询语言中的一种常见用法,用于筛选不等于特定值的数据行。

    例如,如果有一个表格存储了用户的信息,想要检索出所有年龄不等于25岁的用户,可以使用如下的SQL查询:

SELECT * FROM users WHERE age <> 25;

2.空值的判断
(1)IS NULL 和IS NOT NULL

     MySQL 使用三值逻辑 —— TRUE, FALSE 和 UNKNOWN。任何与 NULL 值进行的比较都会与第三种值 UNKNOWN 做比较。这个“任何值”包括 NULL 本身!这就是为什么 MySQL 提供 IS NULL 和 IS NOT NULL 两种操作来对 NULL 特殊判断。

(2)<=>

    在MYSQL中,<=>用于比较两个表达式是否相等,包括null值。它是NULL 安全的等于运算符。

具体来说,<=>的作用就是比较两个表达式是否相等,如果两个值相等,则返回1;如果其中一个为NULL,一个不为NULL,则返回0;如果两个值都是NULL,返回1。

    传统的等于运算符 = 不能正确地处理 NULL 值的比较。

3.OR和UNION

UNION用于合并多个查询的关键字,并且返回所有不重复的行。
 

#两个表
SELECT coclumn1,coclumn2,... FROM table1

UNION

SELECT coclumn1,coclumn2,... FROM table2
#三个表及以上在下面继续添加
UNION

SELECT coclumn1,coclumn2,... FROM table3

#选择的列名和数据类型必须匹配

OR和UNION都可用于行过滤。

select name,population,area
from world
where population >= 25000000 or area >= 3000000
#UNION
select name, population, area from world where population >= 25000000
union
select name, population, area from world where area >= 3000000;

但是or涉及到多个列的时候,每次select只能选取一个index,如果选择了area这列索引,population就需要进行table-scan,即全部扫描一遍(or当条件涉及的列没有适当的索引时,可能需要进行全表扫描),但是使用union就可以解决这个问题,分别使用area和population上面的index进行查询。 但是这里还会有一个问题就是,UNION会对结果进行排序去重,可能会降低一些performance(这有可能是方法一比方法二快的原因),所以最佳的选择应该是两种方法都进行尝试比较。

4.DISTINCT

DISTINCT 关键字用于返回唯一不同的值。它通常与 SELECT 语句一起使用,以获取一列中不重复的值。以达到去重的效果。

SELECT DISTINCT column_name
FROM table_name;

举例:假设有一个表格 employees 包含 department 列,表格可能有重复行,想获取不同的部门名称,可以这样写:

SELECT DISTINCT department
FROM employees;
5.ORDER BY

order by用于对查询结果排序,asc升序排序,desc降序。

例如,如果有一个表格 employees 包含 namesalary 列,按部门升序排列,然后在每个部门内按工资降序排列:

SELECT name, department, salary
FROM employees
ORDER BY department ASC, salary DESC;
6.CHAR_LENGTH(str)和LENGTH(str)

在计算机科学和编程中,字节(Byte)和字符串长度有一些区别。

1.字节(Byte):字节是计算机存储信息的基本单位,通常由8个比特(bits)组成。一个字节可以表示256(2^8)个不同的值,范围从0到255。字节用于存储和表示数据,例如文件、图像、音频等。

2.字符串长度:字符串长度是指字符串中包含的字符的数量。字符串可以包含字母、数字、符号等多种字符。我们通常关心的是字符串长度而不是字节大小,因为字符串的长度更直接地反映了其中包含的字符数。然而,需要注意的是,字符串的长度可能与字节大小之间存在一些差异,特别是在使用多字节字符集(例如UTF-8)的情况下。举例说明,对于大部分常用的汉字,UTF-8 使用3个字节表示。大部分字母(包括英文字母)在UTF-8中使用1个字节表示。而一个汉字和一个字母的字符串长度都是1。

对于SQL表,用于计算字符串中字符数的最佳函数是 CHAR_LENGTH(str),它返回字符串 str 的长度。另一个常用的函数 LENGTH(str) 函数返回字符串 str 的字节数。

  • 46
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值