第三章关系数据库标准语言。 32数据定义 DB2SQL支持以下数据类型; Ⅰ NTEGER或INT全字长(31bits精度)的二进制整数 SMALLINT半字长(精度为15bits)的二进制整数 DECIMAL(p[,q])或DEC(p[,q])压缩十进制数,共p位,小数点后 有q位.15>=p>=q>=0,q=0时可省略. FLOAT双字长的浮点数 CHARTER(N)或CHAR(N)长度为n的定长字符串 VARCHAR(N) 变长字符串,最大长度为n GRAPHIC(N)长度为n的定长图形字符串 VAR GRAPHIC(N)变长图形字符串,最大长度为n DATE日期型,格式为Y-MMDD TIME时间型,格式为H.MM.SS TIMESTAMP日期加时间
• DB2 SQL 支持以下数据类型; INTEGER或INT 全字长(31 bits 精度)的二进制整数 SMALLINT 半字长(精度为15bits)的二进制整数 DECIMAL(p[,q])或DEC(p[,q]) 压缩十进制数,共p位,小数点后 有q位.15>=p>=q>=0,q=0时可省略. FLOAT 双字长的浮点数 CHARTER(N)或CHAR(N) 长度为n的定长字符串 VARCHAR(N) 变长字符串,最大长度为n GRAPHIC(N) 长度为n的定长图形字符串 VAR GRAPHIC(N)变长图形字符串,最大长度为n DATE 日期型,格式为YYYY-MM-DD TIME 时间型,格式为HH.MM.SS TIMESTAMP 日期加时间 第三章 关系数据库标准语言SQL 3.2 数据定义
第三章关系数据库标准语言 32数据定义 例:建立一个学生表San它由学号Sm,姓名m性别 值是唯”的,且姓名取值:唯。 成。其中学号不能为空 CREATE TABLF Student Smo CHAR/5/ NDT NHILL MN/QUE Same char 8/M/QE sex CHAR// ge SMAuLNT7, 8yc15 系统执行上面的EA71B语句后,就在数据库中建 立一个新的空的“学生”表Smn并将有关“学生”表 的定义及有关约束条件存放在数据字典中
第三章 关系数据库标准语言SQL 3.2 数据定义 例1:建立一个学生表Student,它由学号Sno,姓名Sname,性别Ssex, 年龄Sage,所在系Sdept五个属性组成。其中学号不能为空, 值是唯一的,且姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname char(8) UNIQUE, Ssex CHAR(1), Sage SMALLINT, Sdept CHAR(15)); 系统执行上面的CREATE TABLE语句后,就在数据库中建 立一个新的空的“学生”表Student,并将有关“学生”表 的定义及有关约束条件存放在数据字典中
第三章关系数据库标准语言。 32数据定义 例2: CREATE TABLE 列级完整性 karl/ not mal, 约束条件 mame chart/ sage smallint, dept char 表级完整性约束 birthday date, 条件 leg/mno/)
第三章 关系数据库标准语言SQL 3.2 数据定义 例2:CREATE TABLE s ( sno char(6) not null, sname char(8) unique, ssex char(2) default '男', sage smallint, sdept char(2), sbirthday date, primary key (sno) ); 列级完整性 约束条件 表级完整性约束 条件
第三章关系数据库标准语言 32数据定义 3.2.1定义、删除、与修改基本表 修改基本表 语句格式为: ALTER TABLE<表名> [ADD<列名〉<类型〉[完整性约束] [DROP<完整性约束名[(列名)]><列名为 MODIFY<列名〉<类型为 功能:修改指定的基本表 ADD子句:用于增加新列和新的完整性约束条件; DROP子句:用于删除指定的完整性约束条件; MODIFY子句:用于修改原有的列定义(列名和数据类型) 说明:不论基本表中原来是否有数据,新增加的列一律为空值 SQL没有提供删除属性列的语句
第三章 关系数据库标准语言SQL 3.2 数据定义 3.2.1 定义、删除、与修改基本表 二、 修改基本表 语句格式为: ALTER TABLE <表名> [ADD<列名> <类型>[完整性约束]] [DROP <完整性约束名[(列名)]>|<列名>] [MODIFY<列名> <类型>]; 功能:修改指定的基本表。 ADD子句:用于增加新列和新的完整性约束条件; DROP子句:用于删除指定的完整性约束条件; MODIFY子句:用于修改原有的列定义(列名和数据类型) 说明:不论基本表中原来是否有数据,新增加的列一律为空值。 SQL没有提供删除属性列的语句
第三章关系数据库标准语言 32数据定义 例3:向S表增加:“入学时间”列,数据类型为日期型 ALTER TABEL S ADD SCOME DATE 注意:新增加的属性列不能指定为 NOT NULL。 将年龄的数据类型改为半字长整数 ALTER TABEL S MODIFY SAGE SMALLINT 注意:修改原有的属性列定义有可能破坏已有数 据 删除姓名上的唯一值约束 alter table s drop unique(sname)
第三章 关系数据库标准语言SQL 3.2 数据定义 例3:向S表增加:“入学时间”列,数据类型为日期型。 ALTER TABEL S ADD SCOME DATE; 注意:新增加的属性列不能指定为 NOT NULL 。 将年龄的数据类型改为半字长整数。 ALTER TABEL S MODIFY SAGE SMALLINT; 注意:修改原有的属性列定义有可能破坏已有数 据 。 删除姓名上的唯一值约束。 alter table s drop unique(sname);