2、SQL查询-简单查询

简介: 2、SQL查询-简单查询

1、select查询语句

一、简介

SQL SELECT 语句

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

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

1. SQL SELECT 语法

SELECT 列名称 FROM 表名称

以及:

SELECT * FROM 表名称

- 注释:SQL 语句对大小写不敏感。SELECT 等效于 select。

二、示例

- “Persons” 表:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

1. 获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表)

SELECT LastName,FirstName FROM Persons

- 结果

 | LastName | FirstName |

 | — | — |

 | Adams | John |

 | Bush | George |

 | Carter | Thomas |

1. 从 “Persons” 表中选取所有的列。

使用符号 * 取代列的名称,就像这样:

SELECT * FROM Persons

- 结果:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

 2、distinct查询去重语句

  一、简介

 1. SQL SELECT DISTINCT 语句

 在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

 关键词 DISTINCT 用于返回唯一不同的值。

 1. 语法:

 SELECT DISTINCT 列名称 FROM 表名称

 二、示例

 - "Orders"表:

   | Company | OrderNumber |

   | — | — |

   | IBM | 3532 |

   | W3School | 2356 |

   | Apple | 4698 |

   | W3School | 6953 |

 1. 从 “Company” 列中选取所有的值,我们需要使用 SELECT 语句:

 SELECT Company FROM Orders

 - 结果

   | Company |

   | — |

   | IBM |

   | W3School |

   | Apple |

   | W3School |

 1. 从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:

 SELECT DISTINCT Company FROM Orders

 - 结果:

   | Company |

   | — |

   | IBM |

   | W3School |

   | Apple |

3、top返回指定记录数

一、简介

1. TOP 子句

TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

1. 用法

SELECT column_name(s)  FROM table_name  LIMIT number

二、示例

- 原始的Persons 表:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

 | 4 | Obama | Barack | Pennsylvania Avenue | Washington |

1. SQL TOP 实例

- 现在,我们希望从上面的 “Persons” 表中选取头两条记录。

- 我们可以使用下面的 SELECT 语句:

- SELECT TOP 2 * FROM Persons

- 结果:

 | **Id** | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

1. SQL TOP PERCENT 实例

- 现在,我们希望从上面的 “Persons” 表中选取 50% 的记录。

- 我们可以使用下面的 SELECT 语句:

- SELECT TOP 50 PERCENT * FROM Persons

- 结果:

 | **Id** | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 4、Alias别名

 1. SQL Alias

 - 表的 SQL Alias 语法

 - SELECT column_name(s)  FROM table_name  AS alias_name

 - 列的 SQL Alias 语法

 - SELECT column_name AS alias_name FROM table_name

 1. Alias 实例: 使用表名称别名

 - 假设我们有两个表分别是:“Persons” 和 “Product_Orders”。我们分别为它们指定别名 “p” 和 “po”。

 - 现在,我们希望列出 “John Adams” 的所有定单。

 - 我们可以使用下面的 SELECT 语句:

 - SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS po  WHERE p.LastName=‘Adams’ AND p.FirstName=‘John’

 - 不使用别名的 SELECT 语句:

 - SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName  FROM Persons, Product_Orders  WHERE Persons.LastName=‘Adams’ AND Persons.FirstName=‘John’

 - 从上面两条 SELECT 语句您可以看到,别名使查询程序更易阅读和书写。

 1. Alias 实例: 使用一个列名别名

 - 表 Persons:

   | Id | LastName | FirstName | Address| City |

   | — | — | — | — | — |

   | 1 | Adams | John | Oxford Street | London |

   | 2 | Bush | George | Fifth Avenue | New York |

   | 3 | Carter | Thomas | Changan Street | Beijing |

 - SQL:

 - SELECT LastName AS Family, FirstName AS Name  FROM Persons

 - 结果:

   | Family | Name |

   | — | — |

   | Adams | John |

   | Bush | George |

   | Carter | Thomas |

5、where筛选子句

1. WHERE 子句

- 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

- 语法

- SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

- 下面的运算符可在 WHERE 子句中使用:

 | 操作符 | 描述|

 | — | — |

 | = | 等于 |

 | <> | 不等于 |

 | > | 大于 |

 | < | 小于 |

 | >= | 大于等于 |

 | <= | 小于等于 |

 | BETWEEN | 在某个范围内 |

 | LIKE | 搜索某种模式 |

1. where子句对行记录进行过滤

- 常用算数运算符:+,-,*, / 对应 加,减,乘,除

- 常用逻辑运算符:and (而且);or(或者);not (非)

- 常用比较运算符:

- = 等于;!=或<>不等于;>大于;<小于;>=大于等于;<=小于等于;

- is null为空值;is not null为非空值;

- in (值列表) 在值列表中;not in (值列表)不在值列表中;

- between 低值 and 高值 (包含低值和高值)在低值和高值之间;

- not between 低值 and 高值 (包含低值和高值)不在低值和高值范围内;

- like ‘通配符’按照通配符进行匹配;

- 常用通配符:% 匹配0个或任意多个字符;_ 匹配任意1个字符

- 运算符优先级

- 各类运算符之间存在优先级,不用死记,只记住括号( )的优先级最高即可

- **注释:**在某些版本的 SQL 中,操作符 <> 可以写为 !=。

1. 使用 WHERE 子句

- 如果只希望选取居住在城市 “Beijing” 中的人,我们需要向 SELECT 语句添加 WHERE 子句:

- SELECT * FROM Persons WHERE City=‘Beijing’

- “Persons” 表

 | **LastName** | **FirstName** | **Address** | **City** | **Year** |

 | — | — | — | — | — |

 | Adams | John | Oxford Street | London | 1970 |

 | Bush | George | Fifth Avenue | New York | 1975 |

 | Carter | Thomas | Changan Street | Beijing | 1980 |

 | Gates | Bill | Xuanwumen 10 | Beijing | 1985 |

- 结果:

 | **LastName** | **FirstName** | **Address** | **City** | **Year** |

 | — | — | — | — | — |

 | Carter | Thomas | Changan Street | Beijing | 1980 |

 | Gates | Bill | Xuanwumen 10 | Beijing | 1985 |

1. 引号的使用

- 请注意,我们在例子中的条件值周围使用的是单引号。

- SQL 使用单引号来环绕**文本值**(大部分数据库系统也接受双引号)。如果是**数值**,请不要使用引号。

- 文本值:

- 这是正确的:

 SELECT * FROM Persons WHERE FirstName=‘Bush’

- 这是错误的:

 SELECT * FROM Persons WHERE FirstName=Bush

- 数值:

- 这是正确的:

 SELECT * FROM Persons WHERE Year>1965

- 这是错误的:

 SELECT * FROM Persons WHERE Year>‘1965’

6、and&or条件运算符

1. AND 和 OR 运算符

- AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

- 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

- 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

1. 原始的表 (用在例子中的):

 | LastName | FirstName | **Address** | **City** |

 | — | — | — | — |

 | Adams | John | Oxford Street | London |

 | Bush | George | Fifth Avenue | New York |

 | Carter | Thomas | Changan Street | Beijing |

 | Carter | William | Xuanwumen 10 | Beijing |

2. AND 运算符实例

- 使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:

- SELECT * FROM Persons WHERE FirstName=‘Thomas’ AND LastName=‘Carter’

- 结果:

 | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — |

 | Carter | Thomas | Changan Street | Beijing |

1. OR 运算符实例

- 使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:

- SELECT * FROM Persons WHERE firstname=‘Thomas’ OR lastname=‘Carter’

- 结果:

 | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — |

 | Carter | Thomas | Changan Street | Beijing |

 | Carter | William | Xuanwumen 10 | Beijing |

1. **结合 AND 和 OR 运算符**

- 我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

- SELECT * FROM Persons WHERE (FirstName=‘Thomas’ OR FirstName=‘William’) AND LastName=‘Carter’

- 结果:

 | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — |

 | Carter | Thomas | Changan Street | Beijing |

 | Carter | William | Xuanwumen 10 | Beijing |

7、like操作符

1. LIKE 操作符

- LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

- SQL LIKE 操作符语法

- SELECT column_name(s)  FROM table_name WHERE column_name LIKE pattern

1. 原始的表 (用在例子中的):

- Persons 表:

 | **Id** | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

1. LIKE 操作符实例

- 例子 1

- 现在,我们希望从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:

- 我们可以使用下面的 SELECT 语句:

- SELECT * FROM Persons

 WHERE City LIKE ‘N%’

- 提示:“%” 可用于定义通配符(模式中缺少的字母)。

- 结果集:

 | **Id** | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — | — |

 | 2 | Bush | George | Fifth Avenue | New York |

- 例子 2

- 接下来,我们希望从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:

- 我们可以使用下面的 SELECT 语句:

- SELECT * FROM Persons

 WHERE City LIKE ‘%g’

- 结果集:

 | **Id** | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — | — |

 | 3 | Carter | Thomas | Changan Street | Beijing |

- 例子 3

- 接下来,我们希望从 “Persons” 表中选取居住在包含 “lon” 的城市里的人:

- 我们可以使用下面的 SELECT 语句:

- SELECT * FROM Persons WHERE City LIKE ‘%lon%’

- 结果集:

 | **Id** | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

- 例子 4

- 通过使用 NOT 关键字,我们可以从 “Persons” 表中选取居住在**不包含** “lon” 的城市里的人:

- 我们可以使用下面的 SELECT 语句:

- SELECT * FROM Persons WHERE City NOT LIKE ‘%lon%’

- 结果集:

 | **Id** | **LastName** | **FirstName** | **Address** | **City** |

 | — | — | — | — | — |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

8、通配符

一、简介

1. SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

1. 在 SQL 中,可使用以下通配符:

 | 通配符 | 描述 |

 | — | — |

 | % | 替代一个或多个字符 |

 | _ | 仅替代一个字符 |

 | [charlist] | 字符列中的任何单一字符 |

 | [^charlist]

 或者

 [!charlist] | 不在字符列中的任何单一字符 |

二、示例

- 原始的Persons 表:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

1. 使用 % 通配符

从上面的 “Persons” 表中选取居住在以 “Ne” 开始的城市里的人:

```

SELECT * FROM Person  WHERE City LIKE 'Ne%'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 2 | Bush | George | Fifth Avenue | New York |

1. 从 “Persons” 表中选取居住在包含 “lond” 的城市里的人:

```

SELECT * FROM Persons WHERE City LIKE '%lond%'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

1. 使用 _ 通配符

从上面的 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:

```

SELECT * FROM Persons  WHERE FirstName LIKE '_eorge'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 2 | Bush | George | Fifth Avenue | New York |

1. 从 “Persons” 表中选取的这条记录的姓氏以 “C” 开头,然后是一个任意字符,然后是 “r”,然后是任意字符,然后是 “er”

```

SELECT * FROM Persons  WHERE LastName LIKE 'C_r_er'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 3 | Carter | Thomas | Changan Street | Beijing |

1. **使用 [charlist] 通配符**

从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:

```

SELECT * FROM Persons WHERE City LIKE '[ALN]%'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

1. 从上面的 “Persons” 表中选取居住的城市**不以** “A” 或 “L” 或 “N” 开头的人:

```

SELECT * FROM Persons WHERE City LIKE '[!ALN]%'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 3 | Carter | Thomas | Changan Street | Beijing |

9、in操作符

一、简介

1. IN 操作符

IN 操作符允许我们在 WHERE 子句中规定多个值。

1. SQL IN 语法

```

SELECT column_name(s)  FROM table_name  WHERE column_name IN (value1,value2,...)

```

二、示例

- Persons 表:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

1. 从上表中选取姓氏为 Adams 和 Carter 的人:

我们可以使用下面的 SELECT 语句:

```

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 3 | Carter | Thomas | Changan Street | Beijing |

10、between范围

一、简介

1. BETWEEN 操作符

操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

1. SQL BETWEEN 语法

```

SELECT column_name(s)  FROM table_name WHERE column_name   BETWEEN value1 AND value2

```

二、示例

1. 原始的表

- Persons 表:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

 | 3 | Carter | Thomas | Changan Street | Beijing |

 | 4 | Gates | Bill | Xuanwumen 10 | Beijing |

1. **BETWEEN 操作符实例**

- 如需以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人,请使用下面的 SQL:

```

SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 1 | Adams | John | Oxford Street | London |

 | 2 | Bush | George | Fifth Avenue | New York |

- 重要事项:不同的数据库对 BETWEEN…AND 操作符的处理方式是有差异的。某些数据库会列出介于 “Adams” 和 “Carter” 之间的人,但不包括 “Adams” 和 “Carter” ;某些数据库会列出介于 “Adams” 和 “Carter” 之间并包括 “Adams” 和 “Carter” 的人;而另一些数据库会列出介于 “Adams” 和 “Carter” 之间的人,包括 “Adams” ,但不包括 “Carter” 。

- 所以,请检查你的数据库是如何处理 BETWEEN…AND 操作符的!

1. 实例 2

- 如需使用上面的例子显示范围之外的人,请使用 NOT 操作符:

```

SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'

```

- 结果集:

 | Id | LastName | FirstName | Address | City |

 | — | — | — | — | — |

 | 3 | Carter | Thomas | Changan Street | Beijing |

 | 4 | Gates | Bill | Xuanwumen 10 | Beijing |

11、group by分组

一、简介

1. 合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。

2. GROUP BY 语句**

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

1. SQL GROUP BY 语法

```

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name

```

二、示例

- 下面这个 “Orders” 表:

 | O_Id | OrderDate | OrderPrice | Customer |

 | — | — | — | — |

 | 1 | 2008/12/29 | 1000 | Bush |

 | 2 | 2008/11/23 | 1600 | Carter |

 | 3 | 2008/10/05 | 700 | Bush |

 | 4 | 2008/09/28 | 300 | Bush |

 | 5 | 2008/08/06 | 2000 | Adams |

 | 6 | 2008/07/21 | 100 | Carter |

1. 查找每个客户的总金额(总订单)。

我们想要使用 GROUP BY 语句对客户进行组合。

```

SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer

```

- 结果集类似这样:

 | Customer | SUM(OrderPrice) |

 | — | — |

 | Bush | 2000 |

 | Carter | 1700 |

 | Adams | 2000 |

- 如果省略 GROUP BY 会出现什么情况:

SELECT Customer,SUM(OrderPrice) FROM Orders

- 结果集类似这样:

 | Customer | SUM(OrderPrice) |

 | — | — |

 | Bush | 5700 |

 | Carter | 5700 |

 | Bush | 5700 |

 | Bush | 5700 |

 | Adams | 5700 |

 | Carter | 5700 |

那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的 SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。“SUM(OrderPrice)” 返回一个单独的值(“OrderPrice” 列的总计),而 “Customer” 返回 6 个值(每个值对应 “Orders” 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。

1. GROUP BY 一个以上的列

我们也可以对一个以上的列应用 GROUP BY 语句,就像这样:

```

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders GROUP BY Customer,OrderDate

```

12、having分组后过滤

一、简介

1. **HAVING 子句**

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

1. SQL HAVING 语法

```

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value

```

# 二、示例

- 我们拥有下面这个 “Orders” 表:

 | O_Id | OrderDate | OrderPrice | Customer |

 | — | — | — | — |

 | 1 | 2008/12/29 | 1000 | Bush |

 | 2 | 2008/11/23 | 1600 | Carter |

 | 3 | 2008/10/05 | 700 | Bush |

 | 4 | 2008/09/28 | 300 | Bush |

 | 5 | 2008/08/06 | 2000 | Adams |

 | 6 | 2008/07/21 | 100 | Carter |

1. 查找订单总金额少于 2000 的客户。

```

SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000

```

- 结果集类似:

 | Customer | SUM(OrderPrice) |

 | — | — |

 | Carter | 1700 |

1. 查找客户 “Bush” 或 “Adams” 拥有超过 1500 的订单总金额。

```

SELECT Customer,SUM(OrderPrice) FROM Orders WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer HAVING SUM(OrderPrice)>1500

```

- 结果集:

 | Customer | SUM(OrderPrice) |

 | — | — |

 | Bush | 2000 |

 | Adams | 2000 |

13、order by排序

一、简介

1. **ORDER BY 语句**

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

二、示例

1. 原始的表 (用在例子中的):

- Orders 表:

 | Company | OrderNumber |

 | — | — |

 | IBM | 3532 |

 | W3School | 2356 |

 | Apple | 4698 |

 | W3School | 6953 |

1. 实例 1

以字母顺序显示公司名称:

`SELECT Company, OrderNumber FROM Orders ORDER BY Company`

- 结果:

 | Company | OrderNumber |

 | — | — |

 | Apple | 4698 |

 | IBM | 3532 |

 | W3School | 6953 |

 | W3School | 2356 |

1. 实例 2

以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

- 结果:

 | Company | OrderNumber |

 | — | — |

 | Apple | 4698 |

 | IBM | 3532 |

 | W3School | 2356 |

 | W3School | 6953 |

1. 实例 3

以逆字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

- 结果:

 | Company | OrderNumber |

 | — | — |

 | W3School | 6953 |

 | W3School | 2356 |

 | IBM | 3532 |

 | Apple | 4698 |

1. 实例 4

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

- 结果:

 | Company | OrderNumber |

 | — | — |

 | W3School | 2356 |

 | W3School | 6953 |

 | IBM | 3532 |

 | Apple | 4698 |

- **注意:**在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。

相关文章
|
21天前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
91 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
28天前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
36 8
|
1月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
59 4
|
1月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
1月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
144 10
|
1月前
|
SQL 关系型数据库 MySQL
|
2月前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
2月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
2月前
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
131 5
|
2月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言