【MySQL】第三部分 基本的SELECT语句

【MySQL】第三部分 基本的SELECT语句



3. 基本的SELECT语句

3.1 SELECT … FROM

# 选择所有的列
SELECT * FROM employees;

# 选择指定的列
SELECT first_name,salary,job_id FROM employees;

3.2 设置列的别名

# 列的别名
/*
	第一种 AS
	第二种 用空格隔开
	第三种 使用""括起来,切记不要使用'',单引号用在字符串中
*/

SELECT employee_id 员工ID,salary AS 工资,job_id "职位"
FROM employees;

3.3 去除重复行

# 去除重复行
# 例如:要求输出公司有哪些工种
SELECT DISTINCT job_id "工种"
FROM employees;

3.4 空值运算

# 空值是不能做运算,所以解决办法: IFNULL(expr1,expr2)
# 如果expr1为null,则用expr2的值进行替换,反之使用expr1
SELECT employee_id, salary "月收入", (1+IFNULL(commission_pct,0))*salary*12 "年收入"
FROM employees; 

3.5 着重号

# 着重号 -->  ``
# 如果字段和保留字,数据库系统常用方法冲突,在sql语句中使用着重号将其括起来
SELECT * from `order`;

3.6 显示表的结构

# 显示表的结构
DESCRIBE employees;

3.7 WHERE 过滤数据

# 筛选出 department_id 等于50 并且 工资大于6000
SELECT * 
FROM employees
WHERE department_id = 50 AND salary > 6000;
SELECT * 
FROM departments
WHERE department_name = 'IT';  # 注意:在这需要用单引号

3.8 算术运算符

加(+)、减(-)、乘(*)、除(/)和取模(%)运算

在这里插入图片描述

大家可以使用 FROM DUAL 虚拟表( 自行测试运算符 )

需要注意的是:一个数除以0为NULL

例如:

SELECT 100+0,100-0,100*0,100/0,50%3
FROM DUAL;

3.9 比较运算符

在这里插入图片描述

等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。

SELECT 1=1,1='1','abc'=0,'abc'=1,(5+3)=(2+6),''=NULL,NUll=NULL,0=Null
FROM DUAL;

在这里插入图片描述

根据上述sql语句测试出来的结果,很多和我们想的答案是不一样的

1.如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较,如果遇到不能够转换的,例如上述的abc,那么就会统一转为0,所以这就是为什么等于1的原因。

2.如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。


安全等于运算符(<=>),它和等于运算符的主要区别是在于:安全等于运算符可以用来对NUll进行判断,在两个操作数均为NULL时,其返回值为1,而不为NULL。当一个操作数为NULL时,其返回值为0,而不为NULL。

SELECT NULL<=>NULL,NULL<=>'',NULL<=>0
FROM DUAL;

在这里插入图片描述


3.10 非符号类运算符

在这里插入图片描述


空运算符

ISNULL、IS NULL、IS NOT NULL

SELECT employee_id, commission_pct 
FROM employees
WHERE commission_pct IS NULL; 


SELECT employee_id,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;


# ISNULL() 他其实是一个函数
SELECT employee_id,commission_pct
FROM employees
WHERE ISNULL(commission_pct);

最小运算符和最大运算符

GREATEST(值1,值2,...,值n)

LEAST(值1,值2,...,值n)

需要注意的点:

  1. 当比较值列表中有NULL时,不能判断大小,返回值为NULL
  2. 当参数为字符串时,返回字母表中顺序最靠前/后的字符
  3. 当参数是整数或者浮点数时,将返回其中最小/最大的值
SELECT GREATEST(1,2.5) 
FROM DUAL;

SELECT GREATEST('asd','fdg') 
FROM DUAL;

SELECT GREATEST(3,2.5,NULL) 
FROM DUAL;

SELECT GREATEST(LENGTH('shdihassdasdadud'),LENGTH('sadasddfas'))
FROM DUAL;

BETWEEN AND运算符

判断一个值是否在两个值区间内,闭区间包含端点

SELECT employee_id,salary
FROM employees
WHERE salary BETWEEN 7000 AND 10000;

不在该区间内

SELECT employee_id,salary
FROM employees
WHERE salary NOT BETWEEN 7000 AND 10000;
等价于
WHERE salary < 7000 OR salary > 10000

IN运算符

IN 用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。

NOT IN 用于判断给定的值不在IN列表中的一个值

SELECT manager_id
FROM employees
WHERE manager_id IN (100,101);

SELECT manager_id
FROM employees
WHERE manager_id NOT IN (100,101);

LIKE运算符

LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。

%”: 匹配0个或多个字符。
“_”: 只能匹配一个字符。
“\”: 转义
SELECT first_name
FROM employees
WHERE first_name LIKE "%s%"  # 条件是只要包含s字符即可


SELECT first_name
FROM employees
WHERE first_name LIKE "s%"  # 条件是开头是s字符


SELECT first_name
FROM employees
WHERE first_name LIKE "%s"  # 条件是结尾是s字符


SELECT first_name
FROM employees
WHERE first_name LIKE "_s%"  # 条件是第二个字符是s


SELECT job_id
FROM employees
WHERE job_id LIKE "%\_%"  # 条件是包含下划线

REGEXP运算符(正则表达式)

如果expr满足匹配条件,返回1;如果不满足,则返回0。若匹配内容或匹配条件任意一个为NULL,则结果为NULL。

在这里插入图片描述

SELECT job_id
FROM employees
WHERE job_id REGEXP "^A"  # 以A开头


SELECT job_id
FROM employees
WHERE job_id REGEXP "^A.*P$"  # 以A开头,P结尾

逻辑运算符

逻辑运算符主要用来判断表达式的真假逻辑运算符的返回结果为1、0或者NULL。

在这里插入图片描述


逻辑与

注意:非0即真,但是需要注意如果0和NULL与则为0其余和NULL为NULL

SELECT 1 && -1,0 && NULL, NULL && 1, 1 && NULL
FROM DUAL;

SELECT employee_id,salary FROM employees 
WHERE NOT (salary >= 9000 && salary <= 12000);

在这里插入图片描述


逻辑或

注意:只要有任意一个非0的值即真 ,当两个值都为NULL时,返回NULL,如果0和NULL或则为NULL

SELECT 1 || NULL, NULL || 1, 0 || NULL,NULL || NULL, -52 || 12
FROM DUAL;

SELECT employee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000 || job_id LIKE '%A%';

在这里插入图片描述

注意:

OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。


逻辑异或

注意: 简单来说就是条件满足一真一假我就要,当给定的值中任意一个值为NULL时,则返回NULL

SELECT 1 XOR -1,1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1, 0 XOR 0 XOR 0
FROM DUAL;

在这里插入图片描述


位运算符

在这里插入图片描述

位运算符是在二进制数上进行计算的运算符位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。

在一定范围内容,左移一位值扩大两倍,右移一位值缩小两倍.


总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值