本帖最后由 镖师 于 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;
算术运算符
注意: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;
取模结果的符号,由分子(被取模数)决定;
比较运算符
注意,= 不是赋值操作,而是比较两边是否相等操作;
如果比较的两边一边是字符串、一边是数字,那么字符串会尝试转换成数字,如果无法转换,按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 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。
逻辑运算符
非
当给定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 |