iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >数据库学习之五:SELECT高级应用
  • 164
分享到

数据库学习之五:SELECT高级应用

数据库学习之五:SELECT高级应用 2020-12-23 18:12:48 164人浏览 猪猪侠
摘要

五、SELECT高级应用 1、课程大纲 • 开发环境准备 • select语句的基本语法格式 • WHERE子句 • ORDER BY子句 • LIMIT子句 • 多表连接查询(join、using) • 集合操作(uNI

数据库学习之五:SELECT高级应用

五、SELECT高级应用

1、课程大纲

开发环境准备
• select语句的基本语法格式
• WHERE子句
• ORDER BY子句
• LIMIT子句
• 多表连接查询(join、using) • 集合操作(uNIOn) • group by与having字句
• 子查询

2、开发环境

• 导入world.sql
• 创建用户,使用sqlyog登录数据库

3、select语法环境

help select;
SELECT
[ALL | DISTINCT | DISTINCTROW ]
select_expr [, select_expr ...]
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[Asc | DEsc], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[Asc | DEsc], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[FOR UPDATE | LOCK IN SHARE MODE]]

4、WHERE子句

• 基本语法

SELECT *|{[DISTINCT] column|select_expr [alias], ...]}  

[FROM [database.]table] 

[WHERE conditions];  

• WHERE条件又叫做过滤条件,它从FROM子句的中间结果中去掉所有 条件conditions不为TRUE(而为FALSE或者NULL)的行

• WHERE子句跟在FROM子句后面

• 不能在WHERE子句中使用列别名

例1:where字句的基本使用

SELECT * FROM world.`city` WHERE CountryCode="CHN"; 

or 

SELECT * FROM world.`city` WHERE CountryCode="chn"; 

注意:

WHERE中出现的字符串和日期字面量必须使用引号括起来

这里,字符串字面量写成大写或小写结果都一样,即不区分大小写进行查询。

这和oracle不同,ORACLE中WHERE条件中的字面量是区分大小写的

例2:where字句中的逻辑操作符:

SELECT * FROM world.`city`  

WHERE CountryCode="chn" AND district = "anhui"; 

• 逻辑操作符介绍:

– and

逻辑与。只有当所有的子条件都为true时,and才返回true。否则返回false或null

– or

逻辑或。只要有一个子条件为true,or就返回true。否则返回false或null

– not

逻辑非。如果子条件为true,则返回false;如果子条件为false,则返回true

– xor

逻辑异或。当一个子条件为true而另一个子条件为false时,其结果为true;

当两个条件都为true或都为false时,结果为false。否则,结果为null

例3 :where字句中的范围比较:

SELECT * FROM world.`city`  

WHERE  

population BETWEEN 100000 AND 200000 ; 

• 例4:where字句中的IN

SELECT * FROM city 

WHERE countrycode IN ("CHN","JPN");

例5:where字句中的like

– 语法:

like ‘匹配模式字符串’

– 实现模式匹配查询或者模糊查询:

测试一个列值是否匹配给出的模式

– 在‘匹配模式字符串’中,可以有两个具有特殊含义的通配字符:

%:表示0个或者任意多个字符

_:只表示一个任意字符

SELECT * FROM city 

WHERE countrycode LIKE "ch%"; 

5、ORDER BY子句

• ORDER BY子句用来排序

• 如果SELECT语句中没有ORDER BY子句,那么结果集中行的顺序是

不可预料的

• 语法:

SELECT expr 

FROM table 

[WHERE condition(s)] 

[ORDER BY {column, expr, numeric_position} [Asc|DEsc]]; 

• 其中:

– Asc:执行升序排序。默认值

– DEsc:执行降序排序

– ORDER BY子句一般在SELECT语句的最后面

例1: 基本使用

SELECT * FROM city 

ORDER BY population; 

• 例2:多个排序条件

SELECT * FROM city 

ORDER BY population,countrycode; 

• 例3:以select字句列编号排序

SELECT * FROM city 

ORDER BY 5; 按照第5列进行排序。

• 例4:desc asc

SELECT * FROM city 

ORDER BY 5 desc; 

• 例5:NULL值的排序

Mysql中,把NULL值当做一列值中的最小值对待。因此,升序排序时,它出现在最前面

6、LIMIT子句

mysql特有的子句。

• 它是SELECT语句中的最后一个子句(在order by后面)。

• 它用来表示从结果集中选取最前面或最后面的几行。

• 偏移量offset的最小值为0。

• 语法:

limit <获取的行数> [OFFSET <跳过的行数>]

或者 limit [<跳过的行数>,] <获取的行数>

SELECT * FROM city 

ORDER BY 5 DEsc 

LIMIT 4; 

注:先按照人口数量进行降序排序,然后使用limit从中挑出最前面的4行。

如果没有order by子句,返回的4行就是不可预料的。

7、多表连接查询

传统的连接写法(使用where)

SELECT NAME,ci.countrycode ,cl.language ,ci.population 

FROM city ci , countrylanguage cl 

WHERE ci.`CountryCode`=cl.countrycode; 

注意:一旦给表定义了别名,那么原始的表名就不能在出现在该语句 的其它子句中了

• NATURAL JOIN子句

• 自动到两张表中查找所有同名同类型的列拿来做连接列,进行相等 连接

SELECT NAME,countrycode ,LANGUAGE ,population 

FROM city NATURAL JOIN countrylanguage 

WHERE population > 1000000 

ORDER BY population; 

注意:在select子句只能出现一个连接列

使用using子句

SELECT NAME,countrycode ,LANGUAGE ,population 

FROM city JOIN countrylanguage 

USING(countrycode);

8、集合操作

UNION [DISTINCT]
• UNION ALL
• 语法:
SELECT ... 
UNION [ALL | DISTINCT] 
SELECT ... 
[UNION [ALL | DISTINCT] 
SELECT ...]

• UNION用于把两个或者多个select查询的结果集合并成一个
• 进行合并的两个查询,其SELECT列表必须在数量和对应列的数据类型上保持一致
• 默认会去掉两个查询结果集中的重复行
• 默认结果集不排序
• 最终结果集的列名来自于第一个查询的SELECT列表

9、分组操作及分组处理

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组, 所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个 “小区域”进行数据处理。

• Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分

组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚

组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

11、子查询

子查询定义

  • 在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询( subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询 的结果传递给调用它的表表达式继续处理。
  • 子查询(inner query)先执行,然后执行主查询(outer query)
  • 子查询按对返回结果集的调用方法,可分为:where型子查询,from型子查询及exists 型子查询。

• 使用子查询原则

  • 一个子查询必须放在圆括号中。
  • 将子查询放在比较条件的右边以增加可读性。

子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,并且 如果指定了它就必须放在主 SELECT 语句的最后。

  • 在子查询中可以使用两种比较条件:单行运算符(>, =, >=, <, <>, <=) 和多行运算符 (IN, ANY, ALL)。
您可能感兴趣的文档:

--结束END--

本文标题: 数据库学习之五:SELECT高级应用

本文链接: https://www.lsjlt.com/news/5892.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 图数据库Neo4j学习五渲染图数据库neo4jd3
    文章目录 1.现成的工具2.Neo4j JavaScript Driver3.neovis4.neo4jd34.1neo4jd3和neovis对比4.2获取neo4jd34.3neo4jd3的数据结构4.4Spring data n...
    99+
    2023-08-30
    数据库 neo4j 学习
  • Python科学计算学习之高级数组(二)
    代码性能和向量化   背景:Python是一种解释型的编程语言,基本的python代码不需要任何中间编译过程来得到机器代码,而是直接执行。而对于C、C++等编译性语言就需要在执行代码前将其编译为机器指令。 但是,解释型代码的速度比编译...
    99+
    2023-01-31
    数组 高级 科学
  • Midjourney学习(三)6个高级应用
    使用Remix Mode在原图片的基础上进行二次创作 通过prompt得到大图之后,点击Make Variations按钮,输入Remix Prompt,即可得到意想不到的效果! 局部内容重绘 通过局部重绘可...
    99+
    2023-08-30
    midjourney 学习 局部重绘
  • MySQL学习之数据库表五大约束详解小白篇
    目录1.约束概念和分类2.五大约束的添加和删除2.1添加约束的六种方法2.2三种删除约束的方式2.3五大约束分别对应的添加删除方式(序号对应2.1和2.2)2.4对于创建约束的总结2...
    99+
    2024-04-02
  • Flutter学习之Navigator的高级用法分享
    目录简介named routes给named route传参数从Screen返回值向Screen传值总结简介 上篇文章我们讲到了flutter中navigator的基本用法,我们可以...
    99+
    2023-02-27
    Flutter Navigator用法 Flutter Navigator
  • 大数据入门级学习:SQL与NOSQL数据库
    这几年的大数据热潮带动了一激活了一大批hadoop学习爱好者。有自学hadoop的,有报名培训班学习的。所有接触过hadoop的人都知道,单独搭建hadoop里每个组建都需要运行环境、修改配置文件测试等过程...
    99+
    2024-04-02
  • MySQL学习之数据库备份详解
    目录1.DB,DBMS,SQL2.数据库的特点3.SQL分类4.mysql两种启动关闭方式5.mysql的登录方式()6.SQL语言规范7.navicat常用快捷键8.数据库的备份和...
    99+
    2024-04-02
  • MySQL数据库高级数据操作之新增数据
    目录多数据插入主键冲突1、主键冲突更新2、主键冲突替换蠕虫复制多数据插入 只要写一次insert,可以插入多条数据 基本语法: insert into 表名 [(字段列表)] val...
    99+
    2024-04-02
  • PHP数据库学习之详解PDO的基本用法
    PHP PDO是PHP数据库扩展中的一种重要组件,它为PHP与多种关系型数据库提供了统一的API,使用PDO可以让我们的程序更加安全、高效、易于维护。在本文中,我们将介绍PHP PDO的用法,包括如何连接数据库、执行SQL语句、事务处理等方...
    99+
    2023-05-14
    php pdo
  • MySQL数据库高级数据操作之怎么新增数据
    本篇内容主要讲解“MySQL数据库高级数据操作之怎么新增数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库高级数据操作之怎么新增数据”吧!多数据插入只要写一次insert,可以插...
    99+
    2023-06-30
  • Qt数据库应用之超级自定义委托
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 在QTableView、QTreeView以及对于衍生的QTableWidget、QTreeWidget类中,需要...
    99+
    2024-04-02
  • Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名
    一、简介由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点:1、是一种数据库管理系统2、是一种关联数据库管理系统3、是一种开放源码软件,且有大量可用的共享MySQL软件4、MySQ...
    99+
    2024-04-02
  • Mysql DBA 高级运维学习之路-MySQL高可用工具drbd实战
    1.DRBD介绍 Distributed Replicated Block Device (DRBD)是基于块设备在不同的高可用服务器对之间同步和镜像数据的软件,通过它可以实现在网络中的两台服务器之间基于块...
    99+
    2024-04-02
  • Qt数据库应用之通用数据库同步
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码一、前言 数据库同步的主要功能是将本地的数据库记录同步到远程的数据库,其中数据库类型不限,比如本地是sqlite数据库,远程...
    99+
    2024-04-02
  • 数据库insert高级语法用法
    这篇文章主要介绍“数据库insert高级语法用法”,在日常操作中,相信很多人在数据库insert高级语法用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库insert高...
    99+
    2024-04-02
  • python数学建模之Numpy 应用介绍与Pandas学习
    目录Numpy学习1 Numpy 介绍与应用1-1Numpy是什么2 NumPy Ndarray 对象3 Numpy 数据类型4 Numpy 数组属性Pandas学习1 pandas...
    99+
    2024-04-02
  • 十二、Python高级功能之Mysql数据库模块
    Python高级功能之Mysql数据库模块安装python mysql组件# yum -y install MySQL-python.x86_64以下根据实例来说明:>>> import ...
    99+
    2024-04-02
  • PHP数据库学习之如何使用PDO执行SQL语句
    这篇文章主要讲解了“PHP数据库学习之如何使用PDO执行SQL语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP数据库学习之如何使用PDO执行SQL语句”吧!exec() 方法在我们执...
    99+
    2023-06-25
  • mysql高级学习之索引的优劣势及规则使用
    一、索引的优劣势 优点:可以快速的检索  、可以加快分组和排序 缺点: 占用储存空间、降低数据表的修改操作 二、索引的分类 主键索引 ...
    99+
    2024-04-02
  • MySQL学习之数据库操作DML详解小白篇
    目录1.插入语句1.1插入一行1.2插入多行1.3插入查询语句2.修改语句2.1修改单表记录2.2修改多表记录3.删除语句3.1方式1使用delete删除3.2方式2使用t...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作