【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'

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

原文地址:https://www.cnblogs.com/mindzone/p/12781348.html