美文网首页
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