MySQL学习笔记(第二部分)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 自己学MySQL的时候第二部分的学习笔记(接上文)

2.7显示表结构

  • 话不多说上写法
DESCRIBE employees;   #其中employees是表名,其作用是显示了表中字段详细信息
DESC employees;    #两者效果一致

2.8、使用where语句去过滤数据

  • 比如现在有以下诉求:查询90号部门下的所有员工信息
  • 写法如下:
SELECT *
FROM employees   #语句执行到这块的时候就是查询了表中所有的相关字段
WHERE employee_id = 90;   #这块使用WHERE语句去过滤不需要查询的数据,就能得出我们需要查询的数据,这个条件可以由我们自己去设置
  • 现在我还有一个诉求就是想查询 last_name为'King'的员工信息
  • 写法如下:
SELECT * 
FROM employees # 语句执行,查询employees表中的字段
WHERE last_name = 'King'; # 此为诉求中指定的条件,由此可见也能指定表中的具体字段进行查询

2.9、基本SELECT语句的课后练习

#题目1:查询员工12个月工资的总和,并起别名为ANNUAL SALARY,写法如下:
SELECT employee_id ,last_name,
salary * 12 AS "ANNUAL SALARY"
FROM employees;

#题目2:查询employees表中去除重复的job_id以后的数据,写法如下:
SELECT DISTINCT job_id
FROM employees;

#题目三:查询工资大于12000的员工姓名和部门号,写法如下:
SELECT employee_id ,last_name
FROM employees
WHERE salary>12000;

#题目四:查询员工号为176的员工姓名和部门号
SELECT last_name,employee_id
FROM employees
WHERE employee_id = 176;

#第五题:显示表departments 的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM departments;

3、运算符

3.1、算数运算符

  • 就是简单的加减乘除,这块就不演示了

3.2、比较运算符

  • 比较运算符用来对表达式左边操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况返回NULL;比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录;
  • = <=> <> != < <= > >= ;分别是等于,安全等于,不等于,小于,小于等与,大于,大于等于,举例如下:
SELECT 1 = 2,1!=2,1='1',1='a',0='a'
FROM DUAL;   #字符串存在隐式转换,如果隐式转换不成功则看做是0

SELECT 'a' ='a','ab' ='ab','a' = 'b'
FROM DUAL;   #两边都是字符串的话,则按照ANST的比较规则来比较
  • <=> (意为安全等于,就是为NULL而生的)
    • 为什么这么说呢,因为其他的运算符只要有NULL参与进来结果都是为NULL
    • 但有了这个符号,我们就可以利用这个符号去判断有NULL的情况
  • 实际场景中表中肯定会有NULL的数据,我们也需要这个符号去查询有关于NULL的数据
  • 比如呢?比如我想查询表中commisssion_pct为NULL的数据,那么,写法如下:
SELECT *
FROM employees
WHERE commission_pct <=> null;  #加上此运算符就可以查出employees表中数据commission——pct字段为NULL的数据了
  • IS NULL \ IS NOT NULL \ ISNULL
  • 以上对三个关键字进行解读,IS NULL 就是查询为空的数据,作用与<=>作用一致
SELECT *
FROM employees
WHERE commission_pct IS NULL;  # 作用也是查询表的commission_pct字段中为NULL的数据
  • IS NOT NULL 则跟他相反,即查询不为空的数据;
SELECT * 
FROM employees
WHERE commission_pct IS NOT NULL; #作用就是查询employees表中数据commission_pct字段不为NULL的数据
  • ISNULL则与<=> 、 IS NULL的作用相同,都是表示为空的,但是与之不同的地方是,ISNULL更像是一个方法
SELECT * 
FROM employees
WHERE ISNULL(commission_pct);  #作用与IS NULL和<=>的作用一致,但ISNULL更像是一种函数(方法)
  • 防止绕晕!!!!!当需求是要求查询为空的时候,就使用IS NULL ,反之,需要查询不为空的时候,就使用IS NOT NULL;
  • LEAST() \ GREATEST 即最大和最小值,写法为:
  • GREATEST则和它相反
SELECT LEAST(first_name,last_name),LEAST(LENGTH(first_name),LENGTH(last_name))
FROM employees; #意为比较两边字符串哪边更短,后面函数的时候会具体讲到
  • BETWEEN (条件一) AND (条件二) (查询条件一和条件二范围内的数据,注意这块是包含边界的数据)
  • 实际应用场景:查询工资在6000到八千之间的员工信息;写法如下:
SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000;   #BETWEEN意为查询工资6000到八千的区间信息
  • 当然,使用逻辑运算符来表示也是可以的,逻辑运算符的写法如下:
SELECT empkoyee_id,last_name,salary
FROM employees
WHERE salary >=6000 && salary<=8000;   #这块的作用跟BETWEEN的作用是一样的
  • 但还有一种场景,就是当把6000和八千互换位置时,数据表是查不到任何数据的

image-20220912234557401

  • 所以由此得出结论,6000的位置是上界标,8000的位置是下界标,可以理解为上限或者下限,所以交换了他们的位置变查询不到

  • 还有一种实际场景:查询工资不在6000到8000的员工信息,写法如下:

SELECT last_name,employee_id,salary
FROM employees
WHERE salary NOT BETWEEN salary 8000;   #即在BETWEEN前加上关键字NOT就可以实现该需求

SELECT last_name,employee_id,salary
FROM employees
WHERE salary < 6000 OR salary > 8000;  #当然使用or关键字也能实现同样的效果
  • IN / NOT IN (与BETWEEN不同的是,BETWEEN表示的是一种范围,而IN和NOT IN 表示的是一种零散的数值
  • 实际场景:查询部门为10、20、30的员工信息,根据题目需求,得出这块要用到 IN ,写法如下:
SELECT department_id,last_name,salary
FROM employees
WHERE department_id IN (10,20,30) #其中需要查询的数据需放入括号中否则就会报错

SELECT last_name,salary,department_id
FROM employees
WHERE department_id = 10 OR department_id = 20 OR department_id =30;   #两种写法的作用一致,但不可直接用OR拼接
  • 实际场景:查询工资不是6000,7000,8000的员工信息,写法如下:
SELECT last_name,department_id,salary
FROM employees
WHERE salary NOT IN (6000,7000,8000);  #NOT IN 即不在,和IN的作用是相反的
  • LIKE ,模糊查询,当你只记得表中某一字段或者某一字母的时候,就可以使用模糊查询
  • 实际场景:查询last_name中包含'a'的员工信息;写法如下
SELECT last_name, salary,department_id
FROM employees
WHERE last_name LIKE '%a%'; #其中%代表不确定个数的字符,即字符a前有0个或多个字符,a后面也有0个或多个字符
  • 以上是单个字符查询,现在还有一种需求是要查询包含字符 'a' 且包含字符 'e'的数据,写法如下:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%'; #这样写查出来的数据就包含字符'a'且包含字符'e'
  • 还有一种场景即查询员工表中第二个字符是 'a'的数据,写法如下:
SELECT last_name
FROM employees
WHERE last_name LIKE '_a%';   # _ :的作用是表示一个不确定的字符,用此符号可表示指定位置,有点不清楚,再举例
  • 查询员工表数据中第三个字符是 'a' 的数据,写法如下:
SELECT last_name
FROM employees
WHERE last_name LIKE '__a%'  #加上一个下划线表示第二个字符,查询第三个字符就多加上一个下划线,表示第三个字符带a的数据
  • 查询员工表中第二个字符是 _ 且第三个字符是 'a' 的员工信息,这个时候我们就需要用到转义字符,写法如下:
SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';   #此处使用转义字符即可转义,因为需求中是明确第二个字符为下划线,所以需要转义后才能使用
  • REGEXP \ RLIKE : 正则表达式,正则表达式就不再是模糊查询,而是精确到某一位置 '^' 则表示头,'$'则表示尾,举例如下:
SELECT last_name
FROM employees
WHERE last_name RLIKE '^a';  #以a字符开头,注:要带上关键字RLIKE

SELECT last_name
FROM employees
WHERE last_name RLIKE 'a$' #以a字符结尾的数据

SELECT last_name
FROM employees
WHERE last_name RLIKE 'a' #即包含字符a的数据
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
145 0
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
128 6
|
1月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
54 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
70 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
61 1
|
5月前
|
SQL Oracle 关系型数据库
MySQL学习笔记
MySQL学习笔记
39 0
|
3月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
55 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
3月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
126 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
3月前
|
SQL 关系型数据库 MySQL
MySQL学习笔记
这篇文章是一份关于MySQL数据库操作的学习笔记,涵盖了数据库的终端操作、数据类型、建表约束、事务处理以及SQL的连接查询等基础知识点。
|
3月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
38 6