学习与:https://www.bilibili.com/video/BV12b411K7Zu?p=39&spm_id_from=pageDriver
表格中字段
)]
基础查询
# 基础查询
/*
语法:
select 查询列表(字段名)
form 表名;
-------------------------------------
特点:
1. 查询表中的字段,常量值,表达式,函数
2. 查询的结果是虚拟表格
*/
# 1.查询表中的单个字段
SELECT last_name FROM employees;
# 2.查询表中的多个字段
SELECT last_name, salary, email FROM employees
# 3.查询表中所有字段
SELECT * FROM employees
# 4.查询常量值
SELECT 100
SELECT 'john'
# 5.查询表达式
SELECT 100*98 (+-*/%)
# 6.查询函数
SELECT VERSION()
# 7.为字段起别名
/*
特点:
1. 便于理解
2. 如果要查询的字段有重名的情况,使用别名可以区分
*/
# 方式一
* SELECT 100*98 AS 结果
* SELECT last_name AS 名字, salary AS 月薪 FROM employees
# 方式二 (省略as)
* SELECT 100*98 结果
* SELECT last_name 名字, salary 月薪 FROM employees
# 方式三
SELECT 100*98 "out put"
# 8.去重 ( DISTINCT 关键字 )
#案例: 查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees
# 9. + 号的作用 和 链接字段 ( concat() 方法 )
/*
特点:
1. 仅仅只有一个作用: 运算符
SELECT 100 + 90; 两个都为数值型则运行加法运算;
SELECT "100" * 90; 如果不同则把不是数值型的转化为数值型再进行运算
如果转换失败则把非数值型转化为0惊醒运算
其中一方为null 则运算结果一定是null
*/
#案例: 查询员工的姓和名并连接成一个字段,字段名为(姓名)
SELECT
CONCAT(last_name, first_name) as 姓名
FROM
employees
条件查询
# 条件查询
/*
语法:
SELECT 查询列表
FROM 表名
where 筛选条件
分类:
一. 按条件表达式筛选
条件运算符: < > = !+ >= <=
二. 按照逻辑表达式筛选
逻辑运算符: && || ! 相对如(and, or, not)
三. 模糊查询
like
between and
in
is null
*/
# 1.按条件表达式筛选
# 案例一: 查询工资>12000的员工信息
SELECT
*
FROM
employees
WHERE
salary>1200
# 案例二: 查询部门标号不等于90号的员工名和部门编号
SELECT
last_name,department_id
FROM
employees
WHERE
department_id!=90
# 2. 按逻辑表达式筛选
# 案例一: 工资在10000在20000之间的员工名,工资和奖金
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary>=10000
AND
salary<=20000
# 案例二: 查询部门编号不是在90到100之间,或者工资高于15000的员工信息
# 解一:
SELECT
*
FROM
employees
WHERE
department_id<90 OR department_id>110
OR
salary>15000
# 解二:
SELECT
*
FROM
employees
WHERE
NOT(department_id>=90 AND department_id<=110)
OR
salary>15000
# 3.模糊查询
/*
like
between and
in
is null
*/
# (1) like 关键字
/*
特点:
1. 一般和通配符搭配使用
通配符:
%:任意多的字符,包含0个字符
_:任意单个字符
*/
# 案例一:查询员工名字中包含a的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%'
# 案例二:查询员工名字第三个字符为n,第五个字符为l的员工名和工资
SELECT
last_name,
salary
FROM
employees
WHERE
last_name LIKE '__n_l%'
# 案例三:查询员工名中第二个字符为_(下划线)的员工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_\_%'
# \:转义字符
#自定义转义字符:last_name LIKE '_$_%' ESCAPE '$'
# (2) between and 关键字
# 案例一:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120 # 包含100和120
# (3) in 关键字
/*
含义:
1. 判断某字段的值是否属于in列表中的某一项
特点:
1. 使用in做筛选比使用or提高了简洁度
2. in括号内的值类型必须保持一致
3. 不支持下划线和百分号通配符
*/
# 案例一:查询员工的工种编号是IT_PROG、AD_VP,AD_RPES的员工名和工种编号
SELECT
last_name,
job_id
FROM
employees
WHERE
# job_id = 'IT_PROT' OR job_id = 'AD_VP' OR job_id = 'AD_PRES'
# 等价于↓
job_id in('IT_PROT', 'AD_VP', 'AD_PRES')
# (4)is mull 关键字
/*
特点:
1. = > < != 不能判断null值,只能用is null 或者 安全等与( <=> )
*/
# 案例一: 查询没有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct is null
# 案例一: 查询有!!奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct is not null