iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL结构化查询语——之DQL语言
  • 835
分享到

SQL结构化查询语——之DQL语言

2024-04-02 19:04:59 835人浏览 安东尼
摘要

记忆思路:sql的DQL语言select查询命令。from从哪个表中where以什么条件select查询哪些列,order by是否基于某字段排序,limit # 输出多少行。

记忆思路:sql的DQL语言select查询命令。
from从哪个表中where以什么条件select查询哪些列,order by是否基于某字段排序limit # 输出多少行。
一、单表查询
1. 常用查询语法:

  1. SELECT 输出显示字段 FROM 表名
  2. 无条件查询语法:SELECT 指定输出的列 FROM 表名 ;
  3. 限制输出语法:SELECT 指定输出的列 FROM 表名 LIMIT 显示记录数 ;
  4. 条件查询语法:SELECT 指定输出的列 FROM 表名 WHRER 查询条件 ;
  5. 条件查询再排序:SELECT 指定输出的列 FROM 表名 WHRER 查询条件 order by 指定排序字段 [desc|asc];
  6. 条件查询并限制输出语法:SELECT 显示输出的列 FROM 表名 WHRER 查询条件 LIMIT 显示记录数 ;

2. SELECT过滤输出列:

  1. 实例一:输出显示表所有行与列,【代表所有列】
    SELECT
    FROM students; 查询students表的所有内容
  2. 实例二:输出显示字段以别名输出:【字段名 as 别名】注意as可以省略
    SELECT name as 姓名,age as 年龄 FROM vmlab;
    SELECT name 姓名,age 年龄 FROM vmlab;

3. WHERE过滤输出行:通过where限定过滤条件

  1. 算术操作符:+, -, *, /, %
  2. 逻辑操作符:NOT,AND,OR,XOR
  3. 比较操作符:=,<=>(相等或都为空), <>, !=(非标准SQL), >, >=, <, <=
    select from vmlab where age >=30;
    SELECT FROM students WHERE gender='m';查询所有男生
    SELECT
    FROM students WHERE id < 3; 查询students表中id字段值小于3的所有行的所有字段
    SELECT * FROM students WHERE id >=2 and id <=4;查询id大于等2小于等4的记录;

  4. 区间取值:BETWEEN minnum AND maxnum
    SELECT
    FROM students WHERE BETWEEN 2 AND 4;查询id大于等2小于等4的记录;
  5. in 明确指定值:
    select * from vmlab where classid in (1,3,6);
  6. 匹配空值与非空值 :is null、is not null
    select from vmlab where classid is null 匹配classid为空值的行
    select
    from vmlab where classid is not null 匹配classid为非空值的行
  7. 模糊匹配 like
    % 任意长度的任意字符 ,_ 任意单个字符
    SELECT * FROM students WHERE name LIKE 't%'; 基于模糊匹配查询name字段以字母t开头的所有记录

  8. 正则表达式匹配
    rlike:
    SELECT FROM students WHERE name RLIKE '.[lo].';基于正则匹配查询name字段包含字母l或o的记录
    REGEXP:
    SELECT
    FROM vmlab WHERE name REGEXP '^h';

4. 分组统计:
GROUP BY根据指定的条件对查询结果进行“分组”以用于做“聚合”运算,输出字段一般为:聚合计算的字段和计算结果。

  1. 常用的聚合函数:count()计数、avg() 平均值、max() 最大值 、min() 最小值、sum() 求和
  2. HAVING: 对分组聚合运算后的结果指定过滤条件。
  3. 例:
    select classid,gender,avg(age) from students group by classid,gender;
    select classid,gender,avg(age) from students group by classid,gender having classid is not null;
    5. 数据整形操作
    ORDER BY: 根据指定的字段对查询结果进行排序
  4. 升序:ASC(默认为升序)
    select distinct classid from students order by classid;
    select distinct classid from students order by classid asc;
  5. 降序:DESC
    select distinct classid from students order by classid desc;
  6. 过滤显示空值
    select distinct classid from students where classid is null;
  7. 过滤不显示空值;
    select distinct classid from students where classid is not null;
  8. 去除重复列 DISTINCT
    select distinct classid from students;
    select from t1 uNIOn select from t1;
  9. 为输出列定义别名
    SELECT id stuid,name as stuname FROM students 查询students表中stuid、stuname字段,并将name字段以别名stuname显示输出。

6. 限制输出:

  1. LIMIT [[offset,]row_count]:对查询的结果进行输出行数数量限制
    SELECT FROM students ORDER BY name DESC LIMIT 2; 按name字段做降序排列,并出输前2条记录
    SELECT
    FROM students ORDER BY name DESC LIMIT 3,5; 按name字段做降序排列,并从第3记录开始输出5条记录

7. 操作实例:

1. 实例一:计算students表中男女生平均年龄,思路:用group by对性别字段进行分组,然后用avg()函数对年龄字段求平均数,最后输出性别、年龄字段计算的平均数。

select gender,avg(age) from students group by gender;
2. 实例二:计算students表中每个班级的男女生平均年龄,思路:用group by先对班级字段进行分组,再对同班级的性别做分组,然后对年龄字段求平均烽,最后输出字段为班级、性别、年龄字段计算的平均数。

select classid,gender,avg(age) from students group by classid,gender;
select classid,gender,avg(age) from students group by classid,gender having classid is not null; having过滤班级为空的学生不统计。过滤条件having一定要用在group by之后,先做分组统计计算然后再做过滤。
select classid,gender,avg(age) from students where classid is not null group by classid,gender; where过滤班级为空的学生不统计。过滤条件where一定要用在group by之前,先做过滤,然后再做分组统计。
3. 实例三:分组统计完成后,用order by对指输出字段做排序,asc升序排列,desc降序排列。

select classid,gender,avg(age) from students where classid is not null group by classid,gender order by avg(age) asc; asc升序排列
select classid,gender,avg(age) from students where classid is not null group by classid,gender order by avg(age) desc; desc降序排列
4. 实例四:做完分组统计、升降序排列后,做限制输出,如仅输出前100条记录,即TOP100。

select classid,gender,avg(age) from students where classid is not null group by classid,gender order by avg(age) asc limit 5; 升序限制输出
select classid,gender,avg(age) from students where classid is not null group by classid,gender order by avg(age) desc limit 5; 降序限制输出
5. 实例五:利用输出字段别名定制输出表头

select classid as 班级,gender as 性别,avg(age) as 平均年龄 from students where classid is not null group by classid,gender order by avg(age) asc limit 5;
6.实列六:以班级为分组计算平均年龄,并显示平均年龄大于30,且班级ID大于3

select classid,avg(age) from students group by classid having avg(age) >30 and classid >3;

二、多表查询

  1. 子查询:查询语句中嵌入另一个查询语句,将子查询语句的结果做为父语句过滤条件或输入结果。
    select name,age from students where age >(select avg(age)from students);
  2. 纵向合并:利用union联合查询实现多表纵向合并,默认有去重功能,如果不想去重则可以用union all。
    必要条件:多个表之间的合并字段数据类型必须相同,在select后的输出字段书写顺序必须都一致。
    select * from teachers union select Stuid,name,age,Gender from students;
  3. 横向合并:思路先确定哪个是主表。
    a. 字段数是两个表选取字段之和
    b. 记录数是两个表记录做笛卡尔乘积,即两表记录相乘,所有记录字段交叉合并,主表的每条记录与副表的每条记录分别合并。
    select from students cross join teachers;
    select
    from students,teachers;
    select students.name,teachers.name,students.classid from students,teachers limit 10;输出指定字列,必须指定要指定输出哪个表的列。
    select students.name as 姓名,teachers.name as 老师,students.classid 班级 from students,teachers limit 10;用字段别名定制输出表头。
    select st.name as 姓名,te.name as 老师,st.classid 班级 from students as st,teachers as te limit 10;为表指定别名,然后再输写输出字段会更简洁,表一旦指定别名就必须使用。
  4. 内连接:inner join 取两个表的交集
    逻辑:基于两个表的某个或某些共有特性为依据横向合并两表,使两表内的记录基于某条件建立关联。如果不加合并条件就是做笛卡尔乘积合并。
    实例:
    select from students inner join teachers on students.teacherid=teachers.tid; 新式输写
    select
    from students as s,teachers as t where s.teacherid=t.tid order by stuid;旧式输写
    select s.Stuid,s.name,t.name,s.classid from students as s inner join teachers as t on s.teacherid=t.tid order by stuid; 基于表的别名定制输出字段。
    select s.Stuid as 学号,s.name as 姓名,t.name as 老师,s.classid as 班级 from students as s inner join teachers as t on s.teacherid=t.tid order by stuid;为输出字段定义别名达到定制输出表头的目录。
    复合条件合并:
    select from students as s inner join teachers as t on s.teacherid=t.tid and s.stuid >10;
    select
    from students as s inner join teachers as t on s.teacherid=t.tid where s.stuid >10;
    SQL结构化查询语——之DQL语言
  5. 外连接:
    逻辑:左右是相对概念,因此在合并前先确定哪个表为主表,主表所有记录将全部输出,被吞并的表为副 表,副表的记录会被横向合并到主表中。
    左外连接:设左侧为主表,所有记录将全部输出,右为副表,两表进行横向合并,将副表(右侧表)中符合合并条件的记录填写在主表(左侧表)的对应记录内,主表中其余记录不符合条件的副表,并根据需求定制输出显示字段。
    select from students as s left outer join teachers as t on s.teacherid=t.tid;
    左外连接特例:用where设置过滤条件,排除左右表具有某共同特性的记录,横向合并输出主表(左侧)不具有共同某特性的记录。
    select
    from students as s left outer join teachers as t on s.teacherid=t.tid where t.tid is null;
    右外连接:设右侧为主表,所有记录将全部输出,左为副表,两表进行横向合并,将左侧
    select from students as s right outer join teachers as t on s.teacherid=t.tid;
    右外连接特例:用where设置过滤条件,排除左右表具有某共同特性的记录,横向合并输出主表(右侧)不具有共同某特性的记录。
    select
    from students as s right outer join teachers as t on s.teacherid=t.tid where s.teacherid is null;
    完全外连接:两个表没有主副之分,两个表的记录全部输出,两表字段合并,左侧表某条记录右侧表没有值来填写时则对应字段为空,右侧表的记录左则表没有值来填充时则对应字段也为空,从而将两个表合并的同时也将两个表的记录全部输出,相当于两表互补全并,构成矩形。
    完全外连接特例:排除两表的交集,保留剩余部分,即交集取反
您可能感兴趣的文档:

--结束END--

本文标题: SQL结构化查询语——之DQL语言

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

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

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

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

下载Word文档
猜你喜欢
  • SQL结构化查询语——之DQL语言
    记忆思路:SQL的DQL语言select查询命令。from从哪个表中where以什么条件select查询哪些列,order by是否基于某字段排序,limit # 输出多少行。...
    99+
    2022-10-18
  • SQL结构化查询语——之DML语言
    DML:Data Manipulation Language 数据操纵语言,主要用于实现对表的insert增,delete删,update改操作一、insert添加记录1. 添加记录,即添加行。 ...
    99+
    2022-10-18
  • SQL结构化查询语——之DDL语言
    一、SQL结构化查询语言概述SQL是关系型数据库所使用的标准语言,最初是基于IBM的实现在1986年被批准的。1987年,“国际标准化组织(ISO)”把ANSI(美国国家标准化组织) SQL作为国际标准。1...
    99+
    2022-10-18
  • SQL数据查询之DQL语言介绍
    目录1.DQL类型的SQL语句基本概述2.准备一张可以练习查询的数据表3.DQL语句之简单的基础查询3.1.查询表中指定的多个字段的数据3.2.查询表中所有字段的数据3.3.查询表中数据时为字段设置别名3.4.查询表中所...
    99+
    2022-08-17
    SQL DQL数据查询 SQL DQL类型
  • MySQL之数据查询语言(DQL)
    数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块: SELECT FROM WHERE -- 创建数据库 create database if not exi...
    99+
    2019-01-15
    MySQL之数据查询语言(DQL)
  • SQL(结构化查询语言)和T-SQL(Transact-SQL)之间的区别。
    SQLSQL,结构化查询语言是一种非过程语言,数据库引擎使用它来解释 SQL 查询以创建/修改/访问数据库T-SQLT-SQL(Transact-SQL)是 SQL 的过程扩展,由 SQL Server 使用。与Oracle的PL/SQL类...
    99+
    2023-10-22
  • SQL结构化查询语言分类介绍
    SQL结构化查询语言分类介绍SQL:结构化查询语言,它是一种对关系型数据进行定义和操作的语言方法。SQL结构化查询语言包含6个部分:一、数据查询语言(DQL)DQL全称Data Query Language...
    99+
    2022-10-18
  • ​结构化查询语言sql容易学吗
    这篇文章主要介绍了结构化查询语言sql容易学吗,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。结构化查询语言(Structured Query...
    99+
    2022-10-18
  • SQL中如何使用DQL查询语言
    SQL中如何使用DQL查询语言,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。DQLDQL:data Query language 数据查询...
    99+
    2022-10-18
  • SQL中DQL查询语言的示例分析
    这篇文章将为大家详细讲解有关SQL中DQL查询语言的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DQLDQL:data Query language 数据查询语...
    99+
    2022-10-18
  • DQL查询数据语言(MySQL)
     DQL查询数据语言(重点) Select (核心)1.查询所有字段   select * from `表名`;2.查询指定字段   select `字段1`,`字段2` from `表名`;3.给结果取一个名字   ...
    99+
    2019-10-05
    DQL查询数据语言(MySQL)
  • SQL中的结构化查询语言是怎样的
    SQL中的结构化查询语言是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。SQL(结构化查询语言)是一门用于管理关系型数据库和对数据库...
    99+
    2022-10-19
  • MySQL结构化查询语言有哪些
    这篇文章主要介绍“MySQL结构化查询语言有哪些”,在日常操作中,相信很多人在MySQL结构化查询语言有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL结构化查询语言有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-02
  • MySQL之数据查询语法(DQL)字段控制查询
    原文:https://www.cnblogs.com/lizecheng/p/14646093.html...
    99+
    2014-08-02
    MySQL之数据查询语法(DQL)字段控制查询 数据库入门 数据库基础教程
  • sql查询语句优化
    sql查询语句优化 1、对查询进行优化,应尽量避免全表扫描 a、 where 及 order by 涉及的列上建立索引 b、 尽量避免在 where 子句中对字段进行 null 值判断,可以将null值设置默认值0等,如...
    99+
    2016-05-19
    sql查询语句优化 数据库入门 数据库基础教程 数据库 mysql
  • T-SQL查询语句大总结
    T-SQL查询语句大总结 防伪码:有志者事竟成,破釜沉舟,百二秦关终属楚 注:表格及语法众多,因此总结为sql server 语句,各位朋友如有需要可参考,谢谢! 案例一:表如下图所示实...
    99+
    2022-10-18
  • sql标准化查询语言的作用有哪些
    1. 数据查询:SQL是一种用于查询数据库的标准化语言,可以快速、准确地从数据库中获取所需的数据。2. 数据操作:SQL可以用于对数...
    99+
    2023-06-14
    sql标准 sql
  • 怎么优化SQL查询语句
    这篇文章主要讲解了“怎么优化SQL查询语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么优化SQL查询语句”吧!1、 首先要搞明白什么叫执行计划执行计划...
    99+
    2022-10-18
  • SQL基础语句 - 数据操作DML和数据查询DQL语句详细介绍
    文章目录 数据操作DML数据查询DQL基础查询条件查询排序查询聚合函数分组查询分页查询 数据操作DML DML:是对表中的数据进行增删改的操作 创建下面这样一个学生表进行演示...
    99+
    2023-09-08
    sql 数据库 mysql
  • SQL查询语法知识梳理总结
    目录基本查询条件查询常用的条件表达式投影查询排序分页查询聚合查询分组多表查询连接查询小结基本查询 SELECT * FROM <表名> selec ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作