对于SQL server数据库的学习,新手学习时往往涉及到五个经典实验,分别是数据库和基本表操作、数据操作、单表查询、多表连接查询以及嵌套查询与集合查询,实验内容并不难,关键在于大家动手实践才能掌握好基础,本文是作者当时学习时的一些部分实验内容,实验详细报告在每个实验的最后链接里,分享给大家,欢迎大家批评指正!
熟悉SQL Server 2012系统环境,了解SQL Server基本管理工具、实用程序的使用。掌握利用对象资源管理器和Transact-SQL语句进行数据库及基本表的定义、修改和删除。掌握主码、外码及约束的创建和应用。
2学时
(1)使用对象资源管理器和Transact-SQL语句创建数据库。
(2)使用对象资源管理器和Transact-SQL语句创建基本表,定义表的约束。
(3)使用对象资源管理器和Transact-SQL语句修改、删除基本表。
(1)SQL全称为Structured Query Language(结构化查询语言),由Boyce和Chamberlin于1974年提出。SQL语言结构简洁,功能强大,简单易学。SQL语言集数据定义(Data Definition)、数据操作(Data Manipulation)和数据控制(Data Control)功能于一体,充分体现了关系数据库语言的特点和优点。
(2)SQL语言使用CREATE DATABASE语句定义数据库,基本格式如下:
CREATE DATABASE database_name
[ON [PRIMARY]
([NAME = logical_file_name,]
FILENAME = ‘os_file_name’
[,SIZE = size]
[,MAXSIZE = {max_size|UNLIMITED}]
[,FILEGROWTH = growth_increment])[,…n]
::= FILEGROUP filegroup_name [,…n]
LOG ON
(NAME = logical_file_name,FILENAME =‘os_file_name’
SIZE = size,
MAXSIZE = {max_size | UNLIMITED},
FILEGROWTH= growth_increment)];
(3)SQL语言使用CTEATE TABLE语句定义基本表,基本格式如下:
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
[,<表级完整性约束条件>]);
·列级完整性约束条件:涉及相应属性列的完整性约束条件。
·表级完整性约束条件:涉及一个或多个属性列的完整性约束条件。
(4)定义基本表时必须对表的完整性进行定义,常用的完整性约束如下。
·PRIMARY KEY:主码,用于定义实体完整性。利用表中一列或多列来唯一标识一行数据,确保对应的数据列不为空,且数据不重复。
·FOREIGN KEY:外码,用于定义参照完整性,主要用来维护两个表之间的数据一致性。
·NOT NULL:列值非空。
·UNIQUE:列值唯一,主要用于约束主码外的数据列的唯一性。
·CHECK:检查列值是否满足一个条件表达式。
·DEFAULT:列值的默认值,处理用户不包含全部数据列的数据插入。
(5)SQL语言使用ALTER TABLE语句修改基本表,基本格式如下:
ALTER TABLE <表名>
[ADD [COLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP[COLUMN]<列名>[CASCADE| RESTRICT]]
[DROP CONSTRAINT<完整性约束名>[CASCADE| RESTRICT]]
[ALTER COLUMN <列名><数据类型>];
(6)SQL 语言使用 DROP TABLE 语句删除基本表,基本格式如下:
DROP TABLE <表名> [CASCADE| RESTRICT]];
剩下具体实验步骤、内容和实验报告我放在链接里了,大家自行下载学习即可!
实验一 提取码:rhgj
掌握利用对象资源管理器和Transact-SQL语句两种方法对基本表进行插入、修改和删除操作。
1学时
(1)使用对象资源管理器对基本表进行插入、修改和删除操作。
(2)使用Transact-SQL语句对基本表进行插入、修改和删除数据操作。
(1)SQL 的数据插入语句 INSERT 通常有两种形式。
插入单个元组,语句格式如下:
INSERT INTO <表名>[(<属性列 1>[,<属性列 2>] … )]
VALUES(<常量 1>[,<常量2>] … );
多记录插入——将 SELECT 语句的查询结果插入数据表,语句格式如下:
INSERT INTO <表名>[(<属性列 1>[<属性列 2>] …… )]
子查询;
(2)数据修改操作 UPDATE 语句一般格式如下:
UPDATE <表名>
SET<列名>=<表达式>[<列名>=<表达式>] …
[WHERE<条件>];
(3) 数据删除操作 DELETE 语句一般格式如下:
DELETE FROM <表名>
[WHERE<条件>];
剩下具体实验步骤、内容和实验报告我放在链接里了,大家自行下载学习即可!
实验二 提取码:6m51
掌握 SQL Server 2012 查询窗口的使用方法,加深对 SQL 查询语句的理解。熟练掌握SQL查询语句的一般格式。灵活掌握SELECT子句中“目标列表达式”、WHERE子句中“条件表达式”的各种使用形式和聚集函数的一般格式。
2学时
(1)SELECT子句中“目标表达式”的各种使用形式。
(2)WHERE子句中“条件表达式”的各种使用形式。
(3)GROUP BY子句的使用方法。
(4)聚集函数的使用方法。
(1)数据查询是数据库的核心操作。SQL使用SELECT语句进行数据查询,该语句使用方式灵活、功能丰富。虽然SELECT语句的完整语法较复杂,但其一般格式如下:
SELECT [ALL|DISTINCT]<目标列表达式>[别名][,<目标列表达式>[别名]] …
FROM<表名或视图名>[别名][,<表名或视图名>[别名]] … (
整个SELECT语句的含义是:根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表。
如果有GROUP BY子句,则将结果按照<列名1>的值进行分组,值相等的元组为一组。如果GROUP BY子句带HAVING短语,则只有满足指定条件的组才会输出。如果有ORDER BY子句,则结果还要按照<列名2>的值的升序或降序排序。
(2)SELECT子句的<目标列表达式>的可选格式如下:
, <表名> ., COUNT(),聚集函数([DISTINCT|ALL]<列名>),[<表名>.]<属性列名表达式>
其中,<属性列名表达式>可以是由属性列、作用于属性列的聚集函数和常量的任意算术运算(+ ,-,,/)组成的运算公式。
(3)聚集函数的一般格式:
COUNT/ SUM /AVG/ MAX/ MIN([DISTINCT|ALL]<列名>)
如果指定DISTINCT短语,表示在计算时要取消指定列中的重复值,否则表示不取消重复值。
(4)WHERE子句的<条件表达式>的可选格式如下:
①<属性列名>θ<属性列名>/<常量>/ ANY|ALL
② <属性列名>[NOT] BETWEEN<属性列名>/<常量>/(SELECT 语句)AND <属性列名>/<常量>/(SELECT 语句)
③<属性列名> [NOT] IN(<值1>[,<值2>] … )/(SELECT 语句)
④<属性列名> [NOT] LIKE <匹配串>
⑤<属性列名>IS [NOT] NULL
⑥[NOT] EXISTS (SELECT 语句)
⑦ <条件表达式> AND/OR <条件表达式>
剩下具体实验步骤、内容和实验报告我放在链接里了,大家自行下载学习即可!
实验三 提取码:4os4
熟练掌握SQL查询语句的一般格式,灵活掌握各类连接查询的使用。
1学时
(1)等值与非等值连接查询。
(2)自然连接查询。
(3)自身连接查询。
(4)外连接查询。
(1)多表的连接查询,相当于在表上做笛卡尔积。
SELECT<目标列表达式列表>
FROM 表名 1,表名2
(2)等值与非等值连接。
连接查询的连接条件或连接谓词,其一般格式如下:
[<表名 1>.]<列名 1><比较运算符>[<表名 2>.]<列名 2>
其中,<比较运算符>主要有 =、 >、<、> =、 < =、!=。 当连接运算符为=时,称为等值连接,否则称为不等值连接。
【注】多表连接时,当某列名在两张表中同时存在时,在列名前要加表名以示区分。
(3)自然连接。
若在等值连接中把目标列中重复的属性列去掉则为自然连接。
(4)自身连接。
连接操作的对象是一张表与其自身,称为表的自身连接。
【注】自身连接因为是对同一张表操作,为区分对该表操作的顺序,需要取两个别名,以示区别。
(5)外连接。
如果把悬浮元组也保存在结果关系中,而在其他属性上填写空值(NULL),这种连接称为外连接。外连接还可分为左外连接、右外连接。
剩下具体实验步骤、内容和实验报告我放在链接里了,大家自行下载学习即可!
实验四 提取码:kgwa
熟练掌握嵌套查询、集合查询的使用,理解掌握相关子查询与不相关子查询。
2学时
(1)带IN谓词的子查询。
(2)带比较运算符的子查询。
(3)带ANY或ALL谓词的子查询。
(4)带EXISTS谓词的子查询。
(5)集合查询。
(1)在 SQL 语言中,一个 SELECT-FROM-WHERE 语句称为一个查询块。如将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中,则此查询称为嵌套查询。上层的查询称为外查询或父查询,下层的查询称为内查询或子查询。
SQL 语言还允许多层嵌套查询,即子查询中还可以嵌套其他子查询。
【注】子查询的 SELECT 子句中不能使用 ORDER BY 子句。
(2)IN 谓词子查询。
在嵌套查询中,子查询的结果常常是一个集合。故谓词 IN 经常用于嵌套查询,其一般格式如下:
SELECT<目标列表达式列表>
FROM 表名
WHERE 列名 IN
(SELECT 子句)
(3)比较运算符的子查询。
比较运算符的子查询是指父查询与子查询之间通过比较运算符进行连接的嵌套查询。当能确切知道子查询返回的是单个值时,父查询与子查询之间就可以通过比较运算符(>、> =、 << ==、!= )连接起来。
(4)EXISTS 谓词子查询。
带 EXISTS 谓词的子查询不返回任何数据,只产生逻辑真值 TRUE 或逻辑假值 FALSE。若内层查询结果非空,则外层的 WHERE 子句返回真值,否则返回假值。由 EXISTS 引出的子查询,其目标列表达式通常都用 *,因为带 EXISTS 的子查询只返回真值或假值,给出列名无实际意义。EXISTS 子查询中一般是相关子查询,即子查询脱离父查询后不能单独执行。
(5)不相关子查询与相关子查询。
如果子查询的查询条件不依赖于父查询,称为不相关子查询;依赖于父查询,称为相关子查询。不相关子查询常用的求解方法是由里向外处理,即先执行子查询,子查询的结果用于建立父查询的查询条件。相关子查询的求解与不相关子查询的求解完全不同,不能一次将子查询求解出来,然后求解父查询,由于子查询与父查询相关,因此必须对子查询反复求值。
(6)SELECT 语句的查询结果是元组的集合,因此多个 SELECT 语句的查询结果可进行集合操作。参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。常见的集合操作包括并操作 UNION、交操作 INTERSECT 和差操作 EXCEPT。
剩下具体实验步骤、内容和实验报告我放在链接里了,大家自行下载学习即可!
实验五 提取码:n7us