zoukankan      html  css  js  c++  java
  • 【DataBase】MySQL 05 基础查询

    MySQL数据库 05 基础查询

    视频参考自:P18 - P27

    https://www.bilibili.com/video/BV1xW411u7ax

    配套的SQL脚本:https://shimo.im/docs/XxPk6wg8CqqrdhTv/read

    基础查询介绍:

    -- 基础查询
    /*
    语法:
    SELECT 查询列表 FROM 表名;
    
    查询列表可以是:表中的字段、常量值、表达式、函数。
    查询的结果是一个虚拟的表格
    */
    
    # 查询表的单个字段:员工表的姓名字段
    SELECT last_name FROM employees;
    
    # 查询表的多个字段:员工的全名和邮箱
    SELECT first_name,last_name,email FROM employees;
    # 可以随意编写查询的字段顺序
    SELECT first_name,email,last_name FROM employees;
    
    # 查询employees表的所有字段
    # 如果手残总是打错字,可以直接双击字段或者表、库,
    # SQLyog会直接在光标位置生成对应的字段名称
    SELECT `employee_id`,`first_name`,`last_name`,`email`,`phone_number`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`,`hiredate` FROM employees;
    
    # 太长了一行看不见,可以先用鼠标框选SQL语句,按【F12】调整格式
     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`;  
    
    -- 查询的注意事项:
    # SQLyog会自动切换库的位置
    # 所以在执行查询语句之前,最好先执行 USE 语句选定要查询的库【好习惯】
    
    # [`]不是单引号,是叫【着重号】,用于修饰字段名称,区分SQL的关键字,消除歧义
    
    # 不要写完直接点执行,框选确定的SQL语句点执行

    SELECT  与 常量、表达式、函数

    -- 常量值的查询
    
    # 数值型常量
    SELECT 100;
    # 字符型常量【MySQL 不区分字符和字符串】,要注意的是字符串或字符必须以''修饰
    SELECT '阿伟输了';
    
    -- 表达式的查询
    SELECT 150 * 23;
    SELECT 150 % 23;
    
    -- 函数的查询
    SELECT version(); # MySQL版本查询

    别名的用法 Alias

    -- 别名设置 Alias
    # 1、提高字段的可读性
    # 2、如果字段过长可以使用别名来进行缩写
    # 3、字段同名可采取别名来区分
    
    # 第一种别名方式 使用AS关键字
    SELECT VERSION() AS MySQL版本;
    
    SELECT `last_name` AS 姓,`first_name` ASFROM `employees`;
    
    # 第二种别名方式 AS关键字省略掉
    SELECT VERSION() MySQL版本;
    
    SELECT `last_name` 姓,`first_name` 名 FROM `employees`;
    
    # 特殊情况 out put 具有特殊含义 此SQL语句报错无法执行
    SELECT `salary` AS OUT put FROM `employees`;
    
    # 解决方式: 加上引号[单双皆可]修饰为一个字段,防止SQL歧义
    SELECT `salary` AS "out put" FROM `employees`;

    去重的简单使用

    -- 去除重复 DISTINCT
    # 案例:查询员工表的所有部门编号
    SELECT DISTINCT `department_id` FROM `employees`;
    
    # DISTINCT 关键字: 用来对查询的字段进行重复去除,放在字段的前面,类似形容词

    MySQL 加号的正确用法:

    -- +号的作用
    
    # 拼接员工的姓 和 员工的名 
    SELECT `last_name` + `first_name` AS '员工姓名' FROM `employees`; # 查询结果都是0...
    
    # MySQL的+ 功能:只做运算符,不能像Java一样去拼接字符串
    /*
    SELECT 100 + 90;     两个操作数,都是数值,做加法运算
    SELECT '123' + 90;     一个字符串,一个数值,MySQL会先把字符串转换数字,如果转换成功,继续加法运算
    SELECT 'john' + 90;     像这样的转换失败,字符型数值转换为0 继续做加法运算
    SELECT null + 10;     只要其中一个操作数为null,这个结果就是null
    */

    CONCAT函数 拼接字符串的简单使用

    -- 使用CONCAT();函数处理字符串拼接
    SELECT CONCAT("我","爱 学","Java");
    
    # 别名优化下字段
    SELECT CONCAT("我","爱 学","Java") AS title;
    
    # 解决上面的案例问题
    SELECT `last_name`,`first_name`,CONCAT(`last_name`,'.',`first_name`) AS '员工姓名' FROM `employees`;

    案例练习:

    # 下列语句是否执行成功? 可以√
    SELECT `last_name`,`job_id`,`salary` AS sal
    FROM `employees`;
    
    SELECT * FROM `employees`;
    
    # 找出SQL语句的错误 【引号修饰问题】
    SELECT `employee_id`,`last_name`,`salary` * 12 AS ”annual salary“
    FROM `employees`;
    
    # 显示表departments的结构,并查询所有数据
    DESC `departments`;
    SELECT * FROM `departments`;
    
    # 显示员工表的全部job_id 不可重复
    SELECT DISTINCT `job_id` FROM`employees`;
    
    # 显示员工表的全部列,各个列之间逗号分割,列头显示out_put
    SELECT CONCAT(
        `employee_id` ,
        ',    ',
        `first_name`,
        ',    ',
        `last_name`,
        ',    ',
        `email`,
        ',    ',
        `phone_number`,
        ',    ',
        `job_id`,
        ',    ',
        `salary`,
        ',    ',
        IFNULL(`commission_pct`,0), # 设置该字段如果是null值,使用0替换
        ',    ',
        `manager_id`,
        ',    ',
        `department_id`,
        ',    ',
        `hiredate`
    ) 
    AS 'out put' 
    FROM `employees`;

    快速检索的神SQL:

    select * from `information_schema`.`TABLES` where LOWER(TABLE_NAME) = 'tm_labour_set_part'

    用于查询某个表所在库的位置

  • 相关阅读:
    理财-4
    “大锅”遇险记
    今日份灵感开发
    持续集成简介
    redis clusert分布式集群
    redis 哨兵
    redis 主从复制
    Redis新特性ACL安全策略
    redis 快照持久化RDB和AOF
    redis 基础常用命令
  • 原文地址:https://www.cnblogs.com/mindzone/p/12781348.html
Copyright © 2011-2022 走看看