金陵科技学院实验报告
二、列 1、列数据类型
在设计表的时候,需要知道每列字段的数据类型。SQL Server2005系统提供了28种数据类型,主要分为七大类。
(1)精确数字类型:这些数据类型的数据可以参加各种数学运算,所有的数值都是有精度的,精度是指有效数字位数。如整数数据类型:binint、int、smalling、tinyint;位数据类型bit;货币数据类型:Money、Smallmoney等。
(2)近似数字类型:在现实计算中,还有一些数据没有精确数值,如1/3,它无法用精确数字类型表示,需要由系统来定义精确到哪一位,这种类型就是近似数据类型。如:Decimal和Numeric;Float和Real等。
(3)字符数据类型:它是存储各种字母数字符号和特殊符号。在使用该数据类型时,需要用用单引号或双引号括起来。SQL Server2005主要提供了Char、Varchar、Text3中数据类型。 (4)Unicode字符数据类型:Unicode是一种在计算机上使用的字符编码。它为每一种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。SQL Server2005主要有:Nchar、Nvarchar、Ntext三种。
(5)二进制数据类型:二进制数据类型可以用来存储二进制的数据。主要有:Binary、Varbinary、Image三种类型。
(6)日起和时间数据类型:在SQL Server2005中,日起和时间类型主要包括:datetime 和smalldatetime两种。两者区别在于其表示的日期和时间的范围不同,时间的精确度也不同。 (7)其他数据类型:SQL Server2005系统还提供了Cursor、Sql_varant、Table、Timestamp、Uniqueidentifie、XML6种特殊用途的数据来型。 2、列的其他属性
(1)NULL和NOT NULL:定义属性列时可以规定该列是否可以为空。
(2)默认值:当某个属性的值大部分的取值都是相同时,可以使用默认值来减少插入数据时的时间。
(3)IDENTITY:使用IDENTITY关键字定义的字段为标识字段,标识字段是唯一标识每条记录的特殊字段,当一条新记录添加时,这个字段就被自动赋予一个新值。默认情况下是+1递增。 三、创建表
1、使用SQL Server Management Studio工具在MyDB数据库中创建Student和Class表。 Student表的结构为:
字段名 SNO SName Sex 类型 Char(8) Varchar(10) Char(2) 中文名 学号 姓名 性别 备注 主键 男、女 8
金陵科技学院实验报告
ClsNO StuAddr Birthday Height Char(6) Varchar(20) SmallDate Numeric(4,2) 班级 住址 出生年月 身高 总学分 中文名 班号 班名 辅导员 专业 班级的编号,参照表Class 描述性说明 以米为单位表示学生的身高。 备注 主键 对班级的描述信息 班级的辅导员 TotalCredit Tinyint Class表的结构为:
字段名 ClsNO ClsName Director Specialty 类型 Char(6) Varchar(16) Varchar(10) Varchar(30) 2、使用T-SQL语言在MyDB数据库中创建Course和Grade表 Course表的结构为:
字段名 CNO CName PCNO Credit
Grade表的结构为:
字段名 SNO CNO Scorce Credit 类型 Char(8) Char(4) 中文名 学号 课程号 备注 学号,参照Student,与CNO组成主键 课程号,参照Course 类型 Char(4) Varchar(16) char(4) Tinyint 中文名 课程号 课程名 先修课程 学分 备注 主键 课程的名称 先修课程的课程号 Numeric (4,1) 成绩 Tinyint 学分 四、自定义数据类型
(1)使用SQL Server Management Studio工具创建用户自定义数据类型:studentNo,char(8) (2)系统存储过程sp_addtype 创建用户自定义数据类型:courseNo,char(4) (3)修改MyDB数据库中的各表,学号和课程号应用自定义的数据类型。
五、修改表结构
(1)使用Alter修改Student表结构,使其增加一列Department(系别)Char(12)。 (2)使用SQL Server Management Studio工具删除刚刚增加的Department。 六、插入数据
使用SQL Server Management Studio工具或insert into语句分别向下列表格插入数据。 (1)向表(Student)中插入数据 SNO 19920101 19920102 19920306
SName Sex 王军 李杰 王彤 男 男 女 ClsNO StuAddr CS01 CS01 MT04 下关40# 江边路96# 中央路94# 9
Birthday 1976.12.21 1974.5.24 1977.3.18 Height 1.76 1.72 1.65 TotalCredit 10 9 9 金陵科技学院实验报告
19940106 吴杪 女 PH08 莲化小区74# 1979.4.8 1.60 4 插入数据之后使用命令:Select * from Student; 检查插入数据的正确性 (2)向表(Class)中插入数据 ClsNO CS01 MT04 PH08 ClsName 计算机一班 数学四班 物理八班 Director 王宁 陈晨 葛格 Specialty 计算机应用 数学 物理 插入数据之后使用命令:Select * from Class; 检查插入数据的正确性 (3)向表(Course )中插入数据 CNO 0001 0003 0007 CName 数学 计算机基础 物理 PCNO Null 0001 0001 Credit 6 3 4 插入数据之后使用命令:Select * from Course; 检查插入数据的正确性 (4)向表(Grade )中插入数据 SNO 19920101 19920101 19920102 19920102 19920306 19920306 19940106 CNO 0001 0007 0001 0003 0001 0003 0007 Score 90 86 87 76 87 93 85 Credit 6 4 6 3 6 3 4 插入数据之后使用命令:Select * from Grade; 检查插入数据的正确性 七、删除表中的数据
(1)使用SQL Server Management Studio工具删除课程号为0001的选课记录。 (2)使用T-SQL语言删除Grade表中学号为19920101的数据 八、删除表格
(1)使用SQLSQL Server Management Studio工具删除Class表。 (2)使用Drop Table命令删除Grade表。
*注意在删除之前,请将数据文件拷贝一个副本,已备以后使用。
五、问题解答及实验结果
三、创建表
(1)创建Student表
CREATE TABLE [dbo].[Student](
[SNO] [char](8) COLLATE Chinese_PRC_CI_AS NOT NULL, [SName] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [Sex] [char](2) COLLATE Chinese_PRC_CI_AS NOT NULL,
10
金陵科技学院实验报告
[ClsNO] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [StuAddr] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL, [Birthday] [smalldatetime] NOT NULL, [Height] [numeric](4, 2) NOT NULL, [TotalCredit] [tinyint] NOT NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ( [SNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] (2)创建class表
CREATE TABLE [dbo].[Class](
[ClsNO] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [ClsName] [varchar](16) COLLATE Chinese_PRC_CI_AS NULL, [Director] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [Specialty] [varchar](30) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_Class] PRIMARY KEY CLUSTERED ( [ClsNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] (3)创建Course表
CREATE TABLE [dbo].[Course](
[CNO] [char](4) COLLATE Chinese_PRC_CI_AS NOT NULL, [CName] [varchar](16) COLLATE Chinese_PRC_CI_AS NULL, [PCNO] [char](4) COLLATE Chinese_PRC_CI_AS NULL, [Credit] [tinyint] NULL,
CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED ( [CNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] (4)创建grade表
CREATE TABLE [dbo].[Grade](
[SNO] [char](8) COLLATE Chinese_PRC_CI_AS NOT NULL, [CNO] [char](4) COLLATE Chinese_PRC_CI_AS NOT NULL, [Scorce] [numeric](4, 1) NULL, [Credit] [tinyint] NULL,
CONSTRAINT [PK_Grade] PRIMARY KEY CLUSTERED ( [SNO] ASC,
[CNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]
四、自定义数据类型
use MyDB
create table Grade ( SNO char(8) not null,
11