您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库 数据的定义(SQL语言)
第二章关系数据库1关系数据结构及形式化定义2数据的定义(SQL语言)3关系的完整性4关系操作关系数据的定义SQL语言数据的定义SQL概述SQL(StructuredQueryLanguage)结构化查询语言,是关系数据库的标准语言SQL是一个通用的、功能极强的关系数据库语言SQL语言功能概述四部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。表3.1SQL语言的动词SQL功能动词数据查询SELECT数据定义CREATE,DROP,ALTER数据操纵INSERT,UPDATEDELETE数据控制GRANT,REVOKE二、数据类型SQL中域的概念用数据类型来实现定义表的属性时需要指明其数据类型及长度选用哪种数据类型取值范围要做哪些运算二、数据类型数据类型含义CHAR(n)长度为n的定长字符串VARCHAR(n)最大长度为n的变长字符串INT长整数(也可以写作INTEGER)SMALLINT短整数NUMERIC(p,d)定点数,由p位数字(不包括符号、小数点)组成,小数后面有d位数字REAL取决于机器精度的浮点数DoublePrecision取决于机器精度的双精度浮点数FLOAT(n)浮点数,精度至少为n位数字DATE日期,包含年、月、日,格式为YYYY-MM-DDTIME时间,包含一日的时、分、秒,格式为HH:MM:SS数据定义表3.2SQL的数据定义语句操作方式操作对象创建删除修改数据库CREATEDATABASEDROPDATABASE模式CREATESCHEMADROPSCHEMA表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEXSQL的数据定义功能:模式定义、表定义、视图和索引的定义数据库的定义数据库定义的语法格式:CREATEDATABASE数据库名•例:创建一个学生选课数据库,取名为StudentInfo关键字CREATEDATABASEStudentInfo数据库的删除数据库删除的语法格式:DROPDATABASE数据库名•例:将数据库StudentInfo删除关键字DROPDATABASEStudentInfo定义基本表使用SQL语言中的CREATETABLE语句实现,其一般格式为:CREATETABLE表名(列名数据类型[列级完整性约束定义]{,列名数据类型[列级完整性约束定义]…}[,表级完整性约束定义])学生学号姓名性别系别年龄课程选课课程号课程名学分成绩关系模式关系模式学生(学号,姓名,性别,年龄,所在系)课程(课程号,课程名,学分)选课(学号,课程号,成绩)关系列名说明数据类型约束说明Sno学号字符串,长度为10主键Sname姓名字符串,长度为8非空值Ssex性别字符串,长度为1非空值Sage年龄整数允许空值Sdept所在系字符串,长度为15非空值列名说明数据类型约束说明Cno课程号字符串,长度为6主键Cname课程名字符串,长度为20非空值Credits学分整数允许为空值列名说明数据类型约束说明Sno学号字符串,长度为10主键Cno课程号字符串,长度为6主键Grade成绩整数允许为空值Courses表students表SC表学生表Student[例5]建立“学生”表Student,学号是主码。CREATETABLEStudent(SnoCHAR(10)PRIMARYKEY,/*列级完整性约束条件*/SnameCHAR(8),SsexCHAR(2),SageSMALLINT,SdeptCHAR(15));主码课程表Course[例6]建立一个“课程”表CourseCREATETABLECourse(CnoCHAR(6)PRIMARYKEY,CnameCHAR(20),CcreditSMALLINT,);学生选课表SC[例7]建立一个“学生选课”表SCCREATETABLESC(SnoCHAR(10),CnoCHAR(6),GradeSMALLINT,PRIMARYKEY(Sno,Cno),);如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。在列级完整性约束定义处可以定义的约束NOTNULL:限制列取值非空。PRIMARYKEY:指定本列为主码。FOREIGNKEY:定义本列为引用其他表的外码。使用形式为:[FOREIGNKEY(外码列名)]REFERENCES外表名(外表列名)UNIQUE:限制列取值不重复。CHECK:限制列的取值范围。DEFAULT:给定列的默认值。约束定义①列取值非空约束列名类型NOTNULL例:snamechar(10)NOTNULL约束定义(续)②表主码约束在定义列时定义主码(仅用于单列主码)列定义PRIMARYKEY例:SNOchar(7)PRIMARYKEY在定义完列时定义主码(用于单列或多列主码,表级约束)PRIMARYKEY(列名序列)例:PRIMARYKEY(SNO)PRIMARYKEY(SNO,CNO)约束定义(续)③外码引用约束指明本表外码列引用的表及表中的主码列。[FOREIGNKEY(本表列名)]REFERENCES外表名(外表主码列名)例:FOREIGNKEY(sno)REFERENCES学生表(sno)约束定义(续)④默认值约束格式:DEFAULT默认值例:定义系的默认值为“计算机系”。DEFAULT‘计算机系’约束定义(续)⑤CHECK约束格式:CHECK(约束表达式)例:定义成绩大于等于0。CHECK(grade=0)约束定义(续)⑥UNIQUE约束在列级约束定义(仅用于单列约束)列定义UNIQUE例:SNAMEchar(7)UNIQUE在表级约束定义(用于单列或多列组合约束)UNIQUE(列名序列)例:UNIQUE(SNO,CNO)关系列名说明数据类型约束说明Sno学号字符串,长度为10主键Sname姓名字符串,长度为8取值唯一Ssex性别字符串,长度为1取“男”或“女”Sage年龄整数取值范围为(15,45)Sdept所在系字符串,长度为15默认值“计算机系”列名说明数据类型约束说明Cno课程号字符串,长度为6主键Cname课程名字符串,长度为20非空值Credits学分整数取值范围为(0,20)列名说明数据类型约束说明Sno学号字符串,长度为10外键,参照students的主键Cno课程号字符串,长度为6外键,参照courses的主键Grade成绩整数允许为空值Courses表students表SC表主键为(Sno,Cno)创建学生表CREATETABLEStudent(Snochar(7)PRIMARYKEY,Snamechar(10)NOTNULL,Ssexchar(2)CHECK(Ssex='男'ORSsex='女'),SagetinyintCHECK(Sage=15ANDSage=45),Sdeptchar(20)DEFAULT‘计算机系')创建课程表CREATETABLECourse(Cnochar(10)NOTNULL,Cnamechar(20)NOTNULL,CcreditintCHECK(Ccredit0),SemesterintCHECK(Semester0),PeriodintCHECK(Period0),PRIMARYKEY(Cno))练习P745删除表当确信不再需要某个表时,可以将其删除删除表时会将与表有关的所有对象一起删掉,包括表中的数据。删除表的语句格式为:DROPTABLE表名例:删除test表的语句为:DROPTABLEtest数据的定义基本表的定义与删除修改表结构修改表结构在定义完表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用ALTERTABLE语句实现。ALTERTABLE语句可以对表添加列、删除列、修改列的定义、定义主码、外码,也可以添加和删除约束。修改表结构语法ALTERTABLE表名[ALTERCOLUMN列名新数据类型]|[ADD列名数据类型|[DROPCOLUMN列名]|[ADDPRIMARYKEY(列名[,…n])]|[ADDFOREIGNKEY(列名)REFERNECES表名(列名)]、|[ADDDEFAULT[默认值]FOR(列名)]|[ADDCHECK(约束表达式)]示例例.为SC表添加“修课类别”列,此列的定义为:XKLBchar(4)只能为空,或默认,不能为NOTNULLALTERTABLESCADDXKLBchar(4)NULL示例例3.将新添加的XKLB的类型改为char(6)。ALTERTABLESCALTERCOLUMNXKLBchar(6)示例例4.删除Course表的XKLB列。ALTERTABLECourseDROPCOLUMNXKLB例题将SC表中的Cno设置为course表中Cno列的外码练习按下面要求用SQL语句修改表结构在Students表中插入学生宿舍号一列,定义为:Roomchar(6)为Students表中Sage列添加检查约束,要求Sage的取值范围为(15,45)将Courses表中的Cname的字符串长度改为16将Courses表中的Cname的取只设置为唯一取值删除Students表中学生宿舍号列为SC表中Grade列添加检查约束,要求Grade的取值范围为[0,100]数据完整性约束数据完整性是指数据库中存储的数据是有意义的或正确的。•主要包括三大类:•实体完整性•参照完整性•用户定义的完整性实体完整性实体完整性是保证关系中的每个元组都是可识别的和惟一的。而且表中不允许存在如下的记录:无主码值的记录主码值相同的记录参照完整性用于描述实体之间的联系。参照完整性一般是指多个实体(表)之间的关联关系。一般用外码实现。外码:取作本表(子表)属性之一的外表(父表,主表)主码。主码值先在主表中生成,后在子表中引用外码引用例学生课程修课(学号,姓名,…)(课程号,课程名,…)(学号,课程号,成绩,…)参照完整性规则参照完整性规则就是定义外码与主码之间的引用规则。对于外码,一般应符合如下要求:或者值为空;或者等于其所应用的关系中的某个元组的主码值。用户定义的完整性按应用语义,属性数据有:类型与长度限制:方便计算机操作取值范围限制:防止属性值与应用语义矛盾语义许可取值范围约束例:成绩取[0..100],{优、良、中、及格、不及格}
本文标题:数据库 数据的定义(SQL语言)
链接地址:https://www.777doc.com/doc-5533001 .html