教程:编写 Transact-SQL 语句
第 1 课:创建数据库对象 本课将介绍如何创建数据库,在数据库中创建表,然后访问表中的数据并对其进行更改。由于本课是对使用 Transact-SQL 的简介,因此它未使用或说明为这些语句提供的许多选项。 可以使用下列方法编写 Transact-SQL 语句并将其提交到数据
第 1 课:创建数据库对象本课将介绍如何创建数据库,在数据库中创建表,然后访问表中的数据并对其进行更改。由于本课是对使用 Transact-SQL 的简介,因此它未使用或说明为这些语句提供的许多选项。
可以使用下列方法编写 Transact-SQL 语句并将其提交到数据库引擎:
-
通过使用 SQL Server Management Studio。本教程假定您使用的是 Management Studio,但是也可以使用 Management Studio Express(可以从 Microsoft Download Center (Microsoft 下载中心)免费下载)。
-
通过使用 sqlcmd 实用工具。
-
通过从您创建的应用程序进行连接。
代码以相同方式和相同权限在数据库引擎上执行,而不管您如何提交代码语句。
若要在 Management Studio 中运行 Transact-SQL 语句,请打开 Management Studio 并连接到 SQL Server 数据库引擎 的实例。如果您不熟悉 Management Studio,请查看 教程中的前两项任务。
创建数据库(教程)与许多 Transact-SQL 语句一样,CREATE DATABASE 语句具有一个必需参数:数据库的名称。CREATE DATABASE 还具有许多可选参数,如希望放置数据库文件的磁盘位置。在您执行不带可选参数的 CREATE DATABASE 时,SQL Server 使用其中许多参数的默认值。本教程使用的可选语法参数非常少。
创建数据库
-
在查询编辑器窗口中,键入以下代码,但不要执行它:
复制代码CREATE DATABASE TestData GO
로그인 후 복사 -
使用指针选择词语 CREATE DATABASE,再按 F1。应该会打开 SQL Server 联机丛书中的 CREATE DATABASE 主题。您可以使用此方法查找 CREATE DATABASE 以及在本教程中使用的其他语句的完整语法。
-
在查询编辑器中,按 F5 以执行语句并创建名为 TestData 的数据库。
在您创建数据库时,SQL Server 制作 model 数据库的副本,并将该副本重命名为数据库名称。除非您将初始大小很大的数据库指定为可选参数,否则此操作应该只需要几秒钟。
![]() |
---|
在单个批处理中提交多条语句时,可以用关键字 GO 分隔各语句。当批处理只包含一条语句时,GO 是可选的。 |
-
创建表(教程)
若要创建表,您必须提供该表的名称以及该表中每个列的名称和数据类型。指出每个列中是否允许空值,也是一种很好的做法。
大多数表有一个主键,主键由表的一列或多列组成。主键始终是唯一的。数据库引擎 将强制实施以下限制:表中的任何主键值都不能重复。
有关数据类型的列表以及每种数据类型的说明的链接,请参阅数据类型 (Transact-SQL)。
注意
数据库引擎可安装为区分大小写或不区分大小写。如果数据库引擎区分大小写进行安装,则对象名必须始终具有相同的大小写。例如,名为 OrderData 的表与名为 ORDERDATA 的表是不同的表。如果数据库引擎按不区分大小写进行安装,则这两个表名被视为同一个表,而且该名称只能使用一次。
创建数据库以包含新表
-
将下面的代码输入到查询编辑器窗口中。
复制代码USE master; GO --Delete the TestData database if it exists. IF EXISTS(SELECT * from sys.databases WHERE name='TestData') BEGIN DROP DATABASE TestData; END --Create a new database called TestData. CREATE DATABASE TestData; --Press the F5 key to execute the code and create the database.
로그인 후 복사
将查询编辑器连接切换到 TestData 数据库
-
在查询编辑器窗口中,键入以下代码,并执行它以更改与 TestData 数据库的连接。
复制代码USE TestData GO
로그인 후 복사
创建表
-
在查询编辑器窗口中,键入以下代码,并执行它以创建一个名为 Products 的简单表。该表中各列的名称为 ProductID、ProductName、Price 和 ProductDescription。ProductID 列是表的主键。int、varchar(25)、money 和 text 都是数据类型。当插入或更改行时,只有 Price 和 ProductionDescription 列可以不包含数据。此语句包含称为架构的可选元素 (dbo.)。架构是拥有表的数据库对象。如果您是管理员,则 dbo 是默认架构。dbo 代表数据库所有者。
复制代码CREATE TABLE dbo.Products (ProductID int PRIMARY KEY NOT NULL, ProductName varchar(25) NOT NULL, Price money NULL, ProductDescription text NULL) GO
로그인 후 복사
您已经创建 Products 表,可以通过使用 INSERT 语句向该表中插入数据了。插入数据后,将通过使用 UPDATE 语句更改行的内容。您将使用 UPDATE 语句的 WHERE 子句,以限制对单个行的更新。这四条语句将输入以下数据。
ProductID
ProductName
价格
ProductDescription
1
Clamp
12.48
Workbench clamp
50
Screwdriver
3.17
Flat head
75
Tire Bar
Tool for changing tires.
3000
3mm Bracket
.52
基本语法如下:INSERT、表名、列的列表、VALUES,然后是要插入的值的列表。如果某行的前面有两个连字符,则指示该行为注释,编译器将忽略其文本。在这种情况下,注释说明允许的语法变体。
向表中插入数据
-
执行以下语句,将一行插入到在上一个任务中创建的 Products 表中。基本语法如下:
复制代码-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GO
로그인 후 복사 -
以下语句显示如何通过在字段列表(在圆括号中)中和值列表中均切换 ProductID 和 ProductName 的位置,更改提供参数的顺序。
复制代码-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GO
로그인 후 복사 -
以下语句演示,只要值是按正确顺序列出的,列的名称就是可选的。此语法很常见,但是建议不要使用它,因为其他人了解您的代码可能会更困难。为 Price 列指定了 NULL,因为还不知道此产品的价格。
复制代码-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GO
로그인 후 복사 -
只要在默认架构中访问和更改表,架构名称就是可选的。由于 ProductDescription 列允许 Null 值,而且没有提供值,因此可以从语句中完全删除 ProductDescription 列的名称和值。
复制代码-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3mm Bracket', .52) GO
로그인 후 복사
更新 products 表
-
键入并执行以下 UPDATE 语句,将第二种产品的 ProductName 从 Screwdriver 更改为 Flat Head Screwdriver。
复制代码UPDATE dbo.Products SET ProductName = 'Flat Head Screwdriver' WHERE ProductID = 50 GO
로그인 후 복사
使用 SELECT 语句可以读取表中的数据。SELECT 语句是最重要的 Transact-SQL 语句之一,其语法有许多变体。在本教程中,您将使用五个简单版本。
读取表中的数据
-
键入并执行以下语句以读取 Products 表中的数据。
复制代码-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GO
로그인 후 복사 -
您可以使用星号选择表中的所有列。这通常用于即席查询中。您应该在永久代码中提供列的列表,以便语句将返回预测列,即使稍后将新列添加到表中也是如此。
复制代码-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GO
로그인 후 복사 -
可以省略不希望返回的列。列将按列出它们的顺序返回。
复制代码-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GO
로그인 후 복사 -
使用 WHERE 子句可以限制返回给用户的行。
复制代码-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID
로그인 후 복사 -
您可以在返回列中的值时使用它们。以下示例对 Price 列执行数学运算。除非通过使用 AS 关键字提供一个名称,否则以此方式更改的列将没有名称。
第 2 课:配置数据库对象的权限授予用户访问数据库的权限涉及三个步骤。首先,创建登录名。使用登录名,用户可以连接到SQL Server 数据库引擎。然后将登录名配置为指定数据库中的用户。最后,授予该用户访问数据库对象的权限。本课介绍了这三个步骤,并介绍了如何将视图和存储过程创建为对象。
本课程包含以下主题:
-
创建登录名
-
授予访问数据库的权限
-
创建视图和存储过程
-
授予访问数据库对象的权限
-
摘要:配置数据库对象的权限
-
若要访问数据库引擎,用户需要有登录名。登录名可以按 Windows 帐户或 Windows 组成员表示用户身份,登录名也可以是仅存在于 SQL Server 中的 SQL Server 登录名。应该尽可能使用 Windows 身份验证。
创建视图和存储过程既然 Mary 可以访问 TestData 数据库,您可能希望创建一些数据库对象(如视图和存储过程),再将它们的访问权限授予 Mary。视图是存储的 SELECT 语句,而存储过程是以批处理方式执行的一条或多条 Transact-SQL 语句。
视图像表那样进行查询,但不接受参数。存储过程比视图更复杂。存储过程可以同时具有输入参数和输出参数,并可以包括控制代码流的语句,如 IF 和 WHILE 语句。将存储过程用于数据库中的所有重复操作,是一个良好的编程做法。
在此示例中,您将使用 CREATE VIEW 创建一个视图,该视图仅选择 Products 表中的两列。然后,您将使用 CREATE PROCEDURE 创建一个存储过程,该存储过程接受价格参数,并仅返回价格小于指定参数值的那些产品。
创建视图
-
执行以下语句创建一个非常简单的视图,该视图执行 Select 语句,并将产品的名称和价格返回给用户。
复制代码CREATE VIEW vw_Names AS SELECT ProductName, Price FROM Products; GO
로그인 후 복사
测试视图
-
视图的处理方式与表类似。使用 SELECT 语句访问视图。
复制代码SELECT * FROM vw_Names; GO
로그인 후 복사
创建存储过程
-
以下语句创建一个名为 pr_Names 的存储过程,接受名为 @VarPrice、数据类型为 money 的输入参数。该存储过程打印与输入参数(已从 money 数据类型更改为 varchar(10) 字符数据类型)串联的语句 Products less than。然后,该存储过程对视图执行 SELECT 语句,将输入参数作为 WHERE 子句的一部分进行传递。这将返回价格小于输入参数值的所有产品。
复制代码CREATE PROCEDURE pr_Names @VarPrice money AS BEGIN -- The print statement returns text to the user PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10)); -- A second statement starts here SELECT ProductName, Price FROM vw_Names WHERE Price
로그인 후 복사
测试存储过程
-
若要测试存储过程,请键入并执行以下语句。存储过程应该返回在第 1 课中向 Products 表中输入的、其价格小于 10.00 的两个产品的名称。
复制代码EXECUTE pr_Names 10.00; GO
로그인 후 복사
-
-
授予访问数据库的权限
现在 Mary 具有访问此 SQL Server 实例的权限,但是没有访问数据库的权限。在您授权她作为数据库用户之前,她甚至无权访问其默认数据库 TestData。
若要授予 Mary 访问权限,请切换到 TestData 数据库,再使用 CREATE USER 语句将她的登录名映射到名为 Mary 的用户。
在数据库中创建用户
-
键入并执行下列语句(将 computer_name 替换为您计算机的名称),以授予 Mary 访问 TestData 数据库的权限。
复制代码USE [TestData]; GO CREATE USER [Mary] FOR LOGIN [computer_name\Mary]; GO
로그인 후 복사现在,对于 SQL Server 和 TestData 数据库,Mary 都具有访问权限。
若要删除在本教程中创建的所有对象,您只需删除数据库即可。但是,在本主题中,您将完成下列步骤执行与教程中每项操作相反的操作。
删除权限和对象
-
在删除对象之前,请确保使用正确的数据库:
复制代码USE TestData; GO
로그인 후 복사 -
使用 REVOKE 语句删除 Mary 对存储过程的执行权限:
复制代码REVOKE EXECUTE ON pr_Names FROM Mary; GO
로그인 후 복사 -
使用 DROP 语句删除 Mary 对 TestData 数据库的访问权限:
复制代码DROP USER Mary; GO
로그인 후 복사 -
使用 DROP 语句删除 Mary 对此 SQL Server 2005 实例的访问权限。
复制代码DROP LOGIN [<computer_name>\Mary]; GO </computer_name>
로그인 후 복사 -
使用 DROP 语句删除存储过程 pr_Names:
复制代码DROP PROC pr_Names; GO
로그인 후 복사 -
使用 DROP 语句删除视图 vw_Names:
复制代码DROP View vw_Names; GO
로그인 후 복사 -
使用 DELETE 语句删除 Products 表中的所有行:
复制代码DELETE FROM Products; GO
로그인 후 복사 -
使用 DROP 语句删除 Products 表:
复制代码DROP Table Products; GO
로그인 후 복사 -
正使用 TestData 数据库时,无法删除该数据库;因此,请首先将上下文切换到其他数据库,再使用 DROP 语句删除 TestData 数据库:
复制代码USE MASTER; GO DROP DATABASE TestData; GO
로그인 후 복사
“编写 Transact-SQL 语句”教程到此结束。请记住,本教程只是简要概述,它并未介绍所用语句的所有选项。设计和创建有效的数据库结构以及配置对数据的安全访问,需要比本教程中显示的数据库更复杂的数据库。
-

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











여름에 비가 내린 후에는 아름답고 마법 같은 특별한 날씨 장면인 무지개를 자주 볼 수 있습니다. 이 역시 사진에서 볼 수 있는 보기 드문 장면으로, 매우 포토제닉하다. 무지개가 나타나는 데에는 몇 가지 조건이 있습니다. 첫째, 공기 중에 충분한 물방울이 있고, 둘째, 태양이 낮은 각도로 빛납니다. 따라서 비가 그친 후 오후에 무지개를 보는 것이 가장 쉽습니다. 그러나 무지개의 형성은 날씨, 빛, 기타 조건의 영향을 크게 받기 때문에 일반적으로 짧은 시간 동안만 지속되며, 가장 잘 볼 수 있고 촬영할 수 있는 시간은 더욱 짧습니다. 그러면 무지개를 만났을 때 어떻게 제대로 기록하고 고품질로 사진을 찍을 수 있습니까? 1. 무지개를 찾아보세요. 위에서 언급한 조건 외에도 무지개는 대개 햇빛 방향으로 나타납니다. 즉, 태양이 서쪽에서 동쪽으로 빛날 경우 무지개가 동쪽에서 나타날 확률이 높습니다.

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

가상시장의 확대는 가상화폐 유통과 불가분의 관계이며, 당연히 가상화폐 이체 문제와도 불가분의 관계에 있습니다. 일반적인 전송 오류는 주소 복사 오류이고, 또 다른 오류는 체인 선택 오류입니다. 가상 화폐를 잘못된 체인으로 이체하는 것은 여전히 까다로운 문제이지만, 이체 작업 경험이 부족하여 초보자가 잘못된 체인을 이체하는 경우가 많습니다. 잘못된 링크는 제3자 플랫폼을 통해 검색할 수 있지만 성공하지 못할 수도 있습니다. 다음으로, 가상자산을 더 잘 관리할 수 있도록 에디터가 자세히 알려드립니다. 잘못된 가상 화폐 체인을 검색하는 방법은 무엇입니까? 잘못된 체인으로 전송된 가상 화폐를 검색하는 과정은 복잡하고 어려울 수 있지만 전송 세부 정보를 확인하고 거래소 또는 지갑 제공업체에 문의하고 개인 키를 호환되는 지갑으로 가져오고 크로스 체인 브리지 도구를 사용하여

Go 표준 라이브러리 데이터베이스/sql 패키지를 통해 MySQL, PostgreSQL 또는 SQLite와 같은 원격 데이터베이스에 연결할 수 있습니다. 데이터베이스 연결 정보가 포함된 연결 문자열을 생성합니다. sql.Open() 함수를 사용하여 데이터베이스 연결을 엽니다. SQL 쿼리 및 삽입 작업과 같은 데이터베이스 작업을 수행합니다. 리소스를 해제하기 위해 defer를 사용하여 데이터베이스 연결을 닫습니다.

Golang의 데이터베이스 콜백 기능을 사용하면 다음을 달성할 수 있습니다. 지정된 데이터베이스 작업이 완료된 후 사용자 정의 코드를 실행합니다. 추가 코드를 작성하지 않고도 별도의 함수를 통해 사용자 정의 동작을 추가할 수 있습니다. 삽입, 업데이트, 삭제, 쿼리 작업에 콜백 함수를 사용할 수 있습니다. 콜백 함수를 사용하려면 sql.Exec, sql.QueryRow, sql.Query 함수를 사용해야 합니다.

일상 촬영에서 많은 사람들이 이런 상황에 직면합니다. 카메라에 있는 사진은 정상적으로 노출되는 것처럼 보이지만 사진을 내보낸 후에는 사진의 실제 형태가 카메라의 렌더링과 거리가 멀고 노출 문제가 있다는 것을 알게 됩니다. 환경 조명, 화면 밝기 및 기타 요인의 영향을 받는 이러한 상황은 상대적으로 정상이지만 또한 우리에게 계시를 제공합니다. 사진을 보고 사진을 분석할 때 히스토그램을 읽는 방법을 배워야 합니다. 그렇다면 히스토그램이란 무엇일까요? 간단히 이해하면, 히스토그램은 사진 픽셀의 밝기 분포를 표시하는 형태입니다. 가로로 히스토그램은 대략 세 부분으로 나눌 수 있으며, 왼쪽은 그림자 영역, 가운데는 중간 영역, 오른쪽은 음영 영역입니다. 하이라이트 영역 왼쪽은 그림자의 검은색 영역이고 맨 오른쪽은 하이라이트의 유출된 영역입니다. 세로축은 픽셀의 구체적인 분포를 나타냅니다.
