数据类型和索引和表.ppt_第1页
数据类型和索引和表.ppt_第2页
数据类型和索引和表.ppt_第3页
数据类型和索引和表.ppt_第4页
数据类型和索引和表.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

组长 韩立娜汇报人 于思会组员 韩立娜于思会刘述玲程雁春桓国艳赵晴晴 Oracle数据库中常用的基本数据类型 Sqlserver数据库中常用的数据类型 数据类型指定列 存储过程参数及局部变量的数据特性数据按照数据类型存储在列中系统数据类型 系统数据类型是SQLServer支持的内置数据类型用户定义的数据类型 用户根据系统数据类型自己定义的数据类型 系统数据类型 1 系统数据类型 2 系统数据类型 3 系统数据类型 4 系统数据类型 5 系统数据类型 6 系统数据类型 7 系统数据类型 8 用户定义的数据类型特性 使用系统数据类型定义具有预定义长度指定其中是否可存储null值指定是否必须赋予默认值指定是否要应用现有规则 管理用户定义的数据类型 1 sp addtype typename type phystype system data type nulltype null type 管理用户定义的数据类型 2 参数 typename type用户定义数据类型的名称 数据类型名称必须遵循标识符规则 并且在每个数据库中必须是唯一的 type是sysname 无默认值 phystype system data type物理或SQLServer提供的数据类型 decimal int等 用户定义的数据类型即基于该类型 system data type是sysname 无默认值 nulltype null type 指定必须如何处理null值 null type是varchar 8 设置值为 NULL 默认 NOTNULL 或 NONULL Access数据库常用数据类型 Access2000中字段可用的数据类型有以下几种 文本 Text 文本 文本与数字 不必计算的数字 最长255个字符 备注 Memo 较长的文本 最长64 000字符 数字 Number 型 用于算术运算的数字 可在 字段大小 中分字节 整型 单精度等子类型 日期及时间 Date Time 从100到9999的日期及时间值 可进行日期及时间的计算 8字节 货币 Currency 货币值 使用货币类型可避免计算时四舍五入 8字节 自动编号 AutoNumber 添加记录时的自动序号递增 添一条记录 字段值增1 随机 添一条记录 字段值为另一随机数 2 字段的数据类型 是 否 Yes No 取两种值之一 如Yes No True False On Off 大小为1位 OLE对象 Object 可链接或嵌入其他使用OLE协议的程序所创建的对象 如Word文档 图象 声音等 最多1G 对象可链接或嵌入到Access表中 但只能在窗体或报表中使用绑定对象框来显示 超链接 Hyperlink 超文本 用作超链接地址 超链接最多包含三部分 显示文本 在字段或控件中显示的文本 地址 到文件 UNC 或页面 URL 的路径 子地址 在文件或页面中的地址 查阅向导 LookupWizard 由查阅向导创建 字段的值来自另一个表或数据列表中 可在列表框或组合框中选择一个数据作为其值 备注型 超链接型和OLE对象型字段不能索引 若在表中输入数据后更改字段的数据类型 则在保存表时 由于进行大量数据转换 时间较长 若新的 数据类型 属性的设置与段原数据类型冲突 可能会丢失某些数据 Number Date Time Currency和Yes No类型具有预定义格式 可设置格式 但OLE对象型除外 5 选择数据类型时应注意的问题 MySQL数据类型 数据类型种类数值列类型字符串列类型日期和时间列类型 数据类型种类 数值型分为整型和浮点型整型 可以由十进制和十六进制表示整数由数字序列组成 如 1 100 由十六进制表示方法 0 x且后面加1 9和A F的任意数字或字母 并且0 x中的X不能大写 浮点型 浮点数由一个数字加一个小数点再加上一个数字组成 两个数字序列不能同时为空 字符串 由单引号或者双引号括起来的字符或者数字 如 abc abc10 字符串中要用转义字符才能表示的特殊符号 日期和时间值是存储如 2005 1 1 或者 12 00 00 这样的数值的值 在MySQL中日期是按 年 月 日 的顺序 NULL值是一种无类型的值 表示 空 什么也没有 数值列类型 MySQL为除了NULL值外的所有通用数据类型提供了列类型 列类型是一种手段 通过这种手段可以描述表的列可以包含什么样类型的值 数值列类型所有数值列类型的类型名及其说明和所占的字节数见下表 数值列类型包括整型和浮点型说明 TINYINT SAMLLINT MEDIUMINT INT BIGINT每个数据类型的取值范围不同 故分别可以表示不同的数值范围 在定义整型列时 可以指定可选的显示尺寸M 见上表 M是从1到255的值 它表示显示列中值的字符数 字符串列类型所有字符串列类型及其说明和所占的字节数见下表 说明 对于可变长的字符串类型 其长度取决于实际存放在列中的值的长度 此长度在上表中用L来表示 附加若干额外字节 用来记录字符串长度 也就是说总长度等于L n n 1 2 3 4 8 CHAR和VARCHAR类型CHAR类型和VARCHAR类型长度范围都是0 255之间的大小 他们之间的差别在于MySQL处理存储的方式 CHAR把这个大小视为值的准确大小 用空格填补比较短的值 VARCHAR类型把它视为最大值并且只使用了存储字符串实际上需要的字节数 增加了一个额外的字节记录长度 因而 较短的值当被插入一个语句为VARCHAR类型的字段时 将不会用空格填补 然而 较长的值仍然被截短 BLOB和TEXT类型BLOB是二进制大对象 如果想存储二进制数BLOB将是最佳选择 而TEXT与之相同 只是BOLOB按照二进制编码排序 区分大小写 TEXT按照字符文本模式排序 不区分大小写 ENUM和SET类型是特殊的串类型 其列值必须从固定的串集中选择 二者差别为前者必须是只能选择其中的一个值 而后者可以多选 不推荐使用 日期和时间列类型所有时间和日期列类型的类型名及其说明和所占的字节数见下表 说明 每个时间和日期列类型都有一个零值 当插入非法数值时就用零值来添加表示日期时必须先按 年 月 日的顺序给出DATE TIME DATETIME分别是存储日期 时间与日期和时间的组合 其格式为 YYYY MM DD hh mm ss 和 YYYY MM DDhh mm ss 对于DATETIME类型 日期和时间部分都需要TIMESTAMP时间戳列类型以YYYYMMDDhhmmss的格式来表示值 其取值范围是19700101000000到2037年的某个时间 主要用于记录更改或创建某个记录 总结 常用数据类型 3 3 3索引的建立和删除 建立索引是加快查询速度的有效手段建立索引DBA或表的属主 即建立表的人 根据需要建立有些DBMS自动建立以下的索引PRIMARYKEYUNIQUE 一 建立索引 语句格式CREATE UNIQUE INDEXON 用指定要建索引的基本表名字索引可以建立在该表的一列或多列上 各列名之间用逗号分隔用指定索引值的排列次序 升序 ASC 降序 DESC 缺省值 ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录 例题 例14 为学生 课程数据库中的Student Course两个表建立索引 其中Student表按姓名升序建索引 Course表按课程名称降序建唯一索引 CREATEINDEXstu sname indexONStudent S name CREATEUNIQUEINDEXcourse cname indexONCourse C namedesc 删除索引 DROPINDEX 删除索引时 系统会从数据字典中删去有关该索引的描述 例15 删除Student表的stu sname index索引 DROPINDEXstu sname index 注意 主键索引不能被删除 删除主键约束时 主键索引会被自动删除 3 4 1单表查询 查询仅涉及一个表 是一种最简单的查询操作一 选择表中的若干列二 选择表中的若干元组三 orderby子句四 聚集函数 aggregatefunctions 五 groupby子句 一 选择表中的若干列 1 查询指定列 例1 查询全体学生的学号与姓名 SELECTSno SnameFROMStudent 例2 查询全体学生的姓名 学号 所在系 SELECTSname Sno SdeptFROMStudent 例3 查询全体学生的详细记录 SELECTSno Sname Ssex SBirthday SdeptFROMStudent 或SELECT FROMStudent 2 查询全部列 SELECT子句的为表达式算术表达式字符串常量函数列别名等 3 查询经过计算的值 3 查询经过计算的值 例4 查全体学生的姓名及其年龄 SELECTSname Ceil SysDate Sbirthday 365 FROMStudent 输出结果 SnameCeil SysDate Sbirthday 365 李勇20刘晨21王名19张立19 3 查询经过计算的值 例5 查询全体学生的姓名 出生年份和所有系 要求用小写字母表示所有系名 SELECTSname age Ceil SysDate Sbirthday 365 LOWER Sdept FROMStudent 例题 续 输出结果 Sname age Ceil SysDate Sbirthday 365 LOWER Sdept 李勇age 20cs刘晨age 21is王名age 19ma张立age 19is 例6 使用列别名改变查询结果的列标题 SELECTSname姓名 Ceil SysDate Sbirthday 365 年龄 LOWER Sdept 所在系FROMStudent 输出结果 姓名年龄所在系 李勇20cs刘晨21is王名19ma张立19is 二 选择表中的若干元组 消除取值重复的行查询满足条件的元组 1 消除取值重复的行 在SELECT子句中使用DISTINCT短语假设SC表中有下列数据SnoCnoGrade 9500119295001285950013889500229095002380 ALL与DISTINCT 例6 查询选修了课程的学生学号 1 SELECTSnoFROMSC 或 默认ALL SELECTALLSnoFROMSC 结果 Sno 9500195001950019500295002 例题 续 2 SELECTDISTINCTSnoFROMSC 结果 Sno 9500195002 例题 续 注意DISTINCT短语的作用范围是所有目标列例 查询选修课程的各种成绩错误的写法SELECTDISTINCTCno DISTINCTGradeFROMSC 正确的写法SELECTDISTINCTCno GradeFROMSC 2 查询满足条件的元组 WHERE子句常用的查询条件 1 比较大小 在WHERE子句的中使用比较运算符 20 2 确定范围 使用谓词BETWEEN AND NOTBETWEEN AND 例10 查询年龄在20 23岁 包括20岁和23岁 之间的学生的姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageBETWEEN20AND23 例题 续 例11 查询年龄不在20 23岁之间的学生姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageNOTBETWEEN20AND23 3 确定集合 使用谓词IN NOTIN 用逗号分隔的一组取值 例12 查询信息系 IS 数学系 MA 和计算机科学系 CS 学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptIN IS MA CS 3 确定集合 例13 查询既不是信息系 数学系 也不是计算机科学系的学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptNOTIN IS MA CS 4 字符串匹配 NOT LIKE ESCAPE 指定匹配模板匹配模板 固定字符串或含通配符的字符串当匹配模板为固定字符串时 可以用 运算符取代LIKE谓词用 或运算符取代NOTLIKE谓词 通配符 百分号 代表任意长度 长度可以为0 的字符串例 a b表示以a开头 以b结尾的任意长度的字符串 如acb addgb ab等都满足该匹配串 下横线 代表任意单个字符例 a b表示以a开头 以b结尾的长度为3的任意字符串 如acb afb等都满足该匹配串 ESCAPE短语 当用户要查询的字符串本身就含有 或 时 要使用ESCAPE 短语对通配符进行转义 例题 1 匹配模板为固定字符串 例14 查询学号为95001的学生的详细情况 SELECT FROMStudentWHERESnoLIKE 95001 等价于 SELECT FROMStudentWHERESno 95001 例题 续 2 匹配模板为含通配符的字符串 例15 查询所有姓刘学生的姓名 学号和性别 SELECTSname Sno SsexFROMStudentWHERESnameLIKE 刘 例题 续 匹配模板为含通配符的字符串 续 例16 查询姓 欧阳 且全名为三个汉字的学生的姓名 SELECTSnameFROMStudentWHERESnameLIKE 欧阳 例题 续 匹配模板为含通配符的字符串 续 例17 查询名字中第2个字为 阳 字的学生的姓名和学号 SELECTSname SnoFROMStudentWHERESnameLIKE 阳 例题 续 匹配模板为含通配符的字符串 续 例18 查询所有不姓刘的学生姓名 SELECTSnameFROMStudentWHERESnameNOTLIKE 刘 例题 续 使用换码字符将通配符转义为普通字符 续 例20 查询以 DB 开头 且倒数第3个字符为i的课程的详细情况 SELECT FROMCourseWHERECnameLIKE DB i ESCAPE 5 涉及空值的查询 使用谓词ISNULL或ISNOTNULL ISNULL 不能用 NULL 代替 例21 某些学生选修课程后没有参加考试 所以有选课记录 但没有考试成绩 查询缺少成绩的学生的学号和相应的课程号 SELECTSno CnoFROMSCWHEREGradeISNULL 例题 续 例22 查所有有成绩的学生学号和课程号 SELECTSno CnoFROMSCWHEREGradeISNOTNULL 6 多重条件查询 用逻辑运算符AND和OR来联结多个查询条件AND的优先级高于OR可以用括号改变优先级可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 例题 例23 查询计算机系年龄在20岁以下的学生姓名 SELECTSnameFROMStudentWHERESdept CS ANDSage 20 改写 例12 例12 查询信息系 IS 数学系 MA 和计算机科学系 CS 学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptIN IS MA CS 可改写为 SELECTSname SsexFROMStudentWHERESdept IS ORSdept MA ORSdept CS 改写 例10 例10 查询年龄在20 23岁 包括20岁和23岁 之间的学生的姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageBETWEEN20AND23 可改写为 SELECTSname Sdept SageFROMStudentWHERESage 20ANDSage 23 三 orderby子句 使用ORDERBY子句可以按一个或多个属性列排序升序 ASC 降序 DESC 缺省值为升序当排序列含空值时ASC 排序列为空值的元组最后显示DESC 排序列为空值的元组最先显示 Orderby子句 续 例24 查询选修了3号课程的学生的学号及其成绩 查询结果按分数降序排列 SELECTSno GradeFROMSCWHERECno 3 ORDERBYGradeDESC 查询结果 SnoGrade 9501095024950079295003829501082950097595014619500255 Orderby子句 续 例25 查询全体学生情况 查询结果按所在系的系号升序排列 同一系中的学生按年龄降序排列 SELECT FROMStudentORDERBYSdept SageDESC 四 聚集函数 5类主要集函数计数COUNT DISTINCT ALL COUNT DISTINCT ALL 计算总和SUM DISTINCT ALL 计算平均值AVG DISTINCT ALL 聚集函数 续 求最大值MAX DISTINCT ALL 求最小值MIN DISTINCT ALL DISTINCT短语 在计算时要取消指定列中的重复值ALL短语 不取消重复值ALL为缺省值 聚集函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论