找回密码
 立即注册
快捷导航

[数据库] 简单的 select语句、空值NULL、运算符

[复制链接]
镖师 2023-7-10 00:43:38 | 显示全部楼层
本帖最后由 镖师 于 2023-7-11 17:52 编辑

select 1;

select 9/3, 4+4;
其实就是: select 1 from DUAL;    -- DUAL 伪表

select * from student;

别名
select empolyee emp_id from student;
或:select empolyee AS emp_id from student;
或:select empolyee 'emp_id' from student;           - 多用于别名有空格

去重(去除重复行)
SELECT DISTINCT department_id FROM employees
SELECT DISTINCT department_id, salary FROM employees  -- 对department_id 和 salary 去重,查出来没啥意义
错误:SELECT department_id,  DISTINCT salary FROM employees

空值null
所有运算符或列值遇到null值,运算的结果都为null
在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。
错误的写法:一条都查询不出来:select * from employees where commission_pct a== NULL;        //  应该用 <=> 安全等于,与=的区别是安全等于能用于比较NULL
select IFNULL(commission_pct, 0) from employees;      -- 如果commission_pct为null,则为0

着重号 ``
着重号多用于关键字;
select * from `order`;

显示表结构 describe
describe student;
等同于 desc student;

where
select  from studnet id = 4;

算术运算符
简单的 select语句、空值NULL、运算符2862 作者:镖师 帖子ID:460
注意:mysql中 + 只有算术、没有连接功能;(如果要拼接字符串,用 CONCAT() 函数)
select 100+ '1';       -- 101 会将字符串隐式转换为数字;
select 100 +'a';       -- 100
select 100 + NULL;  -- NULL

select 100/2;    -- 50.0000
select 100 DIV 0;    -- NULL

取模
select -12 % 5;   -- -2
select -12 % -5;    -- -2
select 12 % -5;    -- 2;
取模结果的符号,由分子(被取模数)决定;

比较运算符
简单的 select语句、空值NULL、运算符4220 作者:镖师 帖子ID:460
注意,= 不是赋值操作,而是比较两边是否相等操作;

如果比较的两边一边是字符串、一边是数字,那么字符串会尝试转换成数字,如果无法转换,按0运算:
select 100 = '100';    -- true
select 0 = 'abbb';     -- true
两边都是字符串,就按照对应的ascii码对比;
select 'a' = 'b';  --false

任何值 与 null 比较,都为null
select NULL = NULL;    -- NULL
select NULL != NULL;    -- NULL

安全等于 <=>
除了=的特性外,安全等于 还能判断NULL;
selct NULL <=> NULL;    -- 1

非符号类运算符

简单的 select语句、空值NULL、运算符411 作者:镖师 帖子ID:460

空运算符
写法一:SELECT NULL IS NULL;
写法二:SELECT ISNULL(NULL);
写法三:SELECT NULL <=> NULL;

SELECT NULL IS NOT NULL;

最小值LEAST 、最大值GREATEST
SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2);
0 a NULL
注意:当比较值列表中有NULL时,不能判断大小,返回值为NULL。

BETWEEN AND
查询工资在6000-8000的员工信息:
select employee_id, last_name, salary from employees where salary between 6000 and 8000;
当salary大于或等于6000,并且salary小于或等于8000时,结果为1,否则结果为0。

IN
判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。
如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。
SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'a' IN ('a', NULL);
1 0 NULL 1

NOT IN
-

LIKE
“%”:匹配0个或多个字符。
“_”:只能匹配一个字符。
如果给定的值或者匹配条件为NULL,则返回结果为NULL。

逻辑运算符

简单的 select语句、空值NULL、运算符7977 作者:镖师 帖子ID:460

当给定0则1,非0则0,NULL则返回NULL
select NOT 1, NOT 0, NOT NULL;
0 1 NULL


两边均为非0且不是NULL,则1,当一个或多个值为0则0;否则NULL;
select 1 AND -1, 0 AND 1, NULL AND 0,1 AND NULL;
1 0 0 NULL
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-11-23 00:34

Powered by Discuz! X3.5 and PHP8

快速回复 返回顶部 返回列表