zoukankan      html  css  js  c++  java
  • 【mysql 基本语句 02】

    前提:表信息

     一、DQL语言

    1、基础查询

     进阶1、基础查询
    /*
    语法:
    select  查询列表 from 表名;

    类似于;sysyem.out.println(xxx);

    特点:
    1、查询列表可以是:表中的字段、常量值、表达式、函数
    2、查询的结果是一个虚拟的表格
    */
     #!  细节注意
    USE myemployees;


    #1、查询表中单个字段

    SELECT last_name FROM employees;

    #2、查询表中多个字段

    SELECT last_name,salary,email FROM employees;

    #3、查询表中所有字段
      -- 方式一

    SELECT
      `employee_id`,
      `first_name`,
      `last_name`,
      `email`,
      `phone_number`,
      `job_id`,
      `salary`,
      `commission_pct`,
      `manager_id`,
      `department_id`,
      `hiredate`
    FROM
      `employees`;

    -- 方式二

    SELECT * FROM employees;

    #4、查询常量值

    SELECT 100;
    SELECT 'join';

    #5、查询表达式

    SELECT 100*99;

    #6、查询函数

    SELECT VERSION();

    # 7、起别名
    /*
    两种方式:
    1、使用AS
    2、使用空格
    */
    #方式一:

    SELECT last_name AS 姓,first_name ASFROM employees;

    #方式二:

    SELECT last_name 姓,first_name 名 FROM employees;

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

    SELECT salary AS 'out put' FROM employees;

    #8、去重,关键字:distinct
    # 案例:查询员工表中涉及到的所有的部门编号

    SELECT DISTINCT  department_id FROM employees;

    #9、加号的作用

    java中加号的作用:1、运算符  2、连接符
    mysql中的作用只有一个:运算符
    
    SELECT 90+110; -->两个操作数都为数值型,则做加法运算操作
    SELECT '90'+110;  -->其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功
    SELECT 'join'+110; --> 则继续做运算,如果转换不成功,则将字符型数值转变成0
    
    SELECT NULL+110; --> 只要其中一方为null,则结果肯定为null

    #10、拼接,关键字 concat

    SELECT CONCAT(last_name,first_name) FROM employees;

    #11、如果有一列字段为空,可以把为null的字段设定为0,关键字:ifnull

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

    这条语句的意思是:commission_pct为空时显示为0,不为空时显示本身数值

    进阶2、条件查询
    语法:select
        查询列表
          from
        表名
          where
        筛选条件;
        
    筛选条件分类:
        一、按条件表达式筛选
        条件运算符:> < = <> >= <=
        二、按逻辑表达式筛选
        逻辑运算符:
            &&  ||  !
            and or  not

        &&和and:两个条件都为true,结果为true,反之为false
            ||或or:只要有一个条件为true,结果为true,反之为false
            !或not:如果连接的条件本身为false,结果为true,反之为false
     三、模糊查询
            like 特点:1)一般和通配符搭配使用。"%"任意多个字符,包含0个字符;“_”任意单个字符
            between and
            in
            is null
    #1、按条件表达式筛选
    #案例1、查询工资>12000的员工信息

    SELECT * FROM employees WHERE    salary>12000;

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

    SELECT CONCAT(last_name,first_name) AS 姓名,department_id FROM employees WHERE department_id<>90;

    #按逻辑表达式运算
    #案例1:查询工资在10000到20000之间的员工名、工资以及奖金。

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

    #案例2:查询部门编号不是在90到110之间,或者工资高于150000的员工信息

    SELECT * FROM employees WHERE  NOT(department_id>=90 AND department_id<=110) OR salary >15000;

    #模糊查询
    #LIKE
    #案例1、查询员工名中包含字符a的员工信息  --》这里的%代表的是通配符的意思

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

    #案例2、查询员工名中第三个字符为n,第5个字符为l的员工名和工资

    SELECT last_name,salary FROM employees WHERE last_name LIKE'__n_l%';

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

    SELECT last_name,salary FROM employees WHERE last_name LIKE'_\_%';  #  '_\_%'中是转义的意思
    SELECT last_name,salary FROM employees WHERE last_name LIKE'_$_%' ESCAPE '$';  #'_$_%' ESCAPE '$' 中$是指定的转义的字符,后面ESCAPE '$'指明$是转义的字符
    

    #between and
    /*
    1) 包含临界值
    2)两个临界值不能调换顺序
    */
    #案例1、查询员工编号在100到120之间的员工信息

    SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;

    #in :用于去判断某字段的值是否属于in列表中的某一项。in列表中字段不支持通配符
    #案例1、查询员工的工种编号是IT_prog、AD_VP、AD_PRES中 的一个员工名和工种编号

    SELECT last_name,job_id FROM employees WHERE job_id IN('IT_PROD','AD_VP','AD_PRES');

    #is null:  is null 或is not null 可以判断null;=或<>不能判断null值
    #案例1:查询没有奖金的员工名和奖金率

    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;

    #安全等于 <=>
    #案例1:查询没有奖金的员工名和奖金率

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

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

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

     #案例:查询员工号为176的员工姓名和部门号和年薪

    SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees;
    last_name department_id 年薪
    K_ing 90 288000.00
    Kochhar 90 204000.00

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

    SELECT salary,last_name,`commission_pct` FROM employees WHERE commission_pct IS NULL OR commission_pct = 0 AND salary<180000;

    #进阶3:排序查询
    /*
    语法:
    select 查询列表
    from 表
    [where筛选条件]
    order by 排序列表 [asc|desc]

    特点:
    1、asc代表升序,desc代表降序,如果不写默认代表升序
    2、order by 子句中可以支持单个字段,多个字段,表达式,函数,别名
    3、order by 子句一般是放在查询语句的最后面,limit字句除外
    */

    #案例:查询员工信息,要求工资从高到底

    SELECT * FROM employees ORDER BY salary DESC;

    #案例2、查询部门编号>=90的员工信息,按入职时间的先后进行排序

    SELECT * FROM employees WHERE department_id>=90 ORDER BY hiredate;

    #案例3、按年薪的高低显示员工的信息和年薪【按表达式排序】

    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY 年薪 DESC;

    #案例4、按姓名的长度显示员工的姓名和工资【按函数排序】

    SELECT LENGTH(last_name) 字节长度,salary FROM employees ORDER BY LENGTH(last_name);

    #案例5:查询员工信息,要求先按工资升序排序,在按员工编号降序排序【按多个字段排序】

    SELECT * FROM employees ORDER BY salary ,department_id DESC; #表示先按salary升序排序,然后遇到salary有重复的在可以按照department_id降序排序

    #案例6、选择工资不在8000到17000的员工姓名和工资,按工资降序

    SELECT last_name,salary FROM employees WHERE NOT(salary BETWEEN 8000 AND 17000) ORDER BY salary DESC;

    #案例7、查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,在按部门号升序

    SELECT email,LENGTH(email)AS 邮箱长度,department_id FROM employees WHERE email LIKE '%e%' ORDER BY LENGTH(email) DESC,department_id;
  • 相关阅读:
    Windows Server 无法启用 .Net Framework3.5的问题
    DocumentSet 操作代码(二)
    自定义SharePoint2010文档库的上传页面
    SharePoint2010 文档集操作创建
    JQuery 删除SharePoint菜单
    three.js项目引入vue,因代码编写不当导致的严重影响性能的问题,卡顿掉帧严重
    WPF 实现窗体鼠标事件穿透
    如何在传统前端项目中进行javascript模块化编程,并引入使用vue.js、elementui,并且不依赖nodejs和webpack?
    用 three.js 绘制三维带箭头线 (线内箭头)
    Vista中给IIS7添加PHP支持终于算是做成了
  • 原文地址:https://www.cnblogs.com/frankruby/p/14524177.html
Copyright © 2011-2022 走看看