当前位置:   article > 正文

达梦数据库相关SQL语句的使用_达梦 limit

达梦 limit

一、单表查询

1.最基本的SQL查询语句

2.条件查询

3.高级查询

4.分组查询

二、多表查询

1.连接查询(联接查询)内连接语法

2.外连接

3.合并结果集

目录

一、单表查询

二、多表查询


一、单表查询

1.最基本的SQL查询语句

特点:SQL语言是一种非过程化的结构查询语句;

语法:SELECT   *|{字段名1,字段名2,字段名3,......}FROM  表名

例:查询TBL_Bookinfo 表所有图书的索取号,标准编号,书名,并用中文显示列名

select bookid as 索取号 ,isbn as 标准编号 ,bookname as 书名 from library00.tbl_bookkinfo;

2.条件查询

语法:                

        主语句:SELECT [DISTINCT]  *|{字段名1,字段名2,字段名3,......}FROM  表名

        子语句:[WHERE 条件表达式1]

          [GROUP BY  字段名 [HAVING 条件表达式2 ]]

          [ORDER BY 字段名  [ASC|DESC]]

          [LIMIT [OFFSET,]记录数];

  • 比较条件的使用:

=用于相等比较
>表示大于比较
<表示小于比较
>=表示大于等于比较
<=表示小于等于比较
<>、!表示不等于比较
【例1】在 TBL _ Bookinfo 表中查询所有"清华大学出版社"出版的书

select * from TBL _ Bookinfo where Publisher ="清华大学出版社"


【例2】在 TBL _ Bookinfo 表查询95年及95年以后出版的书
 

select * from TBL _ Bookinfo where PublishDate >='1995-1-1';
  • 比较条件的组合使用

运算符
AND :逻辑与,操作数全部为真,则结果为1,否则为0
OR :逻辑或,操作数中只要有一个为真,则结果为1,否则为0
NOT :逻辑非,操作数为0,则结果为1,操作数为1,则结果为0
【例3】查询不是"清华大学出版社"出版的书。
 

select * from TBL Bookinfo where not Publisher ="清华大学出版社";


【例4】查询所有"清华大学出版社"或"电子工业出版社"出版的书
 

  1. select * from TBL Bookinfo 
  2.  where Publisher ='清华大学出版社' or Publisher ='电子工业出版社';


【例5】在 TBL _ Bookinfo 表查询页数在200至400之间、同时出版社为"清华大学
出版社"的书
 

  1. select · from TBL _ Bookinfo 
  2.  where Pagecount >=200 and Pagecount <=400 and Publisher ='清华大学出版社'

  • BETWEEN 关键字

运算符
 BETWEENAND ..AND...:在指定的闭区间范围内
 NOT BETwEEN ...AND... :不在指定的闭区间范围内
一般用于数值和日期型数据
注意: between .. an 是包含边界的
【例6】从 TBL Bookinfo 表中检索1990年年出版的图书信息。

  1.  select * from TBL _ Bookinfo 
  2.  where PublishDate between '1990-0-01-01' and '1990-12-31;

IN 关键字
函数名
 INO :在给定的集合内
 NOT INO :不在给定的集合内
【例7】从 TBL _ Bookinfo 表中检索出索取号为'TB11/46',' TG /71',TG38-62/12'的图书信息。
 select · from TBL _ Bookinfo 
 where BookID in ('TB11/46', TG /71,TG38-62/12');
#等价于
 select * from TBL _ Bookinfo 
 where BooklD ='TB11/46' or BooklD = TG /71' or BookID ='TG38-62/12';

3.高级查询

  • DISTINCT 关键字

实际应用中,出于对数据的分析需求,有时需要去除查询记录中重复的数据。可使用 DISTINCT (去重复值子句)去除重复记录(消除重复行,只保留一条)。
语法: DISTINCT 字段名1[,字段名2]..
【例1】在 TBL _ Bookinfo 表中检索所有的出版社
 

select Publisher from TBL _ Bookinfo ; select distinct Publisher from TBL _ Bookinfo ;
  • ORDER BY 子句

  在项目开发时,为了使查询的数据结果满足用户的要求,通常使用 ORDER BY (排序子句)对查询出的数据进行上升或下降的排序。
 SQL 提供了两种排序的方式,分别为单字段排序和多字段排序。
单字段排序(单重排序)
语法: ORDER BY 字段名[ ASC | DESC ]
说明: ASC 升序, DESC 降序,缺省值为升序
【例2】按出版日期的升序检索 TBL _ Bookinfo 表的记录
 

 select * from TBL _ Bookinfo order by PublishDate asc ;

多字段排序(多重排序)
语法: ORDER BY 字段名1[ ASC | DESC ][,字段名2[ ASC | DESC ]].
说明:多字段排序首先按照第一字段值排序,当第一字段的值相同时,再按照第二字段值进行排序,依次类推。
【例4】按出版社的降序和出版日期的升序检索 TBL _ Bookinfo 表的记录

select * from TBL Bookinfo order by Publisher desc , PublishDate asc ;
  • LIMIT 关键字
    关于记录数的限量问题:
    1。对于一次性查询出的大量记录,不仅不便于阅读查看,还会浪费系统效率。
    2. SQL 中提供了一个关键字 LIMIT (限量子句),可以限定记录的数量,也可以指定查询从哪一条记录开始(通常用于分页)。
    语法:LIMIT [偏移量]记录数
    说明:
    1、记录数表示限定获取的最大记录数量。仅含此参数时,表示从第1条记录开始获取。
    2、偏移量用于设置从哪条记录开始,默认第1条记录的偏移量值为0,第2条记录的偏移量值为1,依次类推。
    3、 LIMIT 后使用无符号的整数。
     

【例1】查询借阅表中第6-10行记录。
 

select * from TBL Borrowlnfo limit 5,5


【例2】从 TBL _ Bookinfo 表中检索出最厚的三本书的书名、出版社及页数。
 

  1.  select BookName , Publisher , PageCount 
  2.  from TBL Bookinfo 
  3.  order by PageCount desc 
  4.  limit 3;-- limit 0,3

4.分组查询

HAVING 子句
统计筛选:对查询的数据分组时,可以利用 HAVING (条件子句)根据条件进行数据筛选,它与前面学习过的 WHERE (条件子句)功能相同,但是在实际运用时两者有一定的区别。
语法如下:
 SELECT [ DISTINCT ]字段列表 FROM 数据表名
[ WHERE 条件表达式]
 GROUP BY 字段名[ ASC | DESC ][...]
 HAVING 条件表达式;

【例3】从 TBL _ Bookinfo 表查询出各出版社的图书册数在2册以上的图书册数。
1.分组统计
 

  1. select publisher , count (*) from T8L Bookinfo 
  2.  group by publisher ;


2.分组统计筛选

  1. select publisher , count (*) from TBL _ Bookinfo 
  2.  group by publisher having count (*)>2;

  • GROUP  BY 多重分组
    多字段分组统计:按某个字段进行分组后,对已经分组的数据进行再次分组的操作。
    语法: GROUP BY 字段名1[ ASC | DESC ][,字段名2[ ASC | DESC ]…]
    说明:查询出的数据首先按照字段1进行分组(排序),再将字段1值相同的结果按照字段2进行分组(排序),依次类推。

    【例1】从 TBL _ User 表中统计各班的人数
     

    select class 班级, count (*)人数 from tbl _ user group by class ;


    【例2】从 TBL _ User 表中统计男女生人数
     

    select sex 性别, count (*)人数 from tbl _ user group by sex ;

二、多表查询

多表查询的三种方式

  • 连接查询(联接查询)

根据两个表或多个表的列之间的关系,从这些表中查询数据。

  • 嵌套查询(子查询)

指用一条 SELECT 语句作为另一条 SELECT 语句的一部分所构成的查询。

  • 合并结果集

指将多个查询结果集合并成一个结果集。

1、连接查询(联接查询)内连接语法
  内连接是最常见的连接查询,它根据匹配条件(连接条件)返回第一个表与第二个表所有匹配成功的记录,语法如下:

  1.  SELECT 输出项
  2.  FROM1[ INNER ] JOIN 表2 ON2.公共列=表1.公
  3. 共列;


 ON 用于指定内连接的连接条件。在不设置 ON 时,与交叉连接等价。升级到三表查询,语法如下:

  1.  SELECT 输出项
  2.  FROM1
  3. [ INNER ] JOIN 表2 ON2.公共列=表1.公共列
  4. [ INNER ] JOIN 表 ON3.公共列=表1|2.公共列;

【例1】查询出页数大于200页的图书索取号,书名,出版社,类别名
 

  1.  select a . BookID , a . BookName , a . Publisher , b . ClassName 
  2.  from TBL Bookinfo as a inner 
  3.  kClass as
  4.  on a . ClassID = b . ClassID 
  5.  where a . PageCount >200

【例2】查询尚未归还的借阅信息(包括:书名、借书时间、读者名)
 

  1.  select bo . BookName , br . BorrowDate , u . UserName 
  2.  from TBL _ Borrowinfo as br 
  3.  inner join TBL _ Bookinfo as bo 
  4.  on br . BooklD = bo . BookID 
  5.  inner join TBL User as u on br . UserlD = u . UserlD where br . isReturned =0

外连接

  • 左外连接

关键字: LEFT [ OUTER ] JOIN ON 
说明:关键字左侧的表的所有数据均显示,关键字右侧的表匹配内容显示
无对应内容使用 NULL 填充

【例1】使用左外连接
 

  1. SELECT f .*,O.*
  2.  FROM fruit f LEFT JOIN origin o ON f . oid = o . oid 
  • 右外连接

关键字: RIGHT [ OUTER ] JOIN ON 
说明:关键字右侧的表的所有数据均显示,关键字左侧的表匹配内容显示
无对应内容使用 NULL 填充

【例2】使用右外连接
 

  1. SELECT f .*,0.*
  2.  FROM fruit f RIGHT JOIN origin o ON f . oid = o . oid 

2、子查询
   一条 SELECT 语句嵌套在另一条语句内部,即为子查询。它可以嵌套在 SELECT 、 DELETE 、 INSERT INTO 、 CREATE TALBE 语句中;
(1)子查询按出现的位置分类: where 子查询、 from 子查询
 where 子查询:子查询作为查询条件
 from 子查询:子查询作为表
(2)通常情况下, where 子查询的语句都可以写成连接查询的语句
  子查询作为查询条件
1.标量子查询:子查询返回的结果是一个数据(惟一值),即一行一列。

语法: SELECT 主查询 WHERE 字段名=(标量子查询)#或其他比较运算符

2.列子查询:子查询返回的结果是一个字段符合条件的所有数据,即一列多行(集合)。

语法: SELECT 主查询 WHERE 字段名 in (列子查询)#或 not in ()

3.行子查询*:子查询的结果是一条包含多个字段的记录,即一行多列。
语法: SELECT 主查询 WHERE (指定字段名1,指定字段名2,…)=(行子查询)

子查询作为表
  表子查询( FROM 子查询)*:子查询的返回结果用于 FROM 数据源,它是一个符合二维表结构的数据,可以是一行一列、一列多行、一行多列或多行多列。

语法: SELECT 输出项 FROM ( SELECT 子查询)[ AS ]别名

【例1】显示各出版社最厚的图书出版社、页数、书名
主语句

 

 select Publisher , PageCount , bookname from LIBRARYO0.TBL BookInfo 


子查询
 

  1. select Publisher , MAX ( PageCount ) from LIBRARY00.TBL Bookinfo 
  2.  group by Publisher 

  删除使用子查询
【例2】删除"韦天华"的所有借书记录。
 

  1. delete from LIBRARYOO . TBL Borrowinfo 
  2.  where userid in ( select userid from LIBRARYO0.TBL_ User where UserName ='韦天华')

3、合并结果集
  联合查询是多表查询的一种方式,在保证多个 SELECT 语句的查询字段数相同情况下,合并多个查询的结果。 UNION 是实现联合查询的关键字。 UNION 运算符:把多个 SELECT 语句的返回结果组合到一个结果集中。
 SELECT 查询语句1
 UNION [ ALL ]
 SELECT 查询语句2

【例1】在 TBL Bookinfo 表中查询所有"清华大学出版社"或"电子工业出
版社"出版的书
#使用组合条件

 

  1.  SELECT bookname , author , publisher 
  2.  FROM TBL Bookinfo 
  3.  WHERE Publisher ='清华大学出版社' OR Publisher ='电子工业出版社';

#使用 UNION 
 

  1.  SELECT bookName , author , publisher 
  2.  FROM TBLBookinfoWHEREPublisher 
  3.  UNION 
  4.  SELECT bookName , author , publisher 
  5.  FROM TBL Bookinfo WHERE Publisher =* FIE ;

【例2】查询图书信息表中最厚五本书及最薄的五本书
#使用 union 
 

  1. ( SELECT * FROM tbl bookinfo ORDER BY pagecount DESC LIMIT 5) UNION 
  2. ( SELECT * FROM tbI bookinfo ORDER BY pagecount ASC LIMIT 5);

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/881031
推荐阅读
相关标签
  

闽ICP备14008679号