目录
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
包含 name
和 salary
列,按部门升序排列,然后在每个部门内按工资降序排列:
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 的字节数。