4.数据表的创建与管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2
Baidu Nhomakorabea
数据类型
第一大类:整数数据 bit:bit数据类型代表0,1或NULL,就是表true,false. 占用1byte. int:以4个字节来存储正负数.可存储范围为:(-2147483648至2147483647) . smallint:以2个字节来存储正负数.存储范围为:(-32768至32767) tinyint: 是最小的整数类型,仅用1字节,范围:0至 255 bigint:以8个字节存储,是SQL Server 2000引入的 全新的数据类型,可以存储范围:(-263到263-1)
例4-9、删除sc表中sno字段上的外键约束 ALTER TABLE sc DROP fk_sc_student 例4-10、向Student表增加“入学时间”列,其 数据类型为日期型。 ALTER TABLE Student ADD Scomedate DATETIME 例4-11、将年龄的数据类型改为半字长整数。 ALTER TABLE Student ALTER COLUMN Sage SMALLINT
第二大类:精确数值数据 numeric:表示的数字可以达到38位,存储数据时 所用的字节数目会随着使用权用位数的多少变化. 格式写为numeric( p,s) 例如:numeric(10,4),表示共有10位数,其中 整数6位,小数4位。
decimal:和numeric类似 。 区别:numeric类型的列可以带有IDENTITY关 键字(唯一标识符)。
CREATE TABLE Course (Cno CHAR(10) PRIMARY KEY, Cname CHAR(20) NOT NULL, Ccredit TINYINT DEFAULT 3, Semester TINYINT, )
CREATE TABLE Sc (Sno CHAR(7) , Cno CHAR(10), Grade FLOAT, PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno)REFERENCES Student(Sno), FOREIGN KEY (Cno)REFERENCES Course(Cno))
第六大类:Unincode字符串数据 nchar:长度是设定的,最短为1字节,最长为4000个 字节.不足的长度会用空白补上.储存一个字符需 要2个字节. nvarchar:可变长度,最短为1字节,最长为4000个 字节.尾部的空白会去掉.储存一个字符需要2个 字节. ntext:可变长度,最短为1字节,最长为230-1个 unicode数据.尾部的空白会去掉,储存一个字符需 要2个字节.
4.5 约束
约束定义了必须遵循的用于维护数据一致 性和正确性的规则,是强制实现数据完整 性的途径。 约束分类:
– 主键约束 – 外键约束 – 唯一值约束 – 检查约束 – 默认约束
主键约束
表中常有一列或列的组合,其值能惟 一标识表中的每一行,这样的一列或列的 组合称为表的主键(PRIMARY KEY), 通过主键可以强制表的实体完整性。定义 了主键约束的列具有以下特点:
ALTER TABLE Student DROP COLUMN Sdept
2.添加主关键字 ALTER TABLE 表名 ADD [CONSTRAINT 约束名] PRIMARY KEY (主 键列) 3、删除主关键字 ALTER TABLE <表名> DROP [CONSTRAINT] 约束名 4.补充定义外来关键字 ALTER TABLE <表名-1> ADD [CONSTRAINT 约束名 ] FOREIGN KEY [(<外来关键字名>)] REFERENCES (<表名-2>) 5.删除外来关键字 ALTER TABLE <表名> DROP <外来关键字名>
第四章 基本表的创建与管理
学习要点:
–表的概念 –表的创建、修改和删除 –添加、更新与删除表中的数据 –数据完整性的概念及实施方法
4.1 表的概念
表是数据的集合,是用来存储数据和操作 数据的逻辑结构。 表是由行和列组成的,行被称为记录,是 组织数据的单位;列被称为字段,每一列 表示记录的一个属性。 在特定表中,列名必须是唯一的,但相同 的列名可以在数据库中的不同表中使用。 SQL Server中的每个表中最多允许有1024 列,每行最多允许有8060字节的用户数 据。行和列的次序是任意的。
例4-3 在student中增加住址列 ALTER TABLE student ADD address CHAR(50) 例4-4 修改student表中的sdept字段,将数据
类型长度为30 ALTER TABLE student
ALTER COLUMN sdept char(30)
例4-5 把Student表中的Sdept列删除。
4.6 实现数据完整性
第五大类:字符串数据
char[(n)]:长度是设定的,最短为1字节,最长为 8000个字节.不足的长度会用空白补上. 例如:char(10)
Varchar[(n)]:变长字符型数据,最短为1字节,最长 为8000个字节,尾部的空白会去掉. text:长专门用于存储数量庞大的变长字符数据,, 最长可以存放2G(231-1个字符)的数据.
主码,引用Student的外码 主码,引用Course的外码
Sc表结构
CREATE TABLE Student (Sno CHAR(7) PRIMARY KEY, Sname CHAR(10) NOT NULL, Ssex CHAR(2) DEFAULT ‘男’, Sage TINYINT, Sdept CHAR(20), )
每个表只能定义一个主键。 主键值不可为空(NULL)。 主键值不可重复。若主键是由多列组成时,某 一列上的值可以重复,但多列的组合值必须是 惟一的。
外键约束
一个数据库中可能包含多个表,可以 通过外键(FOREIGN KEY)使这些表关 联起来。外键是由表中的一列或多列组成 的。如在A表中有一个字段的取值只能是B 表中某字段的取值之一,则在A表该字段上 创建外键约束,A表称为从表,B表称为主 表。定义外键约束的列具有以下特点:
一般的SQL建表语句形式
CREATE TABLE 表名 [表约束] (列名1 数据类型 [缺省值1,列约束1] 列名2 数据类型 [缺省值2,列约束2] … 列名n 数据类型 [缺省值n,列约束n])
例4-1 创建三张表,表结构如下:
列名 Sno Sname Ssex Sage Sdept 描述 学号 姓名 性别 年龄 所在系 数据类型 字符型,长度为7 字符型,长度为10 字符型,长度为2 微整数 字符型,长度20 约束 主码 非空 默认值
例3-12 为student表添加身份证号列’id‘,并 为’id’列添加唯一值约束。 ALTER TABLE student ADD id BIGINT CONSTRAINT unq_id UNIQUE 注:UNIQUE约束列允许有NULL值,但最多只 能有一个NULL值,否则认为重复。 例3-13 为course表的cname列添加唯一值约束。 ALTER TABLE course ADD CONSTRAINT unq_cname UNIQUE(cname)
第七大类:货币数据类型 money:记录金额范围为:92233720368577.5808至 92233720368577.5807.需要8 个字节. smallmoney:记录金额范围为:-214748.3648至 214748.36487.需要4个字节. 第八大类:标记数据 timestamp:该数据类型在每一个表中是唯一的! 当表中的一个记录更改时,该记录的timestamp字 段会自动更新.
2、表的删除 删除表的命令一般形式 DROP TABLE 表名
例4-2 删除教师表 DROP TABLE teacher
4.4 表结构的扩充和修改
1 、修改表的命令一般形式 ALTER TABLE 表名 { ADD 列名 数据类型 [NULL/NOT NULL] |ALTER COLUMN 列名 数据类型 NULL|NOT NULL] |DROP COLUMN 列名 }
男
Student表结构
列名
Cno Cname Ccredit CSemester
说明
课程号 课程名 学分 学期
数据类型
字符型,长度为10 字符型,长度为20 微整数 微整数
约束
主码 非空
默认值
3
Course表结构
列名
说明
数据类型
约束
Sno Cno Grade
学号 课程号 成绩
字符型,长度为7 字符型,长度为10 浮点数
默认约束(DEFAULT)
DEFAULT约束用于给表中指定列赋予一个常量值 (默认值)。 语法: [CONSTRAINT 约束名] DEFAULT 默认值 FOR 列名 例3-15 为student中的sage列添加默认值“19”。 ALTER TABLE student ADD CONSTRAINT default_sage DEFAULT 19 FOR sage
第三大类:近似浮点数值数据 float:用8个字节来存储数据.最多可为53位.范围 为:-1.79E+308至1.79E+308. real:位数为24,用4个字节,数字范围:-3.04E+38 至3.04E+38 第四大类:日期时间数据 datatime:表示时间范围可以表示从1753/1/1至 9999/12/31,时间可以表示到3.33/1000秒.使用8 个字节. smalldatetime:表示时间范围可以表示从 1900/1/1至2079/12/31.使用4个字节.
检查约束(CHECK)
CHECK 约束用来指定某列的可取值范围。通过限 制输入值强制控制域的完整性。 语法: [CONSTRAINT constraint_name] CHECK ( 检查条 件) 例3-14 限制student表中的ssex列只能添入值为’男 ‘或’女’。 ALTER TABLE student ADD CONSTRAINT check_ssex CHECK (ssex=‘男’ or ssex=‘女’)
例4-6 补充定义student表的主关键字。
ALTER TABLE Student
ADD CONSTRAINT pk_student PRIMARY KEY (Sno) 例4-7、删除course表中的主关键字。 ALTER TABLE course DROP pk_course 例4-8、修改sc表,在sno字段上创建外键约束。 ALTER TABLE sc ADD CONSTRAINT fk_sc_student FOREIGN KEY (sno) REFERENCES student(sno)
– 外键的取值可以为空(NULL)。 – 外键的取值可以重复,但必须是它所引用列 (在主表中)的取值之一。引用列必须是定 义了主键约束或惟一约束的列。
唯一性约束(UNIQUE)
UNIQUE 用来限制不受主键约束的列上的数据 的唯一性。 一个表可以放置多个UNIQUE约束 语法: [CONSTRAINT constraint_name] UNIQUE ( 列名)
第九大类:二进制码字符串数据
binary:固定长度的二进制码字符串字段,最短为1, 最长为8000.
varbinary:与binary差异为数据尾部是00 时,varbinary会将其去掉 image:为可变长度的二进制码字符串,最长2G.
4.3 表结构的建立和删除
1、表的建立 表是包含数据库中所有数据的数据库对 象,用来存储各种各样的信息。 在SQL Server 2000中,一个数据库中最 多可以创建 200 万个表,用户创建数据 库表时,最多可以定义1024列。在同一 数据库的不同表中,可以有相同的字段, 但在同一个表中不允许有相同的字段, 而且每个字段都要求数据类型相同。