MYSQL回顾1-检索、排序、过滤

mysql

1. 基础概念

  • database(数据库):保存有组织的数据的容器(可存放多张表)。
  • table(表):某种特定类型数据的结构化清单(用户表、产品表…)。
  • column(列):表中的一个字段,所有表都是由一个或多个列组成的。
  • row(行):表中每插入一条记录就是一行,行的总数就为记录的总数。
  • primary key(主键):表中每一行都应该有可以唯一标识自己的一列(或一组列)。
  • foreign key(外键):与本表有关联的另一张表的主键。

Navicat查看:
在这里插入图片描述
命令行查看:

显示所有数据库

show databases;

在这里插入图片描述
切换到rema数据库,显示其中所有表

use rema;
show tables;

在这里插入图片描述
显示console_jobs表中的id,title,department_id列的行信息

select id,title,department_id from console_jobs;

在这里插入图片描述

2.show

显示表列信息:

Navicat查看:右击console_jobs,点击设计表,可对表列信息进行查看编辑
在这里插入图片描述
命令行查看:

describe console_jobs:
# 或
show columns from console_jobs;

在这里插入图片描述
上面,我们大量运用到了show语句用于查看数据库中的信息,如果想要了解更多show语句的用法,可以使用下面的命令或访问(官方文档-show):

show help;

在这里插入图片描述

3.select

最经常使用的sql语句就是select语句了。它的用途是从一个或多个表中检索信息。为了使用select检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。

检索单列或多列或所有列数据:

检索console_jobs表的id,title,department_id:

# 单列
select id from console_jobs;
# 多列
select id,title,department_id from console_jobs;
# 所有列(可能会降低性能)
select * from console_jobs;

在这里插入图片描述
检索不同行的数据

select distinct department_id from console_jobs;

不能部分使用distinct ,distinct关键字应用于所有列而不仅是前置它的列。
在这里插入图片描述
在这里插入图片描述
限制返回的行数

select id,department_id from console_jobs limit 3;

在这里插入图片描述
limit 2, 5指示MySQL返回从行3开始的5行。第一个数为开始位置,第二个数为要检索的行数。此语句的输出如下所示:

select id,department_id from console_jobs limit 2,5;

表中没有那么多行时,能返回多少就返回多少
在这里插入图片描述

4.order by

补充概念:

  • clause(子句):SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。

单列排序

select id,salary_max from console_jobs order by salary_max;

在这里插入图片描述
多列排序

select id,salary_max,department_id from order by department_id,salary_max;

仅在多个行具有相同的department_id值时才对产品按salary_max进行排序。
在这里插入图片描述
指定排序方向

select id,salary_max,department_id from console_jobs order by department_id desc, salary_max;

以降序排序部门id(最大的在最前面),然后再对薪资排序。

desc关键字只应用到直接位于其前面的列名。
在这里插入图片描述
找出最值

select salary_max from console_jobs order by salary_max desc limit 1;

在这里插入图片描述
在给出order by子句时,应该保证它位于from子句之后。如果使用limit,它必须位于order by之后。

5.where

select语句中,数据根据where子句中指定的搜索条件进行过滤。

检索相等值

select id.title,working_place from console_jobs where salary_max=25;

在这里插入图片描述
在同时使用order by和where子句时,应该让order by位于where之后,否则将会产生错误。

where子句操作符

操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
BETWEEN在指定的两个值之间

检查单个值

select id.title,working_place from console_jobs where title="main";

在这里插入图片描述
MySQL在执行匹配时默认不区分大小写,所以main与Main匹配。

不匹配检查

select id.title,working_place from console_jobs where title<>"main";

在这里插入图片描述
何时使用单引号:单引号用来限定字符串。如果将值与串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号。

范围值检查

select id,title,salary_max,working_place from console_jobs where salary_max between 5 and 15 ;

在这里插入图片描述
在使用between时,必须指定两个值——所需范围的低端值和高端值。这两个值必须用and关键字分隔。between匹配范围中所有的值,包括指定的开始值和结束值。

空值检查
在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值null

select id,title,salary_max,working_place from console_jobs where salary_max is null;

在这里插入图片描述在通过过滤选择出不具有特定值的行时,你可能希望返回具有null值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。

组合where子句
所有where子句在过滤数据时使用的都是单一的条件。为了进行更强的过滤控制,MySQL允许给出多个where子句。这些子句可以两种方式使用:以and子句的方式或or子句的方式使用。

基本概念:

  • operator(操作符):用来联结或改变where子句中的子句的关键字。也称为逻辑操作符(logical operator)。

and操作符

select id,title,salary_max,work_year from console_jobs where salary_max=11 and work_year=1;

在这里插入图片描述
为了通过不止一个列进行过滤,可使用and操作符给where子句附加条件。

or操作符

select id,title,salary_max,work_year from console_jobs where salary_max=11 or work_year=1;

在这里插入图片描述
计算次序

select id,title,salary_max,work_year from console_jobs where (work_year=1 or work_year=2) and salary_max > 11 ;

在这里插入图片描述
SQL(像多数语言一样)在处理or操作符前,会优先处理and操作符。不要过分依赖默认计算次序,任何时候使用具有andor操作符的where子句,都应该使用圆括号明确地分组操作符,它能消除歧义。

in操作符

select id,title,salary_max,work_year from console_jobs where work_year in (1,2) order by salary_max;

在这里插入图片描述
圆括号在where子句中还有另外一种用法。in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。in取合法值的由逗号分隔的清单,全都括在圆括号中。

not操作符

select id,title,salary_max,work_year from console_jobs where work_year not in (1,2) order by salary_max;

在这里插入图片描述
mysql支持使用notinbetweenexists子句取反,这与多数其他DBMS允许使用not对各种条件取反有很大的差别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值