数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章

上传人:w****i 文档编号:94556126 上传时间:2019-08-08 格式:PPT 页数:43 大小:133KB
返回 下载 相关 举报
数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章_第1页
第1页 / 共43页
数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章_第2页
第2页 / 共43页
数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章_第3页
第3页 / 共43页
数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章_第4页
第4页 / 共43页
数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章》由会员分享,可在线阅读,更多相关《数据库系统原理与应用实训教程——PowerBuilder & SQL Server版教学课件 数据库原理第04章(43页珍藏版)》请在金锄头文库上搜索。

1、第4章 结构化查询语言SQL,2019/8/8,4.1 SQL语言基本知识 4.1.1 SQL的发展史 1974年IBM圣约瑟实验室的Boyce和Chamberlin为关系数据库管理系统System-R设计的一种查询语言,当时称为SEQUEL语言(Structured English Query Language),后简称为SQL。 1981年IBM推出关系数据库系统SQL/DS后,SQL得到了广泛应用。 1986年美国国家标准协会(ANSI)公布了第一个SQL标准SQL86。 1987年,ISO通过SQL86标准。,2019/8/8,1989年,ISO制定SQL89标准,SQL89标准在SQ

2、L86基础上增补了完整性描述。 1990年,我国制定等同SQL89的国家标准。 1992年,ISO制定SQL92标准,即SQL2。 1999年,ANSI制定SQL3标准。 在许多软件产品中,软件厂商都对SQL的基本命令集进行了扩充,将其扩展成嵌入式SQL语言。SQL Server 2000中使用Transact-SQL语言与数据库服务器打交道。,2019/8/8,4.1.2 SQL的特点 SQL具有如下特点: 1SQL(Structured Query Language)全称是结构化查询语言,是一种关系数据库语言,提供数据的定义、查询、更新和控制等功能。功能强大、能够完成各种数据库操作。 2S

3、QL语言不是一个应用程序开发语言,它只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能。 3有利于各种数据库之间交换数据、有利于程序的移植、有利于实现程序和数据间的独立性;有利于实施标准化; 4书写简单、易学易用。,2019/8/8,4.1.3 SQL的分类 1、数据定义语言(DDL:Data Definition Language) 创建、修改或删除数据库中各种对象,包括表、视图、索引等。 2、查询语言(QL:Query Language) 按照指定的组合、条件表达式或排序检索已存在的数据库中的数据,但并不改变数据库中数据。 3、数据操纵语言(DML:Data Manipu

4、lation Language ) 对已经存在的数据库进行记录的插入、删除、修改等操作,2019/8/8,4、数据控制语言(DCL:Data Control Language) 用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视 注意:在书写各种SQL 命令时,命令中所涉及的标点符号,如括号、逗号、分号、圆点(英文句号)等都应是英文半角,如果写成中文全角符号,则会在执行命令时出错。,2019/8/8,4.2 数据定义命令 数据定义命令用于建立数据库和建立、修改、删除基本表。 4.2.1 建立数据库 ANSI标准SQL中建立数据库(SCHEMA:模式)的命令是

5、: CREATE SCHEMA AUTHORIZATION ; 例如:创建者是温翠灵,则上面命令写作: CREATE SCHEMA AUTHORIZATION 温翠灵; 大多数的关系数据库管理系统(RDBMS),所使用的命令格式于ANSI SQL不同,这些RDBMS更常用下面命令格式: CREATE DATABASE ; 例如建立学费管理数据库的命令是: CREATE DATABASE xfgl;,2019/8/8,4.2.2 建立数据表 建立基本表的命令格式为: CREATE TABLE (NOT NULL, NOT NULL,); 其中:NOT NULL指的是该列的值不能为空值。 例1:在

6、SQL SERVER中建立如表4-2所示学生基本情况表的命令是: create table jbqk(number char(8)not null, name char(8)not null,sex char(2)not null, birthday datetime,department char(12);,2019/8/8,SQL Server 2000中常用的数据类型: Int或integer:整数,占用4个字节 Decimal或numeric:数字数据类型,格式Decimal(数据长度,小数位数) float 和 real:浮点数,float更灵活一些 datetime:代表日期和一天

7、内的时间的日期和时间数据类型。从1753年1月1日到9999年12月31日的日期和时间数据,如:1998-01-01 23:59:59.993 char:固定长度字符数据类型:格式:char(n) n 必须是一个介于 1 和 8,000 之间的数值,当使用字符型数据时需要用或”括起来。,2019/8/8,建立如表4-3所示课程表的命令是: create table course(c_number char(4)not null, c_name char(20)not null,period decimal(3,0), t_number char(4) not null); 建立如表4-4所示教

8、师表(teacher)的命令是:: create table teacher(t_number char(4) not null,t_name char(8),title char(10); 建立如表4-5所示选课表(sle_course)的命令是:: create table sle_course(number char(8) not null,c_number char(4),score decimal(3,0);,2019/8/8,4.2.3 数据表的修改 1添加新列命令: ALTER TABLE ADD 列名 数据类型; 例2:下面命令在jbqk表中添加“score”列。 alter

9、table jbqk add score decimal(3,0); 2删除表中的列 ALTER TABLE DROP COLUMN 列名; 例3:下面命令在jbqk表中添加“成绩”列之后,再删除“score”列。 alter table jbqk add 成绩 decimal(3,0); alter table jbqk drop column score;,2019/8/8,4.2.4 数据表的删除 DROP TABLE ; 例4:删除刚才所建的jbqk表,使用如下命令格式: drop table jbqk;,2019/8/8,4.2.5 索引的建立与删除 索引是对数据库表中一个或多个列的

10、值进行排序的结构。可以利用索引快速访问数据库表中的特定信息。 1建立索引语句 CREATE UNIQUE INDEX 索引名 ON 基本表名(列名次序,列名次序); 说明:索引可以建立在一列和多列之上,索引顺序可以是ASC(升序)或DESC(降序),缺省值是升序。UNIQUE表示每一个索引值对应唯一的数据记录。,2019/8/8,例5:在学生基本情况表jbqk之上建立一个关于学生表的索引文件。索引文件名为“学生索引”,索引建立在学号之上,按学号降序排序。 Create index 学生索引 on jbqk(name desc); 2删除索引语句 DROP INDEX .; 注意:该命令不能删除

11、由CREATE TABLE或者ALTER TABLE命令创建的主键和唯一性约束索引,也不能删除系统表中的索引。 例6:删除例5创建的索引“学生索引”。程序如下: DROP INDEX JBQK.学生索引,2019/8/8,4.3 数据查询语言,4.3.1 查询语句格式 SQL语言的查询语句一般格式是: SELECT ALL|DISTINCT, FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC; 下面对该命令进行一些说明:,2019/8/8,1命令含义 从FROM子句指定基本表或视图中,根据WHERE子句的条件表达式查找出满足该条件的记录,按照SELE

12、CT子句指定的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP BY子句,则将结果按“列名1”的值进行分组,该属性列值相等的元组为一个组;如果GROUP BY子句带有短语HAVING,则只有满足短语指定条件的分组才会输出。如果有ORDER BY子句,则结果表要按照的值进行升序和降序排列。 SELECT ALL|DISTINCT实现的是对表的投影操作,WHERE 中实现的是选择操作。,2019/8/8,2目标列表达式 列表达式可以是“列名1,列名2”的形式;如果FROM子句指定了多个表,则列名应是“表名.列名”的形式。 列表达式可以使用SQL提供的库函数形成表达式,常用的函数如下:

13、COUNT(*):统计记录条数。 COUNT(列名):统计一列值得个数。 SUM(列名):计算某一数值型列的值的总和。 AVG(列名):计算某一数值型列的值的平均值 MAX(列名):计算某一数值型列的值的最大值 MIN(列名):计算某一数值型列的值的最小值 DISTINCT参数:表示在结果集中,查询出的内容相同的记录只留下一条。,2019/8/8,4.3.2 单表查询 单表查询是指仅设计一个表的查询。 1选择表中的列 例1:选择jbqk表中的所有列。 select * from jbqk; 例2:选择jbqk表中的number、name、department列。 select number,n

14、ame,department from jbqk; 例3:选择jbqk中所有各个系的名字,去掉重复行。 select distinct department from jbqk; select 2003-year(birthday) from jbqk,2019/8/8,2选择表中的记录 选择表中的记录是通过where子句实现的。 例4:选择jbqk中所有计算机系的学生。 Select * from jbqk where department=计算机系 3条件表达式的构成,2019/8/8,2019/8/8,例5:查询考试成绩不及格学生的学号。 SELECT DISTINCT number F

15、ROM sle_course WHERE score 60; 例6:查询学时在6070之间的课程名称和学时。 SELECT c_name,period FROM course WHERE period BETWEEN 60 AND 70 例7:查询学时不在在6070之间的课程名称和学时。 SELECT c_name,period FROM course WHERE period NOT BETWEEN 60 AND 70;,2019/8/8,例8:假设当前的系统年份为2002,查询计算机系、电子系学生的学号、姓名、年龄。 Select number,name,2002-year(birthda

16、y) from jbqk where department in(计算机系,电子系); 例9:查询所有姓“王”的学生信息。 Select * from jbqk where name like 王%; 此例中,使用了谓词LIKE。在使用时,应注意下面几点: LIKE前的列名必须是字符串类型。 可以使用通配符:_(下划线)表示任一单个字符;%(百分号)表示任意长度字符。,2019/8/8,4查询中集函数的使用 说明:DISTINCT:取消列中的重复值 ALL:为默认状态,表示不取消重复值。,2019/8/8,例10:查询学生总人数。 SELECT COUNT(*) FROM jbqk; 例11:计算0052201学生的平均成绩。 SELECT AVG(score) FROM jbqk WHERE number = 0052201;,2019/8/8,5查询结果的分组与排序 GROUP BY子句将查询结果表

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号