首页 > 数据库 >数据库查询总结

数据库查询总结

时间:2024-06-30 17:59:15浏览次数:3  
标签:总结 customer name 数据库 查询 子句 WHERE id SELECT

 select语句

SELECT 语句用于从数据库中选取数据。

结果被存储在一个结果表中,称为结果集。

select语句语法格式

SELECT[ALL | DISTINCT] 输出表达式,...
    [FROM 表名1[ , 表名2 ]..... ]            /*FROM子句*/

    [WHERE 条件]                             /*WHERE子句*/

    [GROUP BY {列名|表达式|列编号}
        [ASC|DESC], ...]                     /*GROUP子句*/  

    [HAVING  条件]                            /*HAVING子句*/  

    [ORDER BY {列名|表达式|列编号}
        [ASC|DESC], ...]                      /*ORDER BY子句*/  

    [LIMIT {[偏移量,]行数|行数OFFSET偏移量}]    /*LIMIT子句*/
    

1 FROM子句

FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,之间用逗号分隔。

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。

1.1 FROM子句基本用法

SELECT 字段名1, 字段名2, … FROM 表名;

1.2 SELECT FROM语句示例

SELECT * FROM tbl_bookinfo;
/*查询tbl_bookinfo里所有列*/

SELECT name,score FROM students;
/*查询students表里的name列和score列*/

2 WHERE子句

WHERE 子句用于提取那些满足指定条件的记录。

2.1WHERE子句基本用法

SELECT 字段名 FROM 表名 WHERE 条件表达式

2.2WHERE子句示例

SELECT * FROM student WHERE address = '内蒙古自治区'
/*查询所有addre为内蒙古自治区的字段*/

SELECT 学号,课号,成绩1+成绩2 AS 总成绩 
    FROM student
    WHERE 成绩1*0.7+成绩2*0.3 >= 90
/*也可以加上关系运算符*/

3 GROUP BY子句

GROUP BY子句主要用于以下两个方面

数据分组:通过指定要分组的列或表达式,可以将查询结果按照指定的分组标准进行分组。这对于数据分析和生成报告非常有用,可以根据不同的分组条件来汇总数据

聚合计算:在GROUP BY子句中,通常会结合使用聚合函数(如SUM、COUNT、AVG等)对每个分组的数据进行计算。这使得我们可以在每个分组上执行统计、汇总等操作

GROUP BY 子句需要和 SELECT 语句一起使用

如果有 WHERE 子句,那么 WHERE 子句需要放在 GROUP BY 子句之前

如果有 ORDER BY 子句,那么 ORDER BY 子句需要放在 GROUP 子句之后

3.1 GROUP BY基本用法

SELECT 字段名1,字段名2 FROM 表名 GROUP BY 字段名

 3.2GROUP BY示例

某个员工信息表结构和数据如下
id  name  dept  salary  edlevel  hiredate 
      1 张三 开发部 2000 3 2009-10-11
      2 李四 开发部 2500 3 2009-10-01
      3 王五 设计部 2600 5 2010-10-02
      4 王六 设计部 2300 4 2010-10-03
      5 马七 设计部 2100 4 2010-10-06
      6 赵八 销售部 3000 5 2010-10-05
      7 钱九 销售部 3100 7 2010-10-07
      8 孙十 销售部 3500 7 2010-10-06 

SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
查询结果如下:
      DEPT  MAXIMUM 
      开发部 2500
      设计部 2600
      销售部 3500

4 HAVING子句

HAVING子句的位置位于GROUP BY子句之后和ORDER BY子句之前。它可以使用聚合函数、列名或表达式作为条件,来过滤分组。

4.1HAVING子句基本用法

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING condition;

/*
参数说明:
column1:要检索的列。
aggregate_function(column2):一个聚合函数,例如SUM、COUNT、AVG等,应用于column2的值。
table_name:要从中检索数据的表。
GROUP BY column1:根据column1列的值对数据进行分组。
HAVING condition:一个条件,用于筛选分组的结果。只有满足条件的分组会包含在结果集中。
*/

5 ORDER BY子句

MySQL 表中使用 SELECT 语句来读取数据。

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

MySQL ORDER BY(排序) 语句可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。

5.1ORDER BY子句基本用法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;
/*
参数说明:
column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
table_name 是你要从中查询数据的表的名称。
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ... 
是用于指定排序顺序的子句。ASC 表示升序(默认),DESC 表示降序。
*/

6 LIMIT子句

在SELECT语句中使用LIMIT子句来约束结果集中的行数。LIMIT子句接受一个或两个参数。两个参数的值必须为零或正整数。

6.1 LIMIT子句基本用法

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];

/*
参数说明:
column1, column2, ... 是你想要选择的列的名称,如果使用 * 表示选择所有列。
table_name 是你要从中查询数据的表的名称。
WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行。
ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。
LIMIT number 是一个可选的子句,用于限制返回的行数。
*/

多表连接

若一个查询同时涉及两个或两个以上的表, 则称之为连接查询(在FROM子句中体现)。 参与连接的表可有多个,但连接操作在两个表之间进行,即两两连接。

1 INNER JOIN内连接

获取两个表中字段匹配关系的记录。

1.2基本用法

SELECT column1, column2, ...
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;
/*
参数说明:
column1, column2, ... 是你要选择的列的名称,如果使用 * 表示选择所有列。
table1, table2 是要连接的两个表的名称。
table1.column_name = table2.column_name 是连接条件,指定了两个表中用于匹配的列。
*/

1.3使用表别名 

SELECT a.order_id, b.customer_name
FROM orders AS a
INNER JOIN customers AS b ON a.customer_id = b.customer_id;

1.4多表 INNER JOIN

SELECT orders.order_id, customers.customer_name, products.product_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id;

1.5使用 WHERE 子句进行过滤

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
WHERE orders.order_date >= '2023-01-01';

2 LEFT JOIN左连接

LEFT JOIN 返回左表的所有行,并包括右表中匹配的行,如果右表中没有匹配的行,将返回 NULL 值

2.1 基本用法

SELECT column1, column2, ...
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

2.2 使用表别名

SELECT c.customer_id, c.customer_name, o.order_id
FROM customers AS c
LEFT JOIN orders AS o ON c.customer_id = o.customer_id;

2.3 多表 LEFT JOIN

SELECT customers.customer_id, customers.customer_name, orders.order_id, products.product_name
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
LEFT JOIN order_items ON orders.order_id = order_items.order_id
LEFT JOIN products ON order_items.product_id = products.product_id;

2.3 使用 WHERE 子句进行过滤

SELECT customers.customer_id, customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
WHERE orders.order_date >= '2023-01-01' OR orders.order_id IS NULL;

3 RIGHT JOIN  右链接

RIGHT JOIN 返回右表的所有行,并包括左表中匹配的行,如果左表中没有匹配的行,将返回 NULL 值

3.1 基本用法

SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;

/*
其余和左连接类似
*/

子查询 

子查询或称为内部查询、嵌套查询,指的是在 SQLite 查询中的 WHERE 子句中嵌入查询语句。

一个 SELECT 语句的查询结果能够作为另一个语句的输入值。

子查询通常与 SELECT 语句一起使用。

1 基本用法

SELECT column_name [, column_name ]
FROM   table1 [, table2 ]
WHERE  column_name OPERATOR
      (SELECT column_name [, column_name ]
      FROM table1 [, table2 ]
      [WHERE])

标签:总结,customer,name,数据库,查询,子句,WHERE,id,SELECT
From: https://blog.csdn.net/m0_56438335/article/details/140082317

相关文章

  • PTA题目集7~8的总结性Blog
    前言:对于我这种水平的学生来说本次的7-8次PTA的难度之大令我无从下手,况且之前的第6次PTA就已经让我望而止步了,更别提这两次在第6次PTA题目集之上再次进行迭代的题目了。再加上面临的期末周,大量学科等着我去复习,以至于没时间去钻磨PTA的改动,哭死,连老师都说单单是第8次题目集的题目......
  • 达梦数据库
    SQL语言使用手册-官方文档DML(DataManipulationLanguage)函数字符串函数INSTR语法:INSTR(str1,str2[,n[,m]])返回str1中包含str2的特定位置(存在的话,最小是1)。INSTR从str1的左边开始搜索,开始位置是n,如果n为负数,则搜索从str1的最右边开始,当搜索到str2的第m......
  • 51 stm32开发关于keil mdk的软件配置常用设置 以及 可能会出现的报错总结
    首先左上角那个魔术棒中,是关于下载烧录软件编译的option选择我们点开他进入target需要我们配置的就两处,1:Xtal:填8.0mhz只是因为要填个数代表stm32(外部高速晶振)或(其他晶振)作为主频时钟的时钟源时的晶振大小方便烧录时对一些代码(对芯片的时钟要求高的代码)的自动编译,实际上......
  • 【SQL】⼀条 SQL 查询语句的执⾏顺序
    SQL查询语句的执行顺序与编写查询语句的顺序不同,理解SQL查询的执行顺序有助于更好地优化和调试SQL查询。下面是SQL查询语句的基本的执行顺序:FROM:确定数据源,包含表连接(JOIN)操作。ON:定义连接条件(对于JOIN子句)。WHERE:过滤数据,排除不符合条件的行。GROUPBY:对......
  • 详解 ClickHouse 的查询优化
    一、单表查询1.使用prewhere替代whereprewhere和where语句的作用相同,都是用来过滤数据prewhere和where语句的不同在于:prewhere只支持MergeTree族系列引擎的表prewhere首先会读取指定的列数据来判断数据过滤,等待数据过滤之后再读取select声明的列字段......
  • MySQL数据库管理
    一:使用MySQL数据库1:查看数据库结构[root@localhost~]#mysql-uroot-ppwd123mysql>showdatabases;mysql>usemysqlmysql>showtables;mysql>describeuser;mysql>select*fromuser\G;备注:information_schema数据库:保存着关于MySQL服务器所维护的所......
  • MySQL数据库管理
    一、使用MySQL数据库1.1查看数据库结构1.查看当前服务器中的数据库2.查看当前数据库中有哪些表3.查看表的结构        数据库目前标准的指令集是SQL。SQL是StructuredQueryLanguage的缩写,即结构化查询语言。它是1974年由Boyce和Chamberlin提出来......
  • 纯真IP库查询方法(2024-6-19更新qqwry.dat后无法查询,修改代码)
    2024-6-19更新qqwry.dat后使用pthon38那篇文章里的代码无法查询,使用pythom2的代码,修改之后python3可用,将文件放到工程里查询,不用Lib库里的。修改后的qqwry.py如下,python3可用。coding=utf-8forPython2.7为https://pypi.python.org/pypi/qqwry-py3的Python2版版本:2017-10-......
  • 库分表后复杂查询的应对之道:基于DTS实时性ES宽表构建技术实践
    1问题域业务发展的初期,我们的数据库架构往往是单库单表,外加读写分离来快速的支撑业务,随着用户量和订单量的增加,数据库的计算和存储往往会成为我们系统的瓶颈,业界的实践多数采用分而治之的思想:分库分表,通过分库分表应对存系统读写性能瓶颈和存储瓶颈;分库分表帮我们解决问题的同时......
  • 使用CEntOS 7.9系统管理MySQL数据库
    一:使用MySQL数据库1:查看数据库结构[root@localhost~]#mysql-uroot-ppwd123mysql>showdatabases;mysql>usemysqlmysql>showtables;mysql>describeuser;mysql>select*fromuser\G;备注:information_schema数据库:保存着关于MySQL服务器所维护的所有其......