msql查询姓名不带r的员工姓名_我在b站学MySQL!!!——基础+查询

3c3f53385ac1cd69088283f06af9b936.png

前段时间一直在学mosh的mysql,前三个小时的免费内容真是精彩,让我都想买他的课了!

fa4e342809f80f469e60cdee454cd9f5.png
图片源自网络,侵删

然鹅,后面的课其实不咋地。就这??就这???

3191c4fd1c39e0c10d55a7d2a5b0b5a1.png
图片源自网络,侵删

于是我转战尚硅谷了,朋友们!看了之后真香!!!

果然还是中国人最了解中国人,看尚硅谷让我梦回高中,感觉自己sql语句学了可以上清北了,哈哈哈哈哈哈。

61a019b0248ca23da81f2d8de5bc12d9.png
图片源自网络,侵删

在这里记录一下里面的笔记,侵删哈~


第1章 数据库概述

1.1 什么是数据库

数据库是持久化数据的一种介质,可以理解成用来存储和管理数据的仓库。

#持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。

1.2 数据库相关概念

DB:数据库( database ):存储数据的“仓库”。它保存了一系列有组织的数据。

DBMS:数据库管理系统( Database Management System )。数据库是通过 DBMS 创

建和操作的容器

SQL:结构化查询语言( Structure Query Language ):专门用来与数据库通信的语言。

1.3 数据库存储数据的特点

  • 将数据放到表中,表再放到库中
  • 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似python中 “类”的设计。
  • 表由列组成,我们也称为字段。所有表都是由一个或多个列组成的。
  • 表中的数据是按行存储的。

第2章 SQL语句

2.1 SQL概述

1. 什么是SQL

SQL(Structured Query Language)是“结构化查询语言”,它是对关系型数据库的操作语言。它可以应用到所有关系型数据库中,例如:MySQL、Oracle、SQL Server等。

虽然SQL可以用在所有关系型数据库中,但很多数据库还都有标准之后的一些语法,我们可以称之为“方言”。例如MySQL中的LIMIT语句就是MySQL独有的方言,其它数据库都不支持!

2. SQL语法要求

  • SQL语句可以单行或多行书写,以分号结尾;
  • 可以用空格和缩进来来增强语句的可读性;
  • 关键字不区别大小写,建议使用大写;

2.2 分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;如:creat/drop/alter
  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);如:insert/update/delete
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
  • DQL(Data Query Language):数据查询语言,用来查询记录(数据);如:select

2.3 DQL

DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

语法:

SELECT 
selection_list /*要查询的列名称*/
FROM 
table_list /*要查询的表名称*/
WHERE 
condition /*行条件*/
GROUP BY 
grouping_columns /*对结果分组*/
HAVING 
condition /*分组后的行条件*/
ORDER BY
sorting_columns /*对结果分组*/
LIMIT 
offset_start, row_count /*结果限定*/

第3章 基础查询

语法:

select 查询列表 from 表名;

特点:

1、查询的结果集是一个虚拟表;

2、select后面跟的查询列表,可以有多个部分组成,中间用逗号隔开。例如:select 字段1,字段2,表达式 from 表;

3、执行顺序 ① from子句 ② select子句 ;

4、查询列表可以是:字段、表达式、常量、函数等。

73ad04dfcb2c82c7102c409d9ea97718.png

(1)超级基础的语句:

eb089a9728619d3a852d37539bdd4030.png

(2)其他查询集合:

a1eb7b9b362ba0cc75f141e385b31552.png

其中,mysql中+的作用——加法运算

①两个操作数都是数值型:100+1.5

②其中一个操作数为字符型:将字符型数据强制转换成数值型;如果无法转换,则直接当做0处理,如:'张无忌'+100 100

③其中一个操作数为null:

null+null null

null+100 null

|再多学亿点|:

ifnull (表达式1,表达式2)

表达式1:可能为null的字段或表达式

表达式2:如果表达式1为null,则最终结果显示的值

功能:如果表达式1为null,则显示表达式2,否则显示表达式1

注:类似于excel里的函数iferror()。

SELECT commission_pct,IFNULL(commission_pct,'空') FROM employees;

9fabf4c6c5c2978c69b3dfb58e652d23.png
使用ifnull可以替换null值哦~

第4章 条件查询

语法:

select 查询列表

from 表名

where 筛选条件;

执行顺序:

①from子句

②where子句

③select子句

特点:

22e4f3408c6f1be9842de554d89d9f79.png

(1) 按关系表达式和逻辑表达式筛选

#案例1:查询部门编号不是100的员工信息
SELECT *
FROM employees
WHERE department_id <> 100;

#案例2:查询工资<15000的姓名、工资
SELECT last_name,salary
FROM employees
WHERE salary<15000;

#案例3:查询部门编号不是 50-100之间员工姓名、部门编号、邮箱
#方式1:
SELECT last_name,department_id,email
FROM employees
WHERE department_id <50 OR department_id>100;
#方式2:
SELECT last_name,department_id,email
FROM employees
WHERE NOT(department_id>=50 AND department_id<=100);

#案例4:查询奖金率>0.03 或者 员工编号在60-110之间的员工信息
SELECT *
FROM employees
WHERE commission_pct>0.03 OR (employee_id >=60 AND employee_id<=110);

(2)模糊查询

like

1c64c9ef6fca58c5a56bc82b81545f0a.png
#案例1:查询姓名中包含字符a的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%';

#案例2:查询姓名中包含最后一个字符为e的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%e';

#案例3:查询姓名中包含第一个字符为e的员工信息
SELECT *
FROM employees
WHERE last_name LIKE 'e%';

#案例4:查询姓名中包含第三个字符为x的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '__x%';

#案例5:查询姓名中包含第二个字符为_的员工信息
-- 方式1
SELECT *
FROM employees
WHERE last_name LIKE '__%';
-- 方式2
SELECT *
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';

注意到案例5了吗?如果要查询通配符可以使用''或者命令escape '$' 来充当''哦~

in

44cd0ff26e4abf8a8d5c2e28b4b4282f.png
#案例1:查询部门编号是30/50/90的员工名、部门编号

#方式1:
SELECT last_name,department_id
FROM employees
WHERE department_id IN(30,50,90);

#方式2:
SELECT last_name,department_id
FROM employees
WHERE department_id = 30
OR department_id = 50
OR department_id = 90;


#案例2:查询工种编号不是SH_CLERK或IT_PROG的员工信息

#方式1:
SELECT *
FROM employees
WHERE job_id NOT IN('SH_CLERK','IT_PROG');

#方式2:
SELECT *
FROM employees
WHERE NOT(job_id ='SH_CLERK'
OR job_id = 'IT_PROG');

between _ and _

5866a11a84eae8437bcd649544d659b9.png
#案例1:查询部门编号是30-90之间的部门编号、员工姓名

#方式1:
SELECT department_id,last_name
FROM employees
WHERE department_id BETWEEN 30 AND 90;

#方式2:
SELECT department_id,last_name
FROM employees
WHERE department_id>=30 AND department_id<=90;


#案例2:查询年薪不是100000-200000之间的员工姓名、工资、年薪

SELECT last_name,salary,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE salary*12*(1+IFNULL(commission_pct,0))<100000 OR salary*12*(1+IFNULL(commission_pct,0))>200000;

SELECT last_name,salary,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE salary*12*(1+IFNULL(commission_pct,0)) NOT BETWEEN 100000 AND 200000;

is null/is not null

#案例1:查询没有奖金的员工信息
SELECT *
FROM employees
WHERE commission_pct IS NULL;

#案例2:查询有奖金的员工信息
SELECT *
FROM employees
WHERE commission_pct IS NOT NULL;

补充:

符号备注
=只能判断普通的内容
is只能判断NULL值
<=>安全等于,既能判断普通内容,又能判断NULL值

第5章 排序查询

语法:

select 查询列表

from 表名

where 筛选条件 【非必须】

order by 排序列表

执行顺序:

①from子句

②where子句

③select子句

④order by 子句

特点:

1、排序列表可以是单个字段、多个字段、表达式、函数、列数、以及以上的组合

2、升序 ,通过 asc ,默认行为;降序 ,通过 desc

c578655d0bf2cc2d08ef5f806f62855f.png

一、按单个字段排序

#案例1:将员工编号>120的员工信息进行工资的降序
SELECT * 
FROM employees 
WHERE employee_id>120 
ORDER BY salary DESC;

二、按表达式排序

#案例1:对有奖金的员工,按年薪降序
SELECT *,salary*12*(1+IFNULL(commission_pct,0))  年薪
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

三、按别名排序

#案例1:对有奖金的员工,按年薪降序
SELECT *,salary*12*(1+IFNULL(commission_pct,0))  年薪
FROM employees
ORDER BY 年薪 DESC;

|小芝士|:

where不可以用select中的别名,但是order by可以用,为什么呢?

因为where是在select语句执行前执行的,而order by则是在select语句之后执行的。

在where“召唤”别名的时候,别名还没有“出生”呢!

四、按函数的结果排序

#案例1:按姓名的字数长度进行升序
SELECT last_name
FROM employees
ORDER BY LENGTH(last_name);

五、按多个字段排序

#案例1:查询员工的姓名、工资、部门编号,先按工资升序,再按部门编号降序
SELECT last_name,salary,department_id
FROM employees
ORDER BY salary ASC,department_id DESC;

六、补充选学:按列的顺序数排序

#按照表中的第二列进行降序排序
SELECT * FROM employees 
ORDER BY 2 DESC;

注:此方法可以省去写具体列名

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值