《网络数据库开发技术》全套PPT电子课件教案-第2章 SQL语言基础.ppt_第1页
《网络数据库开发技术》全套PPT电子课件教案-第2章 SQL语言基础.ppt_第2页
《网络数据库开发技术》全套PPT电子课件教案-第2章 SQL语言基础.ppt_第3页
《网络数据库开发技术》全套PPT电子课件教案-第2章 SQL语言基础.ppt_第4页
《网络数据库开发技术》全套PPT电子课件教案-第2章 SQL语言基础.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第2章 sql语言基础 2.1 2.1 sqlsql语言基本知识语言基本知识 2.2 2.2 数据定义命令数据定义命令 2.3 2.3 数据查询语言数据查询语言 2.4 2.4 数据操纵命令数据操纵命令 主要内容 介绍sql语言的历史、特点及基本命令 的使用方法。 n2.1.1 sql的发展史 n1974年ibm圣约瑟实验室的boyce和 chamberlin为关系数据库管理系统system-r 设计的一种查询语言,当时称为sequel语言 (structured english query language) ,后简称为sql。 n1981年ibm推出关系数据库系统sql/ds后, sql得到了广泛应用。 n1986年美国国家标准协会(ansi)公布了第 一个sql标准sql86。 n1987年,iso通过sql86标准。 2.1 sql语言基本知识 n1989年,iso制定sql89标准,sql89标准 在sql86基础上增补了完整性描述。 n1990年,我国制定等同sql89的国家标准 。 n1992年,iso制定sql92标准,即sql2。 n1999年,ansi制定sql3标准。 n在许多软件产品中,软件厂商都对sql的 基本命令集进行了扩充,将其扩展成嵌入 式sql语言。sql server 2000中使用 transact-sql语言与数据库服务器打交道 。 n2.1.2 sql的特点 n1sql(structured query language)全称是 结构化查询语言,是一种关系数据库语言,提供 数据的定义、查询、更新和控制等功能。功能强 大、能够完成各种数据库操作。 n2sql语言不是一个应用程序开发语言,它只提 供对数据库的操作能力,不能完成屏幕控制、菜 单管理、报表生成等功能。 n3有利于各种数据库之间交换数据、有利于程 序的移植、有利于实现程序和数据间的独立性; 有利于实施标准化; n4书写简单、易学易用。 n2.1.3 sql的分类 n1、数据定义语言(ddl:data definition language) n创建、修改或删除数据库中各种对象,包括表、 视图、索引等。 n2、查询语言(ql:query language) n按照指定的组合、条件表达式或排序检索已存在 的数据库中的数据,但并不改变数据库中数据。 n3 、数据操纵语言 (dml:data manipulation language ) n对已经存在的数据库进行记录的插入、删除、修 改等操作 n4、数据控制语言(dcl:data control language) n用来授予或收回访问数据库的某种特权、 控制数据操纵事务的发生时间及效果、对 数据库进行监视 n注意:在书写各种sql 命令时,命令中所 涉及的标点符号,如括号、逗号、分号、 圆点(英文句号)等都应是英文半角,如 果写成中文全角符号,则会在执行命令时 出错。 n数据定义命令用于建立数据库和建立、修 改、删除基本表。 n2.2.1 建立数据库 ncreate database ; n例如建立学费管理数据库的命令是: ncreate database xfgl; 2.2 数据定义命令 n2.2.2 建立数据表 n建立基本表的命令格式为: ncreate table (not null, nnot null,); n其中:not null指的是该列的值不能为空值 。 n例1:建立学生基本情况表的命令是: ncreate table jbqk(number char(8)not null, nname char(8)not null,sex char(2)not null, nbirthday datetime,department char(12); nsql server 2000中常用的数据类型: nint或integer:整数,占用4个字节 ndecimal或numeric:数字数据类型,格式decimal( 数据长度,小数位数) nfloat 和 real:浮点数,float更灵活一些 ndatetime:代表日期和一天内的时间的日期和时间 数据类型。从1753年1月1日到9999年12月31日的日 期和时间数据,如:1998-01-01 23:59:59.993 nchar:固定长度字符数据类型:格式:char(n) nn 必须是一个介于 1 和 8,000 之间的数值,当使用字 符型数据时需要用或”括起来。 n建立课程表的命令是: ncreate table course(c_number char(4)not null, nc_name char(20)not null,period decimal(3,0), nt_number char(4) not null); n建立教师表(teacher)的命令是:: ncreate table teacher(t_number char(4) not null,t_name char(8),title char(10); n建立选课表(sle_course)的命令是:: ncreate table sle_course(number char(8) not null,c_number char(4),score decimal(3,0); n2.2.3 数据表的修改 n1添加新列命令: nalter table add 列名 数据类型; n例2:下面命令在jbqk表中添加“score”列 。 nalter table jbqk add score decimal(3,0); n2删除表中的列 nalter table drop column 列名; n例3:下面命令在jbqk表中添加“成绩”列之 后,再删除“score”列。 nalter table jbqk add 成绩 decimal(3,0); nalter table jbqk drop column score; n2.2.4 数据表的删除 ndrop table ; n例4:删除刚才所建的jbqk表,使用如下命令 格式: ndrop table jbqk; n2.2.5 索引的建立与删除 n索引是对数据库表中一个或多个列的值进行 排序的结构。可以利用索引快速访问数据库 表中的特定信息。 n1建立索引语句 ncreate unique index 索引名 on 基本表 名(列名次序,列名次序); n说明:索引可以建立在一列和多列之上,索 引顺序可以是asc(升序)或desc(降序) ,缺省值是升序。unique表示每一个索引值 对应唯一的数据记录。 n例5:在学生基本情况表jbqk之上建立一个关 于学生表的索引文件。索引文件名为“学生索 引”,索引建立在学号之上,按学号降序排序 。 ncreate index 学生索引 on jbqk(name desc); n2删除索引语句 ndrop index .; n注意:该命令不能删除由create table或者 alter table命令创建的主键和唯一性约束索 引,也不能删除系统表中的索引。 n例6:删除例5创建的索引“学生索引”。程序 如下: ndrop index jbqk.学生索引 2.3 数据查询语言 n2.3.1 查询语句格式 nsql语言的查询语句一般格式是: nselect all|distinct, n from , nwhere ngroup by having norder by asc|desc; n下面对该命令进行一些说明: 投影(列选择) 选择(行) n1命令含义 n 从from子句指定基本表或视图中,根据where 子句的条件表达式查找出满足该条件的记录,按 照select子句指定的目标列表达式,选出元组中 的属性值形成结果表。如果有group by子句,则 将结果按“列名1”的值进行分组,该属性列值 相等的元组为一个组;如果group by子句带有短 语having,则只有满足短语指定条件的分组才会 输出。如果有order by子句,则结果表要按照的值进行升序和降序排列。 nselect all|distinct实现的 是对表的投影操作,where 中实现 的是选择操作。 n2目标列表达式 n列表达式可以是“列名1,列名2”的形式;如果 from子句指定了多个表,则列名应是“表名.列名” 的形式。 n列表达式可以使用sql提供的库函数形成表达式, 常用的函数如下: ncount(*):统计记录条数。 ncount(列名):统计一列值得个数。 nsum(列名):计算某一数值型列的值的总和。 navg(列名):计算某一数值型列的值的平均值 nmax(列名):计算某一数值型列的值的最大值 nmin(列名):计算某一数值型列的值的最小值 ndistinct参数:表示在结果集中,查询出的内容 相同的记录只留下一条。 n2.3.2 单表查询 n单表查询是指仅设计一个表的查询。 n1选择表中的列 n例1:选择jbqk表中的所有列。 nselect * from jbqk; n例2:选择jbqk表中的number、name、 department列。 nselect number,name,department from jbqk; n例3:选择jbqk中所有各个系的名字,去掉重 复行。 nselect distinct department from jbqk; nselect 2003-year(birthday) from jbqk n2选择表中的记录 n选择表中的记录是通过where子句实现的 。 n例4:选择jbqk中所有计算机系的学生。 nselect * from jbqk where department=计算机系 n3条件表达式的构成 查 询条 件 运 算 符说 明 比 较 ,=, 字符串比较从左向 右进行 确 定范 围 between and, not between and between后是下 限,and后是上限 确 定集 合 in,not in检查一个属性值是 否属于集合中的值 字 符匹 配 like,not like用于构造条件表达 式中的字符匹配 空 值 is null,is not null 当属性值内容为空 时,要用此运算符 逻 辑运 算 and,or,not用于构造复合表达 式 n例5:查询考试成绩不及格学生的学号。 nselect distinct number from sle_course n where score ) 统计一列重值的个数 sum(distinct|all)计算数值型一列值的总和 avg(distinct|all)求一列值的平均值 max(distinct|all)求一列值的最大值 min(distinct|all)求一列值的最小值 n例10:查询学生总人数。 nselect count(*) from jbqk; n例11:计算0052201学生的平均成绩。 nselect avg(score) n from jbqk n where number = 0052201; n 5查询结果的分组与排序 n group by子句将查询结果表按某一列或多列值 分组,值相等的为一组。分组的目的是为了将集 函数的作用对象细化,分组后集函数将作用在每 一个组上,也就是说每个组都有一个函数值。 n 例12:查询选修了2门以上课程的学生学号,并 且查询结果按照升序排列。 n select number from sle_course n group by number having count(*) 2 n order by number asc; n where与having的区别在于作用的对象不同 。where子句作用于基本表或视图,从中选择满 足条件的记录;having短语作用于分组,从中 选出满足条件的组。 n2.3.3 多表查询 n例13:查询所有选修课程的学生信息,包括 所学的课程名、授课教师和成绩。 nselect jbqk.number,,course.c_name,sle _course.score,teacher.t_name nfrom jbqk,course,sle_course,teacher nwhere jbqk.number=sle_course.number and nsle_course.c_number=course.c_number and ncourse.t_number=teacher.t_number n2.3.4 嵌套查询 n 在sql语言中,一个 selectfromwhere语句成为一个查询 块。将一个查询块嵌套在另一个查询块的 where子句(或having短语)的条件中的 查询称为嵌套查询。处于内层的查询称为子查 询。嵌套查询命令在执行时,每个子查询在上 一级查询处理之前求解,即由里向外查。 n例14:查询选修了“数据库技术”课程的学生姓名。 nselect n from jbqk n where jbqk. number in( nselect sle_course.number n from sle_course n where sle_course.c_number in ( n select course.c_number n from course n where course.c_name=数据库技术 ); n在一些嵌套查询中where之后可以使用 any和all这两个谓词,any表示子查 询结果中的某个值,而all表示子查询 结果中的所有值。 谓词形式语 义谓词形式语 义 any 大于子查询结果中的某 个值 all 大于子查询结果中的所 有值 any 大于等于子查询结果中 的某个值 all 大于等于子查询结果中 的所有值 ) all 不等于子查询结果中的 所有值 !=(或=95) 2.4 数据操纵语言 n2.4.1 插入数据 ninsert into ( , , ) nvalues ( , , , ) n例1:向学生基本情况表(jbqk)中插入 一条记录。 ninsert into jbqk values(005

温馨提示

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

评论

0/150

提交评论