1、第第6章章 表和表表和表数据数据操作操作SQL Server 2012的数据库是各种数据库逻辑对象的容器。用户收集、整理、存储的具体数据信息都存储在数据库的表对象中。表是数据库最基本、最重要、最核心的对象,每个表代表一类对其用户有意义的对象。本章主要介绍SQL Server 2012的表的创建、修改、删除,以及表数据的操作。6.1 表概念表概念表是数据库存放数据的对象,表必须建在某一数据库中,不能单独存在,也不以操作系统文件形式存在。表中数据的组织形式如同Excel电子表格,由行、列和表头组成。每行表示一条记录(或元组),每列表示一个字段(或属性)。其中第一行是表的属性列部分,又称为表头。行和
2、列的交叉称为数据项(或分量),其逻辑结构如图6-1所示。6.1.1 表结构表结构SQL Server 2012的表,都必须有一个名字,以标识该表,称为表名。表名在某一个数据库实例中必须惟一。数据库中的表数仅受数据库中允许的对象数的限制。行的顺序可以是任意的,每一行代表一条记录,是对某个实体的一个完整的描述,一般是按照插入的先后顺序存储的。表的行数仅受服务器的存储容量的限制。列的顺序也可以是任意的。对每一个标准的表,用户最多可以定义1024列,任何列也都必须有一个名字,称为列名(或属性名)。在一个表中,列名必须惟一,而且必须指明数据类型。表的行数仅受服务器的存储空间限制。6.1.2 表类型表类型
3、在SQL Server 2012中,除了由用户定义的基本表的标准角色以外,还提供了已分区表、临时表、系统表、宽表,这些表在数据库中起着特殊的作用。(1)基本表基本表就是由用户在数据库里创建的,用以存放数据的表,也称为用户定义的永久表。如果不特殊说明,本书介绍的表都是用户定义的基本表。(2)已分区表已分区表是将数据水平划分为多个单元的表,这些单元可以分布到数据库中的多个文件组中。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从而使大型表或索引更易于管理。(3)临时表临时表存储在tempdb系统数据库中。临时表有两种类型:本地表和全局表。它们在名称、可见性以及可用性上有区别
4、。本地临时表的名称以单个数字符号(#)打头;它们仅对当前的用户连接是可见的;当用户从SQL Server实例断开连接时被删除。全局临时表的名称以两个数字符号(#)打头,创建后对任何用户都是可见的,当所有引用该表的用户从SQL Server实例断开连接时将被删除。6.1.2 表类型表类型(4)系统表SQL Server将定义服务器配置及其所有表的数据存储在一组特殊的表中,这组表称为系统表。用户不能直接查询或更新系统表。可以通过系统视图查看系统表中的信息。任何用户都不应直接更改系统表。例如,不要尝试使用DELETE、UPDATE、INSERT语句或用户定义的触发器修改系统表。允许在系统表中引用所记
5、录的列。然而,系统表中的许多列都未被记录。不应编写应用程序直接查询未记录的列。相反,若要检索存储在系统表中的信息,应用程序应使用下列组件之一:系统存储过程T-SQL语句和函数SQL Server管理对象(SMO)复制管理对象(RMO)数据库API目录函数系统表又可以分为备份还原表、变更数据捕获表、数据维护计划表、SQL Server扩展事件表、日志传送表、复制表等。这些系统表记录了系统的信息。(5)宽表宽表使用稀疏咧,从而将表可以包含的总列数增大为30000列。稀疏列是对Null值采用优化的存储方式的普通列。稀疏列减少了Null值的空间需求,但代价是检索非Null值的开销增加。宽表已定义了一个
6、列集,列集是一种非类型化的XML表示形式,它将表的所有稀疏列合并为一种结构化的输出。6.1.3 数据类型数据类型在SQL Server中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型。SQL Server提供了的数据类型分为系统数据类型和用户定义数据类型。本节只介绍系统数据类型。SQL Server 2012提供了大量的系统数据类型。见表6-1。表6-1 SQL Server 2012系统数据类型数据类型数据类型符号标识符号标识精确数据精确数据bigint、bit、decimal、int、money、numeric smallint
7、 smallmoney、tinyint近似数据近似数据float、real日期和时间日期和时间date、datetime、datetime2、datetimeoffse、smalldatetime、time字符串字符串char、text、varcharUnicode字符字符nchar、ntext、nvarchar二进制字符串二进制字符串binary、image、varbinary其他数据类型其他数据类型cursor、hierarchyid、sql_variant、table、timestamp、uniqueidentifier、xml、空间类型、空间类型6.1.3 数据类型数据类型在介绍数据类
8、型时,涉及到3个概念:精度、小数位数和存储长度。精度是指数值数据中所存储的十进制数据的总范围。小数位数是指数值数据中小数点右边可以有的数字位数的最大值。长度是指存储数据所用的字节数。1.精确数据类型精确数据类型精确数据类型用于存储精确的数据,又分为整数类型、定点数据类型、货币数据类型和位数据类型。整数类型只表示精确的整数。见表6-2。表6-2 整数数据类型符号标识符号标识范围范围存储长度存储长度bigint-263(-9,223,372,036,854,775,808)到到 263-1(9,223,372,036,854,775,807)8字节字节int-231(-2,147,483,648)
9、到到 231-1(2,147,483,647)4字节字节smallint-215(-32,768)到到 215-1(32,767)2字节字节tinyint0 到到 2551字节字节6.1.3 数据类型数据类型定点类型也称为带固定精度和小数位数的数值数据类型,由整数部分和小数部分组成。包括decimal(p,s)类型和numeric(p,s)类型。使用最大精度时,有效值从-1038+1到1038-1。numeric在功能上等价于decimal。p(精度)最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从1到最大精度38之间的值。默认精度为18。s(小数位数)小数点右边可
10、以存储的十进制数字的最大位数。小数位数必须是从0到p之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为0。因此,0=s=p。最大存储大小基于精度而变化。货币数据类型是代表货币或货币值的数据类型,包括money和smallmoney数据类型,它们精确到所代表的货币单位的万分之一。见表6-3。表6-3 整数数据类型符号标识符号标识范围范围存储长度存储长度money-922,337,203,685,477.5808到到922,337,203,685,477.58078字节字节smallmoney-214,748.3648到到214,748.36474字节字节6.1.3 数据类型数据类型位数
11、据类型就是bit型,可以取值为1、0或NULL(空值)。SQL Server可优化bit列的存储。如果表中的列为8bit或更少,则这些列作为1个字节存储。如果列为9到16bit,则这些列作为2个字节存储,以此类推。字符串值TRUE和FALSE可以转换为bit值1和0。2.近似数据类型近似数据类型近似数据类型也称为浮点数值数据类型,采用科学计数法存储十进制小数,用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值。见表6-4。表6-4 整数数据类型float (n)其中n为用于存储float数值尾数的位数(以科学记数法表示),因此可以确定精度和存储大小。如果指定了n,则它必须是介于1和53之
12、间的某个值。n的默认值为53。1到24精度为7位,存储长度为4字节。25到53精度为15位,存储长度为8字节。符号标识符号标识范围范围存储长度存储长度float-1.79E+308至至-2.23E-308、0以及以及2.23E-308至至1.79E+308取决于取决于n的值的值real-3.40E+38至至-1.18E-38、0以及以及1.18E-38至至3.40E+384 字节字节6.1.3 数据类型数据类型3.日期和时间类型日期和时间类型日期和时间类型用于存储日期、时间或日期和时间的结合体数据。见表6-5。表6-5 日期和时间类型符号标识符号标识默认格式默认格式范围范围精确度精确度存储长度
13、存储长度timehh:mm:ss.nnnnnnn00:00:00.0000000到23:59:59.9999999100纳秒3-5字节字节dateYYYY-MM-DD0001-01-01到9999-12-311天3字节字节datetimeYYYY-MM-DD hh:mm:ss.nnn1753-01-01到9999-12-310.00333秒8字节字节datetime2YYYY-MM-DD hh:mm:ss.nnnnnnn0001-01-01 00:00:00.0000000到9999-12-31 23:59:59.9999999100纳秒6-8字节字节smalldatetimeYYYY-MM-
14、DD hh:mm:ss1900-01-01到2079-06-061分钟4字节字节datetimeoffseYYYY-MM-DD hh:mm:ss.nnnnnnn+|-hh:mm0001-01-01 00:00:00.0000000到到9999-12-31 23:59:59.9999999(以(以UTC时间时间表示)表示)100纳秒纳秒8-10字节字节6.1.3 数据类型数据类型4.字符串类型字符串类型字符串类型和Unicode字符串类型可以统称为字符类型。字符串类型用来存储各种非Unicode的字母、数字和符号组成的字符串。char(n)类型固定长度,长度为n个字节。n的取值范围为1至8000
15、,存储大小是n个字节。varchar(n|max)类型可变长度,n的取值范围为1至8000,max指示最大存储大小是231-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。text类型存储服务器代码页中长度可变的非Unicode数据,最大长度为231-1(2,147,483,647)个字符。当服务器代码页使用双字节字符时,存储仍是2,147,483,647字节。根据字符串,存储大小可能小于2,147,483,647字节。5.Unicode字符类型字符类型Unicode字符类型用来存储各种Unicode的字母、数字和符号组成的字符。nchar(n)存储n个字符的
16、固定长度的Unicode字符数据。n值必须在1到4,000之间(含)。存储大小为两倍n字节。nvarchar(n|max)存储可变长度Unicode字符数据。n值在1到4,000之间(含)。max指示最大存储大小为231-1字节。存储大小是所输入字符个数的两倍+2个字节。所输入数据的长度可以为0个字符。ntext类型存储长度可变的Unicode数据,最大长度为230-1(1,073,741,823)个字符。存储大小是所输入字符个数的两倍(以字节为单位)。6.1.3 数据类型数据类型6.二进制字符串类型二进制字符串类型二进制数据类型表示的是位数据流,如较长的备注、日志信息等。包括固定长度或可变长
17、度的binary数据类型,以及image类型。binary(n)是长度为n字节的固定长度二进制数据,其中n是从1到8,000的值。存储大小为n字节。varbinary(n|max)是可变长度二进制数据。n可以是从1到8,000之间的值。max指示最大存储大小为231-1字节。存储大小为所输入数据的实际长度+2个字节。所输入数据的长度可以是0字节。Image数据类型是长度可变的二进制数据,从0到231-1(2,147,483,647)个字节。image数据类型不只用来保存图像,也可以用户保存文档等。7.其他数据类型类型其他数据类型类型其他数据类型使用频率不高。例如cursor是变量或存储过程的O
18、UTPUT参数的一种数据类型,这些参数包含对游标的引用。sql_variant用于存储除text、ntex、timage、timestamp和sql_variant外的其他任何合法的数据。8.xml数据类型数据类型XML(可扩展标记语言),是标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合Internet传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。6.2 创建表创建表创建表的实质就是定义表结构。在SQL Server 2012中提供了两种创建表的方式,一种
19、是管理工具界面方式创建,另一种是命令行方式创建。本章将以COLLEGE数据库和PUBLISH数据库中表的操作为例,介绍表的基本操作,包括创建、修改、删除表,以及对表数据操作等。首先创建两个数据库,COLLEGE数据库和PUBLISH数据库。6.2.1 管理工具界面方式创建表管理工具界面方式创建表COLLEGE数据库有4个表,分别是Student表、School表、Course表、Mark表。表结构基本说明见表6-6、表6-7、表6-8、表6-9。表6-6 Student表列名列名数据类型数据类型允许允许Null值值约束约束说明说明StudentIDnchar(10)不允许主键学号属性列学号属性
20、列Namenchar(6)不允许 姓名属性列姓名属性列Sexnchar(2)允许 性别属性列性别属性列Birthdaysmalldatetime允许 出生日期属性列出生日期属性列SchoolIDnchar(2)允许允许 学院编号属性列学院编号属性列6.2.1 管理工具界面方式创建表管理工具界面方式创建表在“对象资源管理器”中,展开数据库COLLEGE,进一步展开表对象,新建的数据库表对象中,初始时已经有系统表和FileTables两个对象。与SQL Server以前版本不同的是,系统表中是空的,没有一系列系统表存在。选择“表”对象,选择右键菜单“新建表”选项,如图6-3所示。之后,进入“表结构
21、设计器”窗口,如图6-4所示。6.2.1 管理工具界面方式创建表管理工具界面方式创建表表设计器主体分为上下两部分:列常规和列属性子窗口。初始时都为空。在列常规子窗口中,用户可以设置列名、列的数据类型、允许Null值(是否允许该列取空值)等常规属性。列属性子窗口可以设置列的其他更为复杂的操作。首先新建Student表。按照表6-6提示,在列常规子窗口中输入列名,设置列的数据类型,允许Null值等常规属性。6.2.1 管理工具界面方式创建表管理工具界面方式创建表通常,每个表都必须设置主键。选择要设置为主键的StudentID列,选择右键菜单“设置主键”选项。如图6-7所示。设置成功,该列左边出现标
22、识一个钥匙图标,表示该列为主键。如图6-8所示。6.2.1 管理工具界面方式创建表管理工具界面方式创建表虽然一个表只能有一个主键,但主键可以是多个列的组合。这时需要键盘的Ctrl键和Shift键与鼠标组合使用。Ctrl键与鼠标组合使用是断续选择,Shift键与鼠标组合使用是连续选择。例如Mark表的主键就是CourseID与StudentID的组合。就需要Ctrl键或Shift键与鼠标组合使用设置。如图6-9、如图6-10所示。6.2.1 管理工具界面方式创建表管理工具界面方式创建表一切设置完毕,选择表设计器右上角的关闭按钮,或选择系统菜单“文件”的“保存”选项,或单击工具栏上的保存按钮,出现
23、一个“选择名称”对话框,输入表名“Student”,选择“确定”按钮即可保存新建的表。如图6-10所示。刷新表对象,可以看到新建一个名为“dbo.Student”的表,“dbo”是表的所有者,即当前数据库所有者,用户操作时可以省略。如图6-11所示。6.2.2 命令行方式创建表命令行方式创建表在SQL Server 2012中,还可以利用命令行方式创建表。在SQL Server Management Studio的“查询编辑器”窗口中使用T-SQL语句编程创建表。T-SQL提供了表创建语句CREATE TABLE。其语法格式如下:CREATE TABLE database_name.schem
24、a_name .|schema_name.table_name (|,.n )ON partition_scheme_name(partition_column_name)|filegroup|default TEXTIMAGE_ON filegroup|default FILESTREAM_ON partition_scheme_name|filegroup|default WITH(,.n );6.2.2 命令行方式创建表命令行方式创建表CREATE DATABASE语句语法说明:1)table_name是所创建的表名。表名在一个数据库中必须惟一,并且符合标识符的规则。表名可以是一个部分限
25、定名,也可以是一个完全限定名。2)对列属性定义,包括列名、列数据类型、默认值、标识规范、允许空等。格式为:column_name FILESTREAM COLLATE collation_name NULL|NOT NULL CONSTRAINT constraint_name DEFAULT constant_expression|IDENTITY (seed,increment)NOT FOR REPLICATION ROWGUIDCOL .n SPARSE NULL表示允许为空,NOT NULL表示不允许为空,DEFAULT表示默认值。6.2.2 命令行方式创建表命令行方式创建表其中格式
26、为::=CONSTRAINT constraint_name PRIMARY KEY|UNIQUE CLUSTERED|NONCLUSTERED WITH FILLFACTOR=fillfactor|WITH(,.n )ON partition_scheme_name(partition_column_name)|filegroup|default|FOREIGN KEY REFERENCES schema_name.referenced_table_name (ref_column)ON DELETE NO ACTION|CASCADE|SET NULL|SET DEFAULT ON UPD
27、ATE NO ACTION|CASCADE|SET NULL|SET DEFAULT NOT FOR REPLICATION|CHECK NOT FOR REPLICATION (logical_expression)6.2.2 命令行方式创建表命令行方式创建表PRIMARY KEY表示主关键字约束。UNIQUE表示惟一性约束。CLUSTERED表示聚集索引。NONCLUSTERED表示非聚集索引。CHECK表示检查约束。DEFAULT表示默认值约束。FOREIGN KEY表示外部键约束。6.2.2 命令行方式创建表命令行方式创建表【例6-1】使用CREATE TABLE语句创建Author表
28、。在“对象资源管理器”中,选择数据库“PUBLISH”,选择右键菜单“新建查询”选项,新建一个“查询编辑器”窗口。输入以下T-SQL语句:USE PUBLISHGOCREATE TABLE Author(/*作者号属性列,不允许为空,设置为主键*/AuthorID NCHAR(5)NOT NULL PRIMARY KEY,Name NCHAR(6)NOT NULL,/*姓名属性列,不允许为空*/Sex NCHAR(2)NULL DEFAULT 男,/*性别属性列,默认值“男”*/Birthday SMALLDATETIME NULL,/*出生日期属性列,允许为空*/Provinces NCHA
29、R(10)NULL /*所属省属性列,允许为空*/)GO6.2.2 命令行方式创建表命令行方式创建表选择“执行”按钮,表创建成功。如图6-12所示。刷新“表”对象后,可以看到新添一个名为“dbo.Author”的表。“dbo”是系统自动加上的,标识表的所有者。6.2.2 命令行方式创建表命令行方式创建表注意,在哪个数据库中操作表(包括创建、修改、删除、查询等),原则上就应该在哪个数据库下新建“查询编辑器”窗口,用以指明可用数据库,即当前数据库。否则有可能对其它数据库中的表操作。为避免出现误操作,建议在操作表语句前添加以下语句:USE database_nameUSE语句的功能是将数据库上下文更
30、改为指定数据库(或数据库快照)。也可以在SQL Server Management Studio中指定数据库。选择工具栏上的“可用数据库”下拉列表框,选择当前数据库。如图6-13所示。6.2.2 命令行方式创建表命令行方式创建表【例6-2】使用CREATE TABLE语句创建Book表。USE PUBLISHGOCREATE TABLE Book(BookID NCHAR(5)NOT NULL PRIMARY KEY,BookName NCHAR(20)NOT NULL,AuthorID NCHAR(5)NULL,Price INT,TypeID NCHAR(3)NULL )GO执行结果,创建
31、Book表。【例6-3】使用CREATE TABLE语句创建Type表。USE PUBLISHGOCREATE TABLE Type(TypeID NCHAR(3)NOT NULL PRIMARY KEY,TypeName NCHAR(10)NULL)GO执行结果,创建Type表。6.3 修改表修改表修改表包括修改表结构,修改表属性,重命名表名等操作。通常,修改表只是修改表结构。在SQL Server 2012中提供了两种修改表的方式,一种是管理工具界面方式修改,另一种是命令行方式修改。6.3.1 管理工具界面方式修改表管理工具界面方式修改表在“对象资源管理器”中,右键单击要修改的表名,选择“
32、设计”选项,进入“表结构设计器”窗口,如同创建新表一样,修改表结构,修改后保存退出即可。或者选择“重命名”选项,重新命名表名。或者选择“属性”选项,修改权限等。如图6-14所示。6.3.2 命令行方式修改表命令行方式修改表在SQL Server 2012中,还可以利用命令行方式修改表。T-SQL提供了表修改语句ALTER TABLE。其语法格式如下:ALTER TABLE database_name.schema_name .|schema_name.table_name ALTER COLUMN column_name type_schema_name.type_name (precisio
33、n ,scale|max|xml_schema_collection )COLLATE collation_name NULL|NOT NULL SPARSE|ADD|DROP ROWGUIDCOL|PERSISTED|NOT FOR REPLICATION|SPARSE|WITH CHECK|NOCHECK|ADD|,.n|DROP CONSTRAINT constraint_name WITH(,.n )|COLUMN column_name ,.n 6.3.2 命令行方式修改表命令行方式修改表ALTER DATABASE语句语法说明:1)table_name是所修改的表名。2)ALTER
34、 COLUMN子句是修改列。3)ADD子句是新增列。4)DROP子句是删除列。6.3.2 命令行方式修改表命令行方式修改表【例6-4】使用ALTER TABLE语句修改COLLEGE数据库的Course表,新增名为CourseRemarks,数据类型为NTEXT(备注型)的新列。USE COLLEGEGOALTER TABLE Course ADD CourseRemarks NTEXTGO执行结果,新增一列。【例6-5】使用ALTER TABLE语句修改PUBLISH数据库的Book表,将Price列的数据类型改为decimal。USE PUBLISHGOALTER TABLE Book A
35、LTER COLUMN Price DECIMAL(8,1)GO执行结果,列的属性修改成功。6.4 删除表删除表如果表不需要了,可以删除。删除表,将删除表结构和表中所有数据,而且不能恢复。如果没有备份,数据将丢失。所以删除表一定要小心。在SQL Server 2012中提供了两种删除表的方式,一种是管理工具界面方式修改,另一种是命令行方式修改。在“对象资源管理器”中,右键单击要删除的表名,选择“删除”选项,进入“删除对象”对话框,确定删除即可。或者选择系统菜单“编辑”的“删除”选项删除表。如图6-15所示。进入“删除对象”对话框,删除表,如图6-16所示。6.4 删除表删除表T-SQL提供了表
36、删除语句DROP TABLE。其语法格式如下:DROP TABLE database_name.schema_name .|schema_name.table_name ,.n ;【例6-6】使用DROP TABLE语句删除PUBLISH数据库的Book表。USE PUBLISHGODROP TABLE BookGO执行结果,删除指定列。6.5 表数据操作表数据操作表创建、修改完毕,它只是一个空表,即只有表结构,没有表数据。用户创建表的目的是让表存储所需数据,因此随后的工作就是向表中新增、修改或删除数据。在SQL Server 2012中提供了两种表数据的操作方式,一种是管理工具界面方式操作,
37、另一种是命令行方式操作。6.5.1 管理工具界面方式操作表数据管理工具界面方式操作表数据右键单击要操作的表名,选择“编辑前200行”选项,如图6-17所示。打开表数据编辑窗口,默认表数据为空。如图6-18所示。6.5.1 管理工具界面方式操作表数据管理工具界面方式操作表数据用户可以直接在显示“NULL”处输入数据,新增数据。同时也可以将光标移到需要修改的数据上进行修改。如图6-19所示。或者选择系统菜单“编辑”的“剪切”、“复制”、“粘贴”、“删除”选项来操作表数据。如图6-20所示。6.5.1 管理工具界面方式操作表数据管理工具界面方式操作表数据如果选中的是一个数据项,那么修改、删除等操作只
38、针对这个数据项操作。如果选中的是一行(记录),那么操作的是一整行数据。系统菜单选项和右键快捷菜单选项都可以操作。如图6-21所示。如果选择的是“编辑前1000行”选项,出现一个查询窗口,显示了相应操作的T-SQL语句,以及该语句的查询结果,而用户无法直接添加、修改和删除表数据,如图6-22所示。6.5.2 命令行方式操作表数据命令行方式操作表数据在“查询编辑器”窗口主窗体输入T-SQL语句,也可以对表数据操作。T-SQL提供了INSERT语句、UPDATE语句、DELETE语句对表数据进行插入、修改和删除操作。(1)INSERT语句语句INSERT语句语法格式如下:INSERT INTO ta
39、ble_name(column_list)VALUES(data_values,n)说明:1)使用INSERT语句可以向表中插入新记录,但一次只能插入一条记录。2)table_name后面的属性列列表可以省略。如果省略,则VALUES后面的data_values数量要和表的列的数量一致,并且每个data_values要和表的列顺序一致,数据类型也要匹配。3)table_name后面的属性列如果标明,可以标明部分或全部列。这时data_values要和table_name后面的属性列数量一致,并且每个data_values要和列顺序一致,数据类型也要匹配。6.5.2 命令行方式操作表数据命令行方
40、式操作表数据【例6-11】使用INSERT语句给COLLEGE数据库的Student表插入一行记录。USE COLLEGEGOINSERT Student(StudentID,Name,Sex,Birthday,SchoolID)VALUES(2014110205,张雄伟,男,1995-1-10,2)GOINSERT Student(StudentID,Sex,Name)VALUES(2013010110,女,刘新丽)GO执行结果,新增两行记录。这里需要说明的是,在插入数据时,INSERT语句一次只能插入一条记录。表名后可以标明全部列名,列名顺序无所谓,但VALUES后面赋值顺序必须与列名顺序
41、一致,否则将会引起数据赋值的混乱。如果类型不匹配或出现其它情况,系统甚至提示错误。在不违反表结构设置(例如列是否允许为空)的前提下,表名后也可以只标明部分列名,那么VALUES只能给部分列赋值。6.5.2 命令行方式操作表数据命令行方式操作表数据例6-12】使用INSERT语句给COLLEGE数据库的Course表插入一行记录。USE COLLEGEGOINSERT CourseVALUES(115,数据库原理,3,必修课)GO执行结果,新增一行记录。在插入数据时,表名后省略了列名,所以VALUES后面赋值时,数值个数必须与表的列个数一致,并且顺序也得一致。6.5.2 命令行方式操作表数据命令
42、行方式操作表数据(2)UPDATE语句语法格式如下:语句语法格式如下:T-SQL提供了表记录修改语句UPDATE语句。其语法格式如下:UPDATE table_name SET column_name=expression|DEFAULT|NULL ,nWHERE 说明:1)使用UPDATE语句可以修改表数据。具体修改哪个列数据由SET子句设定。2)WHERE子句设定修改哪一行或哪些行。6.5.2 命令行方式操作表数据命令行方式操作表数据【例6-13】使用UPDATE语句修改Student表的记录。USE COLLEGEGOUPDATE StudentSET SchoolID=3WHERE N
43、ame=张雄伟GO执行结果,修改指定记录。修改后将姓名为“张雄伟”的学院编号改为“3”,其他数据不变。【例6-14】使用UPDATE语句修改Course表的记录。USE COLLEGEGOUPDATE CourseSET Credit=Credit+1WHERE CourseName=数据库原理GO执行结果,修改指定记录。修改后,将选修了课程名为“数据库原理”的学分数加1分。如果没有WHERE子句,所有记录(不论是哪门课程)的学分都加1分。6.5.2 命令行方式操作表数据命令行方式操作表数据(3)DELETE语句语法格式如下:语句语法格式如下:如果只删除表数据,T-SQL提供了表数据删除语句D
44、ELETE语句。其语法格式如下:DELETE FROM table_nameWHERE 说明:1)WHERE子句设定修改哪一行或哪些行。2)如果没有使用WHERE子句,将删除所有数据。【例6-15】使用DELETE语句删除Course表的记录。USE COLLEGEGODELETE CourseWHERE CourseName=软件工程GO执行结果,删除Course表中CourseName名为“软件工程”的记录。【例6-16】使用INSERT语句给Student表添加一行记录。USE COLLEGEGODELETE SchoolGO执行结果,删除School表中所有记录行,即清空该表,此操作慎用。6.5.2 命令行方式操作表数据命令行方式操作表数据用户也可以在表数据编辑窗口中使用T-SQL语句。选择表中数据,选择右键菜单“窗格”选项的“SQL”子选项。如图6-25所示。在表数据编辑窗口上方打开一个查询窗口,用户可以在查询窗口中使用T-SQL语句操作表数据,同时也可以直接在表数据中操作。如图6-26所示。