T-SQL - 快速指南


T-SQL - 概述

1970 年代,IBM 开发了名为“SEQUEL”的产品,即结构化英语查询语言,后来 SEQUEL 更名为“SQL”,代表结构化查询语言。

1986年,SQL获得ANSI(美国国家标准协会)批准,1987年获得ISO(国际标准化组织)批准。

SQL是一种结构查询语言,是所有RDBMS产品的通用数据库语言。不同的RDBMS产品供应商通过为自己的RDBMS产品扩展SQL来开发自己的数据库语言。

T-SQL 代表 Transact Structure Query Language,它是 Microsoft 产品,是 SQL 语言的扩展。

例子

MS SQL Server - SQL\T-SQL

ORACLE-SQL\PL-SQL

T-SQL - 数据类型

SQL Server 数据类型是指定任何对象的数据类型的属性。SQL Server 中的每个列、变量和表达式都有相关的数据类型。创建表时可以使用这些数据类型。您可以根据需要为表列选择特定的数据类型。

SQL Server 提供了七类包括其他类别的数据类型供使用。

精确的数字类型

类型
大整数 -9,223,372,036,854,775,808 9,223,372,036,854,775,807
整数 -2,147,483,648 2,147,483,647
小整数 -32,768 32,767
小整数 0 255
少量 0 1
小数 -10^38 +1 10^38 –1
数字 -10^38 +1 10^38 –1
-922,337,203,685,477.5808 +922,337,203,685,477.5807
小钱 -214,748.3648 +214,748.3647

数字和小数是固定精度和小数位数的数据类型,并且在功能上是等效的。

近似数字类型

类型
漂浮 -1.79E+308 1.79E+308
真实的 -3.40E+38 3.40E+38

日期和时间类型

类型

日期时间(3.33 毫秒精度)

1753 年 1 月 1 日 9999 年 12 月 31 日

小日期时间(1 分钟精度)

1900 年 1 月 1 日 2079 年 6 月 6 日

日期(精确度为 1 天。在 SQL Server 2008 中引入)

一月 1, 0001 9999 年 12 月 31 日

datetimeoffset(100 纳秒精度。在 SQL Server 2008 中引入)

一月 1, 0001 9999 年 12 月 31 日

datetime2(100 纳秒精度。在SQL Server 2008中引入)

一月 1, 0001 9999 年 12 月 31 日

时间(100纳秒精度。在SQL Server 2008中引入)

00:00:00.0000000 23:59:59.9999999

字符串

先生编号 类型和描述
1

字符

固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。

2

varchar

可变长度非 Unicode 数据,最多 8,000 个字符。

3

varchar(最大)

最大长度为 231 个字符的可变长度非 Unicode 数据(在 SQL Server 2005 中引入)。

4

文本

可变长度非 Unicode 数据,最大长度为 2,147,483,647 个字符

Unicode 字符串

先生编号 类型和描述
1

恩查尔

固定长度的 Unicode 数据,最大长度为 4,000 个字符。

2

nvarchar

最大长度为 4,000 个字符的可变长度 Unicode 数据。

3

Nvarchar(最大)

最大长度为 2 30 个字符的可变长度 Unicode 数据(在 SQL Server 2005 中引入)。

4

文本

可变长度 Unicode 数据,最大长度为 1,073,741,823 个字符。

二进制字符串

先生编号 类型和描述
1

二进制

固定长度的二进制数据,最大长度为 8,000 字节。

2

瓦尔二进制

可变长度二进制数据,最大长度为 8,000 字节。

3

varbinary(最大)

可变长度二进制数据,最大长度为 2 31字节(在 SQL Server 2005 中引入)。

4

图像

可变长度二进制数据,最大长度为 2,147,483,647 字节。

其他数据类型

  • sql_variant - 存储各种 SQL Server 支持的数据类型的值,除了 text、ntext 和 timestamp。

  • 时间戳- 存储数据库范围内的唯一编号,每次更新行时都会更新该编号。

  • uniqueidentifier - 存储全局唯一标识符(GUID)。

  • xml - 存储 XML 数据。您可以将 XML 实例存储在列或变量中(在 SQL Server 2005 中引入)。

  • 光标- 对光标的引用。

  • table - 存储结果集以供以后处理。

  • hierarchyid - 一种可变长度的系统数据类型,用于表示层次结构中的位置(在 SQL Server 2008 中引入)。

T-SQL - 创建表

创建基本表涉及命名表并定义其列以及每列的数据类型。

SQL Server CREATE TABLE语句用于创建新表。

句法

以下是 CREATE TABLE 语句的基本语法 -

CREATE TABLE table_name( 
   column1 datatype, 
   column2 datatype, 
   column3 datatype, 
   ..... 
   columnN datatype, 
   PRIMARY KEY( one or more columns ));

CREATE TABLE 是告诉数据库系统你想要做什么的关键字。在这种情况下,您想要创建一个新表。表的唯一名称或标识符位于 CREATE TABLE 语句之后。然后括号中是定义表中每一列及其数据类型的列表。通过以下示例,语法将变得更容易理解。

可以使用 CREATE TABLE 语句和 SELECT 语句的组合来创建现有表的副本。您可以在使用另一个表创建表中查看完整的详细信息。

例子

在此示例中,让我们创建一个以 ID 作为主键的 CUSTOMERS 表,NOT NULL 是约束,表明在该表中创建记录时这些字段不能为 NULL -

CREATE TABLE CUSTOMERS( 
   ID   INT              NOT NULL, 
   NAME VARCHAR (20)     NOT NULL, 
   AGE  INT              NOT NULL, 
   ADDRESS  CHAR (25) , 
   SALARY   DECIMAL (18, 2),        
   PRIMARY KEY (ID));

您可以通过查看 SQL Server 显示的消息来验证表是否已成功创建,否则您可以使用以下命令 -

exec sp_columns CUSTOMERS

上述命令产生以下输出。

TABLE_QUALIFIER   TABLE_OWNER   TABLE_NAME   COLUMN_NAME   DATA_TYPE   TYPE_NAME
   PRECISION   LENGTH SCALE   RADIX   NULLABLE   REMARKS   COLUMN_DEF   SQL_DATA_TYPE 
   SQL_DATETIME_SUB   CHAR_OCTET_LENGTH   ORDINAL_POSITION   IS_NULLABLE   SS_DATA_TYPE
   
TestDB    dbo    CUSTOMERS   ID        4    int      10   4    0      10     0
   NULL   NULL   4   NULL    NULL      1    NO       56 
   
TestDB    dbo    CUSTOMERS   NAME      12   varchar  20   20   NULL   NULL   0
   NULL   NULL   12   NULL   20        2    NO       39
  
TestDB    dbo    CUSTOMERS   AGE       4    int      10   4    0      10     0
   NULL   NULL   4   NULL    NULL      3    NO       56 
 
TestDB    dbo    CUSTOMERS   ADDRESS   1    char     25   25   NULL   NULL   1
   NULL   NULL   1   NULL    25   4    YES  39  

TestDB    dbo    CUSTOMERS   SALARY    3    decimal  18   20   2      10     1
   NULL   NULL   3   NULL    NULL      5    YES      106 

您现在可以看到数据库中存在 CUSTOMERS 表,您可以使用它来存储与客户相关的所需信息。

T-SQL - 删除表

SQL Server DROP TABLE语句用于删除表定义以及该表的所有数据、索引、触发器、约束和权限规范。

注意- 使用此命令时必须小心,因为一旦删除表,表中的所有可用信息也将永远丢失。

句法

以下是 DROP TABLE 语句的基本语法 -

DROP TABLE table_name;

例子

让我们首先验证 CUSTOMERS 表,然后我们将其从数据库中删除 -

Exec sp_columns CUSTOMERS;

上述命令显示下表。

TABLE_QUALIFIER   TABLE_OWNER   TABLE_NAME   COLUMN_NAME   DATA_TYPE   TYPE_NAME
   PRECISION   LENGTH SCALE   RADIX   NULLABLE   REMARKS   COLUMN_DEF   SQL_DATA_TYPE 
   SQL_DATETIME_SUB   CHAR_OCTET_LENGTH   ORDINAL_POSITION   IS_NULLABLE   SS_DATA_TYPE
   
TestDB    dbo    CUSTOMERS   ID        4   int        10   4    0      10     0
   NULL   NULL   4   NULL    NULL      1   NO         56 
   
TestDB    dbo    CUSTOMERS   NAME      12  varchar    20   20   NULL   NULL   0
   NULL   NULL   12   NULL   20        2   NO         39
  
TestDB    dbo    CUSTOMERS   AGE       4   int        10   4    0      10     0
   NULL   NULL   4   NULL    NULL      3   NO         56 
 
TestDB    dbo    CUSTOMERS   ADDRESS   1   char       25   25   NULL   NULL   1
   NULL   NULL   1   NULL    25        4   YES        39  

TestDB    dbo    CUSTOMERS   SALARY   3   decimal     18   20   2      10     1
   NULL   NULL   3   NULL    NULL     5   YES         106 

CUSTOMERS 表在数据库中可用,所以让我们删除它。以下是相同的命令。

DROP TABLE CUSTOMERS; 
Command(s) completed successfully.

使用上面的命令,您将不会获得任何行。

Exec sp_columns CUSTOMERS; 
No rows\data will be displayed 

T-SQL - INSERT 语句

SQL Server INSERT INTO语句用于向数据库中的表添加新数据行。

句法

以下是 INSERT INTO 语句的两种基本语法。

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]   
VALUES (value1, value2, value3,...valueN); 

其中,column1、column2、...columnN 是表中要插入数据的列的名称。

如果要为表的所有列添加值,则无需在 SQL 查询中指定列名称。但请确保值的顺序与表中列的顺序相同。以下是 SQL INSERT INTO 语法 -

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

例子

以下语句将在 CUSTOMERS 表中创建六条记录 -

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
  
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );  

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );  

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 ); 
 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );  

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (6, 'Komal', 22, 'MP', 4500.00 );

句法

您可以使用第二种语法在 CUSTOMERS 表中创建记录,如下所示 -

INSERT INTO CUSTOMERS VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );

所有上述语句将在 CUSTOMERS 表中产生以下记录 -

ID  NAME       AGE         ADDRESS              SALARY 
1   Ramesh     32          Ahmedabad            2000.00 
2   Khilan     25          Delhi                1500.00 
3   kaushik    23          Kota                 2000.00 
4   Chaitali   25          Mumbai               6500.00 
5   Hardik     27          Bhopal               8500.00 
6   Komal      22          MP                   4500.00 
7   Muffy      24          Indore               10000.00 

使用另一个表填充一个表

您可以通过另一个表上的 SELECT 语句将数据填充到表中,前提是另一个表具有一组填充第一个表所需的字段。以下是语法 -

INSERT INTO first_table_name  
   SELECT column1, column2, ...columnN  
      FROM second_table_name 
      [WHERE condition];

T-SQL - SELECT 语句

SQL Server SELECT语句用于从数据库表中获取数据,并以结果表的形式返回数据。这些结果表称为结果集

句法

以下是 SELECT 语句的基本语法 -

SELECT column1, column2, columnN FROM table_name;

其中,column1、column2...是要获取其值的表的字段。如果您想获取该字段中的所有可用字段,则可以使用以下语法 -

SELECT * FROM table_name;

例子

考虑具有以下记录的 CUSTOMERS 表 -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00 

以下命令是一个示例,它将获取 CUSTOMERS 表中可用客户的 ID、姓名和薪水字段 -

SELECT ID, NAME, SALARY FROM CUSTOMERS; 

上述命令将产生以下输出。

ID  NAME          SALARY 
1   Ramesh        2000.00 
2   Khilan        1500.00 
3   kaushik       2000.00 
4   Chaitali      6500.00 
5   Hardik        8500.00 
6   Komal         4500.00 
7   Muffy         10000.00 

如果要获取 CUSTOMERS 表的所有字段,请使用以下查询 -

SELECT * FROM CUSTOMERS;

以上将产生以下输出。

ID  NAME       AGE       ADDRESS              SALARY 
1   Ramesh     32        Ahmedabad            2000.00 
2   Khilan     25        Delhi                1500.00 
3   kaushik    23        Kota                 2000.00 
4   Chaitali   25        Mumbai               6500.00 
5   Hardik     27        Bhopal               8500.00 
6   Komal      22        MP                   4500.00 
7   Muffy      24        Indore               10000.00 

T-SQL - UPDATE 语句

SQL Server UPDATE查询用于修改表中的现有记录。

您可以将 WHERE 子句与 UPDATE 查询一起使用来更新选定的行,否则所有行都会受到影响。

句法

以下是带有 WHERE 子句的 UPDATE 查询的基本语法 -

UPDATE table_name 
SET column1 = value1, column2 = value2...., columnN = valueN 
WHERE [condition];

您可以使用 AND 或 OR 运算符组合 N 个条件。

例子

考虑具有以下记录的 CUSTOMERS 表 -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00 

以下命令是一个示例,它将更新 ID 为 6 的客户的地址 -

UPDATE CUSTOMERS 
SET ADDRESS = 'Pune' 
WHERE ID = 6; 

CUSTOMERS 表现在将具有以下记录 -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        Pune                4500.00 
7   Muffy      24        Indore              10000.00 

如果要修改 CUSTOMERS 表中的所有 ADDRESS 和 SALARY 列值,则不需要使用 WHERE 子句。UPDATE 查询如下 -

UPDATE CUSTOMERS 
SET ADDRESS = 'Pune', SALARY = 1000.00;

CUSTOMERS 表现在将具有以下记录。

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Pune             1000.00 
2   Khilan     25        Pune             1000.00 
3   kaushik    23        Pune             1000.00 
4   Chaitali   25        Pune             1000.00 
5   Hardik     27        Pune             1000.00 
6   Komal      22        Pune             1000.00 
7   Muffy      24        Pune             1000.00 

T-SQL - 删除语句

SQL Server DELETE查询用于从表中删除现有记录。

您必须将 WHERE 子句与 DELETE 查询一起使用才能删除选定的行,否则所有记录都将被删除。

句法

以下是带有 WHERE 子句的 DELETE 查询的基本语法 -

DELETE FROM table_name 
WHERE [condition]; 

您可以使用 AND 或 OR 运算符组合 N 个条件。

例子

考虑具有以下记录的 CUSTOMERS 表 -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

以下命令是一个示例,它将删除 ID 为 6 的客户 -

DELETE FROM CUSTOMERS 
WHERE ID = 6;

CUSTOMERS 表现在将具有以下记录。

ID  NAME       AGE       ADDRESS              SALARY 
1   Ramesh     32        Ahmedabad            2000.00 
2   Khilan     25        Delhi                1500.00 
3   kaushik    23        Kota                 2000.00 
4   Chaitali   25        Mumbai               6500.00 
5   Hardik     27        Bhopal               8500.00 
7   Muffy      24        Indore               10000.00 

如果要删除 CUSTOMERS 表中的所有记录,则不需要使用 WHERE 子句。DELETE 查询如下 -

DELETE FROM CUSTOMERS;

CUSTOMERS 表现在不会有任何记录。

T-SQL - WHERE 子句

MS SQL Server WHERE子句用于在从单个表获取数据或连接多个表时指定条件。

如果满足给定条件,则仅从表中返回特定值。您必须使用 WHERE 子句来过滤记录并仅获取必要的记录。

WHERE 子句不仅用在 SELECT 语句中,还用在 UPDATE、DELETE 语句等中,我们将在后续章节中讨论。

句法

以下是带有 WHERE 子句的 SELECT 语句的基本语法 -

SELECT column1, column2, columnN  
FROM table_name 
WHERE [condition]

您可以使用比较或逻辑运算符(如 >、<、=、LIKE、NOT 等)指定条件。下面的示例将阐明这个概念。

例子

考虑具有以下记录的 CUSTOMERS 表 -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

以下命令是从 CUSTOMERS 表中获取工资大于 2000 的 ID、姓名和工资字段的示例。

SELECT ID, NAME, SALARY  
FROM CUSTOMERS 
WHERE SALARY > 2000;

上述命令将产生以下输出。

ID  NAME       SALARY 
4   Chaitali   6500.00 
5   Hardik     8500.00 
6   Komal      4500.00 
7   Muffy      10000.00

以下命令是一个示例,它将从 CUSTOMERS 表中获取名为“Hardik”的客户的 ID、姓名和薪水字段。重要的是要注意,所有字符串都应在单引号 ('') 内给出,而数值应在不带任何引号的情况下给出,如上例所示 -

SELECT ID, NAME, SALARY  
FROM CUSTOMERS 
WHERE NAME = 'Hardik';

上述命令将产生以下输出。

ID  NAME     SALARY 
5   Hardik   8500.00 

T-SQL - LIKE 子句

MS SQL Server LIKE子句用于使用通配符运算符将值与相似值进行比较。有两个通配符与 LIKE 运算符结合使用 -

  • 百分号 (%)
  • 下划线 (_)

百分号代表零个、一个或多个字符。下划线代表单个数字或字符。这些符号可以组合使用。

句法

以下是 % 和 _ 的基本语法。

SELECT *\column-list FROM table_name 
WHERE column LIKE 'XXXX%' 
 
or   

SELECT *\column-list FROM table_name 
WHERE column LIKE '%XXXX%'  

or  

SELECT *\column-list FROM table_name 
WHERE column LIKE 'XXXX_'  

or  

SELECT *\column-list FROM table_name 
WHERE column LIKE '_XXXX'  

or  

SELECT  *\column-list FROM table_name 
WHERE column LIKE '_XXXX_' 

您可以使用 AND 或 OR 运算符组合 N 个条件。XXXX 可以是任何数字或字符串值。

例子

以下是一些示例,显示 WHERE 部分具有带有“%”和“_”运算符的不同 LIKE 子句。

先生编号 声明及说明
1

工资像“200%”

查找以 200 开头的任何值

2

工资如“%200%”

查找任意位置包含 200 的任意值

3

工资像“_00%”

查找第二个和第三个位置有 00 的任何值

4

工资像“2_%_%”

查找以 2 开头且长度至少为 3 个字符的任何值

5

工资类似于“%2”

查找以 2 结尾的任何值

6

工资像“_2%3”

查找第二个位置有 2 且以 3 结尾的所有值

7

工资像“2___3”

查找以 2 开头并以 3 结尾的五位数字中的任何值

考虑具有以下记录的 CUSTOMERS 表。

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

以下命令是一个示例,它将显示 CUSTOMERS 表中 SALARY 以 200 开头的所有记录。

SELECT * FROM CUSTOMERS 
WHERE SALARY LIKE '200%'; 

上述命令将产生以下输出。

ID   NAME     AGE     ADDRESS       SALARY 
1    Ramesh   32      Ahmedabad     2000.00 
3    kaushik  23      Kota          2000.00

T-SQL - ORDER BY 子句

MS SQL Server ORDER BY 子句用于根据一列或多列按升序或降序对数据进行排序。某些数据库默认按升序对查询结果进行排序。

句法

以下是 ORDER BY 子句的基本语法。

SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

您可以在 ORDER BY 子句中使用多个列。确保无论您使用什么列进行排序,该列都应该位于列列表中。

例子

考虑具有以下记录的 CUSTOMERS 表 -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

以下命令是一个示例,它将按 NAME 和 SALARY 升序对结果进行排序。

SELECT * FROM CUSTOMERS 
   ORDER BY NAME, SALARY 

上述命令将产生以下输出。

ID  NAME       AGE       ADDRESS           SALARY 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
3   kaushik    23        Kota              2000.00 
2   Khilan     25        Delhi             1500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 
1   Ramesh     32        Ahmedabad         2000.00 

以下命令是一个示例,它将按 NAME 降序对结果进行排序。

SELECT * FROM CUSTOMERS 
   ORDER BY NAME DESC

上述命令将产生以下结果 -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00
7   Muffy      24        Indore             10000.00  
6   Komal      22        MP                 4500.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00
5   Hardik     27        Bhopal             8500.00
4   Chaitali   25        Mumbai             6500.00  

T-SQL - GROUP BY 子句

SQL Server GROUP BY子句与 SELECT 语句配合使用,将相同的数据分组。

GROUP BY 子句位于 SELECT 语句中的 WHERE 子句之后,位于 ORDER BY 子句之前。

句法

以下是 GROUP BY 子句的基本语法。GROUP BY 子句必须位于 WHERE 子句中的条件之后,并且必须位于 ORDER BY 子句(如果使用)之前。

SELECT column1, column2 
FROM table_name 
WHERE [ conditions ] 
GROUP BY column1, column2 
ORDER BY column1, column2 

例子

考虑 CUSTOMERS 表具有以下记录 -

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

如果你想知道每个客户的工资总额,那么下面将是 GROUP BY 查询。

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME;

上述命令将产生以下输出。

NAME        sum of salary 
Chaitali    6500.00 
Hardik      8500.00 
kaushik     2000.00 
Khilan      1500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      2000.00

现在让我们考虑以下 CUSTOMERS 表,其中包含以下具有重复名称的记录。

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 

如果我们想知道每个客户的工资总额,那么下面将是 GROUP BY 查询。

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME 

上述命令将产生以下输出。

NAME        sum of salary 
Hardik      8500.00 
kaushik     8500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      3500.00 

T-SQL - DISTINCT 子句

MS SQL Server DISTINCT关键字与 SELECT 语句结合使用,以消除所有重复记录并仅获取唯一记录。

可能存在这样的情况:表中存在多个重复记录。在获取此类记录时,仅获取唯一记录而不是获取重复记录更有意义。

句法

以下是 DISTINCT 关键字消除重复记录的基本语法。

SELECT DISTINCT column1, column2,.....columnN  
FROM table_name 
WHERE [condition] 

例子

考虑具有以下记录的 CUSTOMERS 表。

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

让我们看看下面的 SELECT 查询如何返回重复的工资记录。

SELECT SALARY FROM CUSTOMERS 
   ORDER BY SALARY 

上面的命令将产生以下输出,其中工资 2000 出现两次,这是原始表中的重复记录。

SALARY 
1500.00 
2000.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

现在让我们在上面的 SELECT 查询中使用 DISTINCT 关键字并查看结果。

SELECT DISTINCT SALARY FROM CUSTOMERS 
   ORDER BY SALARY 

上面的命令产生以下输出,其中没有任何重复的条目。

SALARY 
1500.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00 

T-SQL - 连接表

MS SQL Server Joins子句用于组合数据库中两个或多个表中的记录。JOIN 是一种通过使用两个表中通用的值来组合两个表中的字段的方法。

考虑以下两个表,(a) CUSTOMERS 表如下 -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00 

(b) 另一个表是 ORDERS,如下 -

OID  DATE                       CUSTOMER_ID        AMOUNT 
100  2009-10-08 00:00:00.000    3                  1500.00 
101  2009-11-20 00:00:00.000    2                  1560.00 
102  2009-10-08 00:00:00.000    3                  3000.00 
103  2008-05-20 00:00:00.000    4                  2060.00 

让我们在 SELECT 语句中连接这两个表,如下所示 -

SELECT ID, NAME, AGE, AMOUNT 
   FROM CUSTOMERS, ORDERS 
   WHERE  CUSTOMERS.ID = ORDERS.CUSTOMER_ID 
OR 
SELECT A.ID, A.NAME, A.AGE, B.AMOUNT 
   FROM CUSTOMERS A inner join  ORDERS B on A.ID = B.Customer_ID 

上述命令将产生以下输出。

ID   NAME      AGE    AMOUNT 
2    Khilan    25     1560.00 
3    kaushik   23     1500.00 
3    kaushik   23     3000.00 
4    Chaitali  25     2060.00 

值得注意的是,连接是在 WHERE 子句中执行的。可以使用多种运算符来连接表,例如 =、<、>、<>、<=、>=、!=、BETWEEN、LIKE 和 NOT;它们都可以用来连接表。然而,最常见的运算符是等号。

MS SQL Server 连接类型 -

MS SQL Server 中有不同类型的联接可用 -

  • INNER JOIN - 当两个表中存在匹配时返回行。

  • LEFT JOIN - 返回左表中的所有行,即使右表中没有匹配项。

  • RIGHT JOIN - 返回右表中的所有行,即使左表中没有匹配项。

  • FULL JOIN - 当其中一个表中有匹配项时返回行。

  • SELF JOIN - 用于将表与其自身连接起来,就好像该表是两个表一样,临时重命名 MS SQL Server 语句中的至少一个表。

  • CARTESIAN JOIN - 返回两个或多个连接表中记录集的笛卡尔积。

T-SQL - 子查询

查询内部查询嵌套查询是另一个 SQL Server 查询中的查询并嵌入 WHERE 子句中。子查询用于返回将在主查询中用作条件的数据,以进一步限制要检索的数据。

子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句以及 =、<、>、>=、<=、IN、BETWEEN 等运算符一起使用。

子查询必须遵循一些规则 -

  • 必须将子查询括在括号中。

  • 子查询必须包含 SELECT 子句和 FROM 子句。

  • 子查询可以包含可选的 WHERE、GROUP BY 和 HAVING 子句。

  • 子查询不能包含 COMPUTE 或 FOR BROWSE 子句。

  • 仅当包含 TOP 子句时才可以包含 ORDER BY 子句。

  • 您最多可以嵌套 32 层子查询。

使用 SELECT 语句的子查询

句法

子查询最常与 SELECT 语句一起使用。以下是基本语法。

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

例子

考虑具有以下记录的 CUSTOMERS 表。

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

让我们将以下子查询与 SELECT 语句一起应用。

SELECT *  
   FROM CUSTOMERS
   WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)

上述命令将产生以下输出。

ID  NAME       AGE       ADDRESS          SALARY 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
7   Muffy      24        Indore           10000.00 

使用 INSERT 语句的子查询

子查询也可以与 INSERT 语句一起使用。INSERT 语句使用从子查询返回的数据插入到另一个表中。子查询中选定的数据可以使用任何字符、日期或数字函数进行修改。

句法

以下是基本语法。

INSERT INTO table_name [ (column1 [, column2 ]) ] 
   SELECT [ *|column1 [, column2 ] 
   FROM table1 [, table2 ] 
   [ WHERE VALUE OPERATOR ]

例子

考虑一个与 CUSTOMERS 表具有相似结构的表 CUSTOMERS_BKP。以下是将完整 CUSTOMERS 表复制到 CUSTOMERS_BKP 的语法。

INSERT INTO CUSTOMERS_BKP 
   SELECT * FROM CUSTOMERS  
   WHERE ID IN (SELECT ID FROM CUSTOMERS)

带有 UPDATE 语句的子查询

子查询可以与 UPDATE 语句结合使用。将子查询与 UPDATE 语句结合使用时,可以更新表中的单列或多列。

句法

以下是基本语法。

UPDATE table 
SET column_name = new_value 
[ WHERE OPERATOR [ VALUE ] 
   (SELECT COLUMN_NAME 
   FROM TABLE_NAME) 
   [ WHERE) ] 

例子

假设我们有可用的 CUSTOMERS_BKP 表,它是 CUSTOMERS 表的备份。

以下命令示例将 CUSTOMERS 表中 AGE 大于或等于 27 的所有客户的 SALARY 更新 0.25 倍。

UPDATE CUSTOMERS 
   SET SALARY = SALARY * 0.25 
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )

这将影响两行,最终 CUSTOMERS 表将具有以下记录。

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           500.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              2125.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00 

带有 DELETE 语句的子查询

子查询可以与 DELETE 语句结合使用,就像与上述任何其他语句结合使用一样。

句法

以下是基本语法。

DELETE FROM TABLE_NAME 
[ WHERE OPERATOR [ VALUE ] 
   (SELECT COLUMN_NAME 
   FROM TABLE_NAME) 
   [ WHERE) ] 

例子

假设我们有可用的 CUSTOMERS_BKP 表,它是 CUSTOMERS 表的备份。

以下命令示例从 CUSTOMERS 表中删除 AGE 大于或等于 27 的所有客户的记录。

DELETE FROM CUSTOMERS 
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )

这将影响两行,最终 CUSTOMERS 表将具有以下记录。

ID  NAME       AGE       ADDRESS          SALARY 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00  
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

T-SQL - 存储过程

MS SQL Server存储过程用于通过将代码存储在数据库中来节省一次又一次编写代码的时间,并通过传递参数来获取所需的输出。

句法

以下是创建存储过程的基本语法。

Create procedure <procedure_Name> 
As 
Begin 
<SQL Statement> 
End 
Go

例子

考虑具有以下记录的 CUSTOMERS 表。

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

以下命令是一个示例,它将从 Testdb 数据库中的 CUSTOMERS 表中获取所有记录。

CREATE PROCEDURE SelectCustomerstabledata 
AS 
SELECT * FROM Testdb.Customers 
GO

上述命令将产生以下输出。

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 

T-SQL - 事务

事务是针对数据库执行工作单元。事务是以逻辑顺序完成的工作单元或序列,无论是由用户手动方式还是由某种数据库程序自动完成。

事务是对数据库的一个或多个更改的传播。例如,如果您正在创建一条记录或更新一条记录或从表中删除一条记录,那么您正在对表执行事务。控制事务以确保数据完整性并处理数据库错误非常重要。

实际上,您会将许多 SQL 查询组合到一个组中,并将所有这些查询作为事务的一部分一起执行。

交易的属性

事务具有以下四个标准属性,通常由缩写词 ACID 指代 -

  • Atomics性- 确保工作单元内的所有操作均成功完成;否则,事务将在故障点中止,并且之前的操作将回滚到之前的状态。

  • 一致性- 确保数据库在成功提交事务后正确更改状态。

  • 隔离- 使事务能够独立运行且彼此透明。

  • 持久性- 确保已提交事务的结果或效果在系统发生故障时仍然存在。

交易控制

有以下命令用于控制事务 -

  • COMMIT - 保存更改。

  • ROLLBACK - 回滚更改。

  • SAVEPOINT - 在事务组中创建要回滚的点。

  • SET TRANSACTION - 在事务上放置名称。

事务控制命令仅与 DML 命令 INSERT、UPDATE 和 DELETE 一起使用。创建表或删除表时不能使用它们,因为这些操作会自动提交到数据库中。

为了在 MS SQL Server 中使用事务控制命令,我们必须使用“begin tran”或 begin transaction 命令开始事务,否则这些命令将不起作用。

提交命令

COMMIT 命令是事务命令,用于将事务调用的更改保存到数据库。此命令将自上次 COMMIT 或 ROLLBACK 命令以来的所有事务保存到数据库。

句法

以下是 COMMIT 命令的语法。

COMMIT; 

例子

考虑具有以下记录的 CUSTOMERS 表。

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 

以下命令示例将从表中删除年龄 = 25 的记录,然后提交数据库中的更改。

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25 
COMMIT 

结果,表中的两行将被删除,并且 SELECT 语句将产生以下输出。

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00
3   kaushik    23        Kota              2000.00
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 

回滚命令

ROLLBACK 命令是用于撤消尚未保存到数据库的事务的事务命令。此命令只能用于撤消自上次发出 COMMIT 或 ROLLBACK 命令以来的事务。

句法

以下是 ROLLBACK 命令的语法。

ROLLBACK

例子

考虑具有以下记录的 CUSTOMERS 表。

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

以下命令示例将从表中删除年龄 = 25 的记录,然后回滚数据库中的更改。

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25; 
ROLLBACK

因此,删除操作不会影响表,并且 SELECT 语句将产生以下结果。

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

保存点命令

SAVEPOINT 是事务中的一个点,您可以将事务回滚到某个点,而无需回滚整个事务。

句法

以下是 SAVEPOINT 命令的语法。

SAVE TRANSACTION SAVEPOINT_NAME

该命令仅用于在事务语句中创建 SAVEPOINT。ROLLBACK 命令用于撤消一组事务。

以下是回滚到 SAVEPOINT 的语法。

ROLLBACK TO SAVEPOINT_NAME

在以下示例中,我们将从 CUSTOMERS 表中删除三个不同的记录。我们必须在每次删除之前创建一个 SAVEPOINT,以便我们可以随时回滚到任何 SAVEPOINT,将相应的数据返回到其原始状态。

例子

考虑具有以下记录的 CUSTOMERS 表 -

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

以下是一系列操作 -

Begin Tran 
SAVE Transaction SP1 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 1  
1 row deleted. 
SAVE Transaction SP2 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 2 
1 row deleted.
SAVE Transaction SP3 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 3 
1 row deleted.

三个删除已经发生,但是,我们改变了主意并决定回滚到我们标识为 SP2 的保存点。因为 SP2 是在第一次删除后创建的,所以最后两次删除被撤消 -

ROLLBACK Transaction SP2 
Rollback complete. 

请注意,自从我们回滚到 SP2 以来,仅发生了第一次删除。

SELECT * FROM CUSTOMERS 

已选择 6 行。

ID  NAME       AGE       ADDRESS          SALARY 
2   Khilan     25        Delhi        1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

设置事务命令

SET TRANSACTION 命令可用于启动数据库事务。该命令用于指定后续事务的特征。

句法

以下是 SET TRANSACTION 的语法。

SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>

T-SQL - 索引

索引是数据库搜索引擎可用来加速数据检索的特殊查找表。简单地说,索引是指向表中数据的指针。数据库中的索引与书末的索引非常相似。

例如,如果您想引用一本书中讨论某个主题的所有页面,您首先引用索引,该索引按字母顺序列出所有主题,然后引用一个或多个特定页码。

索引有助于加快 SELECT 查询和 WHERE 子句的速度,但会减慢 UPDATE 和 INSERT 语句的数据输入速度。可以创建或删除索引,而不会影响数据。

创建索引涉及 CREATE INDEX 语句,该语句允许您命名索引、指定表以及要索引的列或列,以及指示索引是按升序还是降序排列。

索引也可以是唯一的,类似于 UNIQUE 约束,因为索引可以防止有索引的列或列组合中出现重复条目​​。

创建索引命令

以下是 CREATE INDEX 的基本语法。

句法

CREATE INDEX index_name ON table_name

单列索引

单列索引是仅基于表的一个列创建的索引。以下是基本语法。

句法

CREATE INDEX index_name 
ON table_name (column_name)

例子

CREATE INDEX singlecolumnindex 
ON customers (ID)

唯一索引

唯一索引不仅用于性能,还用于数据完整性。唯一索引不允许将任何重复值插入到表中。以下是基本语法。

句法

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

例子

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

综合指数

复合索引是表的两列或多列上的索引。以下是基本语法。

句法

CREATE INDEX index_name on table_name (column1, column2) 

例子

CREATE INDEX compositeindex 
on customers (NAME, ID)

无论是创建单列索引还是复合索引,请考虑在查询的 WHERE 子句中经常使用的列作为过滤条件。

如果仅使用一列,则应选择单列索引。如果 WHERE 子句中经常使用两个或多个列作为过滤器,则复合索引将是最佳选择。

隐式索引

隐式索引是在创建对象时由数据库服务器自动创建的索引。系统会自动为主键约束和唯一约束创建索引。

删除索引命令

可以使用 MS SQL SERVER DROP 命令删除索引。删除索引时应小心,因为性能可能会降低或提高。

句法

以下是基本语法。

DROP INDEX tablename.index_name

何时避免使用索引?

尽管索引旨在增强数据库的性能,但有时应该避免使用索引。以下指南表明何时应重新考虑索引的使用 -

  • 索引不应该用在小表上。

  • 频繁、大批量更新或插入操作的表不应建立索引。

  • 不应在包含大量 NULL 值的列上使用索引。

  • 不应该对经常操作的列建立索引。

T-SQL - 函数

MS SQL Server 有许多内置函数来对字符串或数字数据执行处理。以下是所有有用的 SQL 内置函数的列表 -

T-SQL - 字符串函数

MS SQL Server 字符串函数可以应用于字符串值,或者返回字符串值或数字数据。

以下是带有示例的字符串函数列表。

ASCII()

Ascii 代码值将作为字符表达式的输出。

例子

以下查询将给出给定字符的 Ascii 代码值。

Select ASCII ('word') 

字符()

字符将作为给定 Ascii 代码或整数的输出。

例子

以下查询将给出给定整数的字符。

Select CHAR(97)

NCHAR()

Unicode 字符将作为给定整数的输出。

例子

以下查询将给出给定整数的 Unicode 字符。

Select NCHAR(300)

CHARINDEX()

给定搜索表达式的起始位置将作为给定字符串表达式的输出。

例子

以下查询将给出给定字符串表达式“KING”的“G”字符的起始位置。

Select CHARINDEX('G', 'KING')

左边()

给定字符串的左侧部分直到指定的字符数将作为给定字符串的输出。

例子

以下查询将为给定字符串“WORLD”提供如上所述的 4 个字符数的“WORL”字符串。

Select LEFT('WORLD', 4)

正确的()

给定字符串的右侧部分直到指定的字符数将作为给定字符串的输出。

例子

以下查询将为给定字符串“INDIA”提供前面提到的 3 个字符的“DIA”字符串。

Select RIGHT('INDIA', 3)

子串()

基于起始位置值和长度值的字符串的一部分将作为给定字符串的输出。

例子

以下查询将给出我们提到的“WOR”、“DIA”、“ING”字符串(1,3)、(3,3)和(2,3),分别作为给定字符串“WORLD”的起始值和长度值、“印度”和“国王”。

Select SUBSTRING ('WORLD', 1,3) 
Select SUBSTRING ('INDIA', 3,3) 
Select SUBSTRING ('KING', 2,3)

LEN()

字符数将作为给定字符串表达式的输出。

例子

以下查询将为“HELLO”字符串表达式提供 5。

Select LEN('HELLO') 

降低()

小写字符串将作为给定字符串数据的输出。

例子

以下查询将为“SQLServer”字符数据提供“sqlserver”。

Select LOWER('SQLServer') 

上()

大写字符串将作为给定字符串数据的输出。

例子

以下查询将为“SqlServer”字符数据提供“SQLSERVER”。

Select UPPER('SqlServer')

LTRIM()

删除前导空格后,字符串表达式将作为给定字符串数据的输出。

例子

以下查询将为“WORLD”字符数据提供“WORLD”。

Select LTRIM('   WORLD')

RTRIM()

删除尾随空格后,字符串表达式将作为给定字符串数据的输出。

例子

以下查询将为“INDIA”字符数据提供“INDIA”。

Select RTRIM('INDIA   ') 

代替()

替换所有出现的特定字符串后,字符串表达式将作为给定字符串数据的输出