美文网首页
sql P1-P38

sql P1-P38

作者: kevinXiao | 来源:发表于2021-06-26 14:25 被阅读0次

#进阶1:基础查询

/*

语法:

select 查询列表 from 表名;

类似于: System.out.prinln(打印东西)

特点:

1、查询列表可以是:表中的字段、常量值、表达式、函数

2、查询的结果是一个虚拟的表格

*/

#1.查询表中的单个字段

SELECT last_name FROM employees;

#2.查询表中的多个字段

SELECT last_name, salary, salary, email FROM employees;

#3.查询所有字段

SELECT * FROM employees;

#4.查询常量值

SELECT 'john'

#5.查询表达式

SELECT 100 * 20

#6.查询函数

SELECT VERSION();

#7.起别名

/*

1、便于理解

2、如果要查询的字段有重名的情况,使用别名可以区分开来

*/

SELECT 100 * 10 AS 结果;

SELECT last_name AS 姓, first_name AS 名 FROM employees;

#方式二:使用空格

SELECT last_name 姓, first_name 名 FROM employees

#案例:查询salary,显示结果为out put

SELECT salary AS 'out put' FROM employees

#8.去重

#案例:去重查询员工表中的部门编号

SELECT DISTINCT department_id FROM employees;

#9.+号的作用

/*

java中的+号

1、运算符:两个操作数都为数值型

2、连接符“只要有一个操作数为字符串

select 100+90 两个操作数都为数值型,则作加法运算

select 100+'123' 只要其中一方为字符型,试图将字符型数值转换成数值型

如果转换成功,则继续做加法运算

如果转换失败,则将字符型数值转换成0

select null +10 只要其中一方为null,则结果肯定为null

*/

#案例:查询员工名和姓连接成一个字段,并显示为姓名

SELECT last_name + first_name FROM employees

SELECT CONCAT(last_name, first_name) AS 姓名 FROM employees

#显示表结构

DESC departments;

SELECT IFNULL(commission_pct,0) AS 奖金率, commission_pct FROM employees

SELECT CONCAT(`first_name`, ',' ,`last_name`, ',' ,`job_id`, ',', IFNULL(commission_pct,0) ) AS emp FROM employees

#进阶2:条件查询

/*

写在where后面 对行进行筛选,返回bool类型的值,如果某行中的列数据满足条件,则加入结果集,否则不出现在结果集中

比较运算符:=,>,>=,<,<=,!=或<>

between ... and ...表示在一个连续的范围内

in表示在一个非连续的范围内

逻辑运算符:and,or,not

模糊查询:用于处理字符串类型的值,运算符包括:like % _ [] ^

%与_写在[]中表示本身的含义

在[]表示一个连续的范围可以使用-

^写在[]内部的开头,表示不使用内部的任何字符

null的判断:使用is null或is not null,与其它值计算时返回null,排序时null被认为是最小

优先级:小括号,not,比较运算符,逻辑运算符

*/

/*

语法:

select

查询列表 3

from

表名 1

where

筛选条件; 2

分类:

1、按条件表达式筛选

条件运算符:> < = != <> >= <=

2、按逻辑表达式筛选

作用:用于连接条件表达式

逻辑运算符:&&  || !

    and or not

3、模糊查询

like:一般搭配通配符使用,可以判断字符型或数值型

通配符:%任意多个字符,_任意单个字符

between and

in

is null  判断某字段或表达式是否为null,如果是,则返回1,否则返回0

is not null 

*/

if null 函数:判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值select if null(commission_pct,0) from employees

#1.按条件表达式查询

#案例1:查询工资>12000的员工信息

SELECT * FROM employees WHERE salary > 12000;

#案例2:查询部门编号不等于90号的员工们和部门编号

SELECT last_name, department_id FROM employees WHERE department_id <> 90

#2、按逻辑表达式筛选

#案例1,查询工资在1000到2000

SELECT last_name, salary, commission_pct FROM employees WHERE salary>=10000 AND salary<=20000;

#模糊查询

/**

like

特点:

1、一般和通配符搭配使用

%任意多个字符,包含0个字符

_任意单个字符

between and

in

is null

/

*/

#案例;查询 like ,查询员工名中包含字符a的员工信息

SELECT * FROM employees WHERE last_name LIKE '%a%';

#案例2:查询员工名中第三个字符为e, 第五个字符为a的员工名字

SELECT *FROM employees WHERE last_name LIKE '__n_l%';

#案例3:查询员工名第二个字符为_的员工名

SELECT last_name FROM employees WHERE last_name LIKE '_\_%'

SELECT last_name FROM employees WHERE last_name LIKE '_S_%' ESCAPE 'S'

# 2. between and

/*

1、使用between and 可以提高语句的见解读

2、包含临界值

3、两个临界值不能调换顺序

*/

#案例1:查询员工编号在100到120之间的员工信息

SELECT * FROM employees WHERE employee_id >= 100 AND employee_id <=120;

SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120

#3.in

/*

含义:判断某字段的值是否属于in列表中的某一项

使用in提高语句见解读

in列表的值类型必须一致或兼容

*/

#案例:查询员工的工种编号是IT_PROG、AD_PRES、ad_VP中的一个员工名和工种编号

SELECT last_name, job_id FROM employees WHERE job_id = 'IT_PROG' OR job_id = 'AD_PRES' OR job_id = 'AD_VP';

#去重只能是一个字段

SELECT DISTINCT job_id FROM employees WHERE job_id IN ('IT_PROG', 'AD_PRES', 'AD_VP')

SELECT DISTINCT last_name, job_id FROM employees WHERE job_id IN ('IT_PROG', 'AD_PRES', 'AD_VP') 

#案例4 is null

/*

=或<>不能用于判断null值

*/

#案例1:查询没有奖金的员工名和奖金

SELECT last_name, commission_pct FROM employees WHERE commission_pct IS NULL;

#案例1:查询有奖金的员工名和奖金

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

#安全等于 <=>

SELECT last_name, commission_pct FROM employees WHERE commission_pct <=> NULL;

#案例2:查询工资为12000的员工信息

SELECT last_name, salary FROM employees WHERE salary <=> 12000;

#is null pk <=>

/*

is null :仅仅可以判断null值

<=> 既可以判断null值,又可以判断普通的数值,建议用上面的

*/

#题目

#1:查询没有奖金,且工资少于18000的salary,last_name

SELECT last_name, salary ,commission_pct FROM employees WHERE commission_pct IS NULL AND salary < 18000

#2:查询employees表中,job_id 不为‘IT’ 或者 工资为12000的员工信息

SELECT * FROM employees WHERE job_id <> 'IT' OR salary = 12000

相关文章

网友评论

      本文标题:sql P1-P38

      本文链接:https://www.haomeiwen.com/subject/dbqldltx.html