zoukankan      html  css  js  c++  java
  • SQL 查询

     源于(编写 SQL 查询)

    编写 SQL 查询:

    提取数据:SQL SELECT 查询

    SELECT ...FROM 子句

    SELECT * FROM Employees

    如果我们只需要特定列(通常情况下都是这样的),我们可以/应该在逗号分隔的列表中显式指定这些列,如下所示:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE 子句

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE City = 'London'

    如果您希望返回相反条件的员工,即返回那些不住在伦敦的员工,您应该编写以下语句:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE City <> 'London'

    不需要测试等于情况,您也可以使用所需的标准等于/不等于运算符。例如,若要获取其雇佣日期等于某个给定日期或大于该日期的员工列表,您可以编写以下语句:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE HireDate >= '1-july-1993'

    SELECT     EmployeeID, FirstName, LastName, HireDate, City

    FROM       Employees

    WHERE      (HireDate >= '1-june-1992') AND (HireDate <= '15-december-1993')

    请注意,SQL 也有一个特殊的 BETWEEN 运算符,用于检查某个值是否在两个值之间(包括等于两端的值)。这使我们可以将以前的查询重新编写为:

    SELECT    EmployeeID, FirstName, LastName, HireDate, City

    FROM      Employees

    WHERE     HireDate BETWEEN '1-june-1992' AND '15-december-1993'

    我们也可以使用 NOT 运算符来提取那些不在指定日期之间的行:

    SELECT    EmployeeID, FirstName, LastName, HireDate, City

    FROM      Employees

    WHERE     HireDate NOT BETWEEN '1-june-1992' AND '15-december-1993'

    使用 OR 运算符,则编写的语句如下所示:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE City = 'London' OR City = 'Seattle'

    但是,如果您希望与三个、四个或更多值进行比较,则上述方法就行不通了。在这种情况下,我们可以使用 IN 运算符来对一组值进行测试。如果我们希望查看 City 是否为 SeattleTacoma Redmond,我们可以编写以下语句:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE City IN ('Seattle', 'Tacoma', 'Redmond')

    有了 BETWEEN 运算符,我们也可以获得所含结果的相反条件下的结果,即查询那些 City 不在指定列表中的行:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE City NOT IN ('Seattle', 'Tacoma', 'Redmond')

    LIKE 运算使我们可以使用通配符来执行基本的模式匹配。在 Microsoft SQL Server 中,定义的通配符包含以下字符:

    通配符

    说明

    _(下划线)

    与任意单字符匹配

    %

    与包含一个或多个字符的字符串匹配

    [ ]

    与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。

    [^]

    与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。

    以下一些示例可以帮助阐明上述规则。

    WHERE FirstName LIKE '_im' 可以找到所有三个字母的、以 im 结尾的名字(例如,JimTim)。

    WHERE LastName LIKE '%stein' 可以找到姓以 stein 结尾的所有员工。

    WHERE LastName LIKE '%stein%' 可以找到姓中任意位置包括 stein 的所有员工。

    WHERE FirstName LIKE '[JT]im' 可以找到三个字母的、以 im 结尾并以 J T 开始的名字(即仅有 Jim Tim

    WHERE LastName LIKE 'm[^c]%' 可以找到以 m 开始的、后面的(第二个)字母不为 c 的所有姓。

    此处我们也选择使用 NOT 运算符:若要找到所有名字不以 M A 开始的员工,我们可以编写以下语句:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    WHERE (FirstName NOT LIKE 'M%') AND (FirstName NOT LIKE 'A%')

    ORDER BY 子句

    ORDER BY 子句包括了一个或多个用于指定排序顺序的列名。如果返回至第一批 SELECT 语句中的某条语句,我们可以用以下语句按 City 对其结果排序:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    ORDER BY City

    默认情况下,列的排序顺序为升序(从最小值到最大值)

    如果我们希望列的排序顺序为降序,我们可以在列名后包括 DESC 关键字。

    ORDER BY 子句支持使用多列。您可以包括以逗号分隔的多个列以按其排序:行将先按指定的第一列进行排序,然后再按指定的下一列进行排序。如果我们向 SELECT 子句添加 Country 字段并希望按 Country City 排序,我们可以编写以下语句:

    SELECT EmployeeID, FirstName, LastName, HireDate, Country, City FROM Employees

    ORDER BY Country, City DESC

    请注意,为了使语句显得更有趣,我们已经指定了 City 列的排序顺序为降序(从最大值到最小值)。Country 列的排序顺序仍为升序。通过编写以下语句我们可以更清楚地了解到这一点:

    SELECT EmployeeID, FirstName, LastName, HireDate, Country, City FROM Employees

    ORDER BY Country ASC, City DESC

    重要的是要注意要在 ORDER BY 子句中使用某一列时,并不需要在选定的(返回的)多个列中包括这一列。如果我们不需要查看/使用 Country 值,只是对于将其作为主排序字段感兴趣,可以编写以下查询:

    SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees

    ORDER BY Country ASC, City DESC

  • 相关阅读:
    Go
    Go
    Go
    Go
    Go
    Go
    爬虫常用相关库
    Go
    python基础第7天(day19)
    python基础第五天(day17)元组,集合,字符串操作 字符编码:
  • 原文地址:https://www.cnblogs.com/ahuang1118/p/329060.html
Copyright © 2011-2022 走看看