zoukankan      html  css  js  c++  java
  • SQL学习笔记系列(二) DQL语言的学习

    DQL语言的学习


    打开脚本

    -root@localhost-右键-执行SQL脚本-执行-完成-手动刷新

    进阶1:基础查询

    语法:

    SELECT 要查询的东西
    【FROM 表名】;
    
    类似于Java中 :System.out.println(要打印的东西);
    

    特点:

    ①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
    ②要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数
    

    查询单个字段

    如:SELECT last_name FROM employees;
    

    查询表中的多个字段

    如SELECT last_name FROM employees,email FROM employees;#逗号隔开,可以不考虑顺序
    

    查询表中所有字段

    1. 可在左边的菜单上双击选择后再用逗号隔开
    2. F12可格式化
    3. *代表所有字段(但顺序会与原表一致)

    查询时的细节

    1. 建议每次都先加 “USE 库名”;
    2. 用着重号·来区分关键字和字段
    3. 选中执行/F9

    查询常量值

    查询某个常量值时不需要来自(from)哪个表

    查询表达式

    表达式:如select 188*90;

    查询函数

    函数:如select VERSION();

    起别名

    1. 如SELECT 100%98 AS 结果;
    2. 或者 SELECT 100%98 (空格) 结果;

    去重

    加上 DISTINCT

    SEKECT DISTINCT department_id FROM employees;
    

    +号的作用

    mysql中的+号仅仅只有一个功能:运算符。

    1. 如select 100+90;
    2. 如select “123”+90 #其中一方为字符型,试图将字符型转换成数值型,如果转换成功,则继续做加法运算,如果转换失败,则将字符型数值转换成0。
    3. 如select null+0;只要其中一方为null,则结果肯定为null.

    利用contact函数实现拼接

    如:查询员工名和姓连接成一个字段,并显示 姓名

     SELECT CONCAT('a','b','c') AS 姓名
    

    IFNULL()

    IFNULL(commission_pact,0)AS 奖金率
    

    进阶2:条件查询

    条件查询:根据条件过滤原始表的数据,查询到想要的数据

    语法

    select 
    	要查询的字段|表达式|常量值|函数
    from 
    	表
    where 
    	筛选条件 ;
    

    1.条件表达式

    	示例:salary>10000
    	条件运算符:
    	> < >= <= = != <>
    	#'<>'是不等于的意思
    
    #案例1:查询工资>12000的员工信息
    SELECT * 
    FROM employees
    WHERE salary>12000;
    
    #案例2:查询部门编号不等于90号的员工名和部门编号
    SELECT last_name,department_id
    FROM employees
    WHERE department_id!=90;
    
    #----------------------------------------------
    

    2.逻辑表达式

    示例:salary>10000 && salary<20000
    
    逻辑运算符:
    
    	and(&&):两个条件如果同时成立,结果为true,否则为false
    	or(||):两个条件只要有一个成立,结果为true,否则为false
    	not(!):如果条件成立,则not后为false,否则为true
    
    #案例1:查询工资z在10000到20000之间的员工名、工资以及奖金
    SELECT
    last_name,
    salary,
    commission_pct
    FROM
    employees
    WHERE salary>=10000
    AND salary<=20000;
    
    #案例2:查询部门变号不是在90到110之间,或者工资高于15000的员工信息
    SLECT *
    FROM employees
    WHERE department_id<90 or department_id >110 or salary>15000;
    
    或者:
    SLECT *
    FROM employees
    WHERE NOT(department_id>=90 AND department_id <=110) OR salary>15000;
    

    3.模糊查询

    like 
    between and 
    in 
    is null/is not null
    

    (1)like

    特点

    (1)一般和通配符搭配
    通配符:
    % 任意多个字符(包含0个字符)
    _任意单个字符

    #案例1:查询员工名中包括字符a的员工信息
    SELECT *
    FROM employees
    WHERE last_name LIKE '%a%';
    
    #-------------------------------------------------------
    
    #案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
    SELECT
        last_name,
        salary
    FROM
        employees
    WHERE
        last_name,LIKE'__e_a%';
        
    #-------------------------------------------------------
    
    #案例3 查询员工名中第二个字符为_员工名
    SELECT
        last_name
    FROM
        employees
    WHERE
        last_name LIKE '_\_%';#或者last_name LIKE '_$_%'ESCAPE '$';
    

    (2)between and

    特点

    i. 提高语句简洁度
    ii. 包含临界值
    iii. 两个临界值不能调换顺序

    #案例1:查询员工编号在100到120之间的员工信息
    SELECT
        *
    FROM
        employees
    WHERE
        employee_id BETWEEN 100 AND 120;
    

    (3)in

    含义

    判断某字段的值是否属于in列表中的某项目

    特点

    i. 使用in提高语句简洁度
    ii. in列表的值类型必须一致或兼容
    iii. 不支持通配符

    #案例:查询员工的工种的编号是 IT_PROT、AD_VP、AD_PRES中的一个员工名和工种编号
    SELECT 
        last_name,
        job_id
    FROM
        employees
    WHERE
        job_id IN ('IT_PROT','AD_VP','AD_PRES');
    

    (4)is null

    特点

    i. =或<>不能用于判断null值
    ii. is null或is not null 可以判断null值

    #案例1:查询没有奖金的员工名和奖金率
    SELECT
        last_name,
        commision_pct
    FROM
        employees
    WHERE
        commision_pct IS NULL;
    
    #案例2:查询有奖金的员工名和奖金率
    SELECT
        last_name,
        commision_pct
    FROM
        employees
    WHERE
        commision_pct IS NOT NULL;
    

    (5)安全等于 <=>

     #案例1:查询没有奖金的员工名和奖金率
    SELECT
       last_name,
        commision_pct
    FROM
        employees
    WHERE
        commision_pct <=> NULL;
     
     #案例2:查询工资为12000的员工信息
     SELECT
        last_name
        salary
    FROM
        employees
    WHERE
        salary <=> 12000;
    

    进阶3:排序查询

    语法

    select
    	要查询的东西
    from
    	表
    where 
    	筛选条件
    
    order by 排序的字段|表达式|函数|别名 【asc|desc】#升序或降序
    
    
    #案例1:查询员工信息,要求工资从高到低排序
    SELECT *
    FROM employees
    ORDER BY salary DESC;
    #ORDER BY salary ASC;为从低到高
    
    #案例2:查询部门编号>=90的员工信息,按入职时间的先后进行排序(添加筛选条件)
    SELECT *
    FROM employees
    WHERE department_id >=90
    ORDER BY hiredate ASC;
    
    #案例3:按年薪的高低显示员工的信息和年薪(按表达式排序)
    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
    FROM employees
    ORDER BY salarysalary*12*(1+IFNULL(commission_pct,0)) DESC;
    
    #案例4:按年薪的高低显示员工的信息和年薪(按别名排序)
    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
    FROM employees
    ORDER BY 年薪 DESC;
    
    #案例5:按姓名的长度显示员工的姓名和工资(按函数排序)
    SELECT LENGTH(last_name) 字节长度,last_name,salary
    FROM employees
    ORDER BY LENGTH(last_name) DESC;
    #这里换成字节长度也是可以的,如
    ORDER BY 字节长度 DESC;
    
    #案例6:查询员工信息,要求先按工资排序,再按员工编号排序
    SELECT *
    FROM employees
    ORDER BY salary ASC,employee_id DESC #不可以ORDER BY两次
    

    特点

    1. asc代表升序,desc代表减序,如果不写,默认升序
    2. order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
    3. order by 子句一般是放在查询语句的最后面,但limit子句除外。
  • 相关阅读:
    js常用方法收集
    Jquery的常用使用方法
    jQuery css()选择器使用说明
    解决IE6,边框问题
    HTML问题集锦及笔记
    我的第一个chrome扩展(3)——继续读样例
    我的第一个chrome扩展(0)——目标
    我的第一个chrome扩展(2)——基本知识
    我的第一个chrome扩展(1)——读样例,实现时钟
    2の奇妙用法
  • 原文地址:https://www.cnblogs.com/HLBBLOG/p/14210343.html
Copyright © 2011-2022 走看看