net实体数据模型Transact SQL(T-SQL)是Microsoft SQL Server数据库中使用的语言。如果使用Oracle,则使用PL / SQL。如果使用PostgreSQL,则使用PL / PGSQL。虽然这些语言是相似的,但它们具有对每个数据库平台进行专有的细微差别。如果您计划使用Microsoft SQL Server,则需要知道T-SQL。学习T-SQL是一项巨大的任务,但您可以开始一些基本指令并了解常用功能。

SQL Server新建?在UDEMY.com上了解数据库的T-SQL语言和代码。

变量和数据类型

如果您已与任何其他语言合作,则熟悉变量和数据类型。T-SQL使用类似于其他编码语言的变量和数据类型,但语法有点不同。SQL Server使用字符串,数字和对象,就像其他语言一样。以下是在编程T-SQL函数时使用的一些最常用的变量数据类型:

varchar(x):varchar是SQL Server的字符串数据类型。“x”定义变量或表列可以保持的字符数。

int:Integer在SQL Server中是相同的,因为它是其他编码语言。此数据类型为-2,147,483,648至2,147,483,648或4字节的整数。您还可以选择使用BIGINT或SMALL数据类型,这些数据类型也分别存储或多或少的字节。

漂浮:浮点数据类型为十进制数。当您需要的数据不仅仅是整数表示时,可以使用它来提高精度。您可以存储多达15位在您的十进制精度数据。您还可以使用decimal和money数据类型,它们也存储decimal数字,但具有不同的数值范围和精度能力。

char:Char存储特定数量的字符。“varchar”数据类型代表“变量字符”。CHAR数据类型不可变。如果设置列或变量的Char数据类型,则SQL Server将在数据库中存储指定的字符量。例如,如果使用“char(5)”作为数据类型,则SQL Server将返回空间字符如果您尝试存储少于五个字符的值。就像varchar一样,char将截断并返回一个错误,如果您尝试存储太多字符。

对象SQL Server有很多对象数据类型。旧版本的SQL Server不支持一些较新的类型。在编写SQL时,您将遇到的一些基本数据类型是table、uniqueidentifier、xml和cursor。表数据类型如您所想:一个包含行和列的表对象。uniqueidentifier数据类型是由服务器随机创建的32个字符。您可以使用“newwid”函数创建一个新的uniqueidentifier。Xml返回Xml数据,您可以使用它在前端应用程序中循环使用结构化数据,最后,游标是一个SQL Server对象,用于循环使用存储过程中的数据。

使用Udemy.com的课程将SQL Server作为初学者。

声明您的变量

您使用“声明”关键字创建新的T-SQL变量。以下代码在SQL Server中创建一个新变量:

声明@Name varchar(50)声明@OrderId int

上面的代码声明了两个变量。第一个名为@name,允许您将50个字符存储为字符串。第二个变量名为@OrderID,它与整数数据类型声明。您可以在T-SQL语句中声明任意数量的变量。这些变量是您在飞行中创建的存储过程或代码的本地。您可以使用动态SQL或存储过程,但是存储过程是首选。

SQL Server中的存储过程

存储过程类似于其他语言中的函数。SQL Server也有函数,但它们不是从前端代码调用T-SQL语句的标准。存储过程是作为对象存储在SQL Server中的预编译语句,这使得它们比创建动态SQL语句更快。这种速度在小型应用程序中并不明显,但在企业应用程序中却有很大的不同。

您还可以在存储过程中声明变量。以下代码是一个存储过程,其具有与上面代码相​​同的变量:

CREATE PROC GetOrder (@name varchar(50), @orderId int) AS select * from orders where orderId = @orderId GO

请注意,上述代码中没有申请声明。使用存储过程声明变量。您仍然可以在过程中使用它们。存储过程类似于其他编码语言方法。您传递它们参数,这些参数变量是本地的,只能在存储过程中访问。完成运行过程后,然后销毁变量。

在上面的过程中,传递了两个参数值:@name和@orderId。在本例中,只使用了一个参数,但是在一个存储过程中可以有数百条语句。在本例中,从orderId与传递的参数值匹配的orders表中选择数据。您可以看到存储过程比创建动态SQL更好。首先,它们更安全,可以防止SQL注入,而SQL注入是攻击网站的常见方式。其次,它们允许您只调用过程并传递参数,而不是在前端代码中使用很长的字符串行。使用传递给过程的变量,它们也是完全动态的,并根据这些传递的参数返回数据集或值。

基本交易和CRUD

创建(插入)、读取(选择)、更新和删除(CRUD)是您在SQL Server数据库上执行的四个主要操作。如果不能编辑和管理数据,数据库就毫无用处,而这正是使用CRUD的地方。

首先,INSERT语句创建(CRUD中的“C”)记录。以下代码是T-SQL的插入语句的示例:

插入客户(姓名,电子邮件)值('jennifer','[电子邮件受保护]”)

上面的语句将数据插入“客户”表中。您指定要使用数据填充的列。在此示例中,“名称”和“电子邮件”列填充了“值”部分中包含的数据。如果未指定列,则必须允许空缺,也必须为它们提供默认值。如果您尝试插入记录并不在无需默认的必定列中添加数据,则插入语句将失败,并且您会收到错误。

您还可以将数据从一个表插入另一个表中。以下代码从旧表中获取用户列表到客户表中:

插入客户(姓名,电子邮件)选择名称,来自Archive_Customer的电子邮件

上面的声明检索存档的客户列表,并将它们插入名为“客户”的表中。在此示例中,所有存档的客户都从Archive_Customer表中拔出,但您也可以使用Where子句来过滤记录。例如,也许您只想提出在特定日期范围内创建的记录。以下代码插入在两个日期之间创建的已归档客户:

插入客户(姓名,电子邮件)选择名称,来自archive_customer的电子邮件,其中create_date于'1/1/2014'和'2014/1/2014'之间

接下来,您拥有SELECT语句(CRUD首字母缩略词中的“R”),用于从表中读取和检索数据。选择语句可能是您使用数据时最常用的关键字。SELECT语句用于子查询和将数据集返回到前端代码的主要查询中。使用数据时,您还将运行Select语句以分析和查看您的数据。

以下T-SQL代码为特定客户选择订单列表:

从CustomerID = @CustomerID的顺序选择*

上面的选择语句与先前显示的插入语句不同。此语句更为动态,因为它使用变量。如果这是存储过程,则会将客户ID动态传递给名为@customerID的变量。该语句根据@CustomerID值选择一个订单信息列表,您可以假设是唯一的。只要这个变量是一个客户所唯一的,您只能看到一个特定客户的订单列表。

SELECT语句有几个字段和短语,您可以用于过滤记录。例如,您还可以使用“在”语句中。此语句允许您只返回另一个表中存在的记录。例如,采取以下代码:

select * from customer where customerId = @customerId and customerId in (select customerId from order)

在上面的声明中,如果有关联的订单记录,才会返回客户记录。最终,业务逻辑表示“仅当用户与我们订购时才返回此客户录取”。您还可以使用加入完成此任务。Join语句基于特定的主键将一个表与另一个表一起链接。以下代码具有与上面的选择语句相同的结果:

选择*来自Customer C加入OR ON C.CustomerID = O.CustomerID,其中C.CustomerID = @CustomerID

上述陈述也使用别名的概念。这些别名需要较少的键入,并且它们只需指向一个特定的表,只需一个字母,而不是输入每列的整个表名。如果未在连接查询中指定和别名或表名,并且两个表都具有相同的列名称,则T-SQL语句将返回一个错误,指示使用了模糊的列名。

接下来,使用UPDATE来编辑数据库内容。UPDATE语句中最重要的部分是“where”子句。where子句确定在运行语句时更新的记录。使用下面的代码:

更新客户Set First_Name = @firstname,其中customerId = @customerId

此语句编辑了具有匹配@CustomerID变量值的CustomerID的任何记录。如果您从语句中排除Where子句,则更新语句将更改客户表中的所有记录。您可能不想将所有记录更改为一个特定的名字,因此您使用Where子句来过滤掉您不想编辑的记录。在上面的声明中,假设CustomerID是一个唯一的列,因此该声明应该只更新一个记录。

您可以一次编辑多个列。下面的代码设置特定客户的姓和名列:

更新客户集first_name = @firstname, last_name = @lastname where customerId = @customerId

最后,您可能想要从表中删除记录。不建议使用Delete语句,因为取回它们的唯一方法是搜索数据库日志或从备份中恢复数据。大多数数据库管理员都要求您有一个活动列和非活动列。这意味着您只编辑这个特定的列,而保留其余的数据。如果你需要回去查看数据,你不需要筛选档案。相反,您只需使用T-SQL select语句查找非活动记录。

下面是DELETE T-SQL语句的示例代码:

来自客户= @customerid的客户删除

在上面的声明中,请注意,您未指定像其他语句的任何列。那是因为你删除了整个记录,因此删除了该记录中的所有列。在本声明中,Where子句也很重要。如果排除Where子句,则删除表中的每个记录。因此,重要的是要始终在Delete语句中记住Where子句,或者您被迫从存档或备份检索数据。

本文只是刷了T-SQL的表面。T-SQL是一种强大的语言,允许您对数据执行任何操作,并且它是前端应用程序的一个组成部分。您可以使用SQL用于移动应用程序,Web服务和常规网页,如电子商务或内容站点。使用存储过程,您可以始终具有可重复使用的代码,您可以传输到其他数据库并与多个应用程序一起使用。

在Udemy.com上拍摄介绍性SQL Server课程并更好地管理您的数据。

特色课程

Oracle SQL Developer:掌握其功能+提示和技巧

最近更新于2021年3月

畅销书
  • 3.5小时
  • 45讲座
  • 各级
4.5 (4,463)

像专业人士一样使用Oracle SQL Developer:学习将帮助你成为最高效的SQL Developer |的特性和技巧来自Standout-Dev Academy的Carlos

探索课程

数据库开发工具的学生也学习

赋予你的团队。引领行业。

通过Udemy for Business为您的组织订阅在线课程图书馆和数字学习工具。

请求演示