数据库技术及应用

上传人:jiups****uk12 文档编号:45522226 上传时间:2018-06-17 格式:PPT 页数:35 大小:410.50KB
返回 下载 相关 举报
数据库技术及应用_第1页
第1页 / 共35页
数据库技术及应用_第2页
第2页 / 共35页
数据库技术及应用_第3页
第3页 / 共35页
数据库技术及应用_第4页
第4页 / 共35页
数据库技术及应用_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《数据库技术及应用》由会员分享,可在线阅读,更多相关《数据库技术及应用(35页珍藏版)》请在金锄头文库上搜索。

1、数据库技术及应用第三章 关系数据库标准语言SQL本章介绍结构化查询语言(Structured Query Language,SQL)的基本概念与特点、SQL的数据定义、数据查询、数据操作、数据控制等功能及基本操作命令。主要内容o 3.1 SQL的基本概念及特点 o 3.2 SQL的数据定义语言 o 3.3 SQL的数据查询语言 o 3.4 SQL的数据操纵语言3.1.2 SQL的功能 o(1)数据定义语言(Data Definition Language,DDL)n创建、修改或删除数据库中各种对象,包括模式、基本表、视图、索引等 结构。 o(2)数据查询语言(Data Query Langua

2、ge,DQL)n按照指定的组合、条件表达式或排序检索已存在的数据库中的数据,完成 用户需要的各种查询功能,但并不改变数据库中数据。 o(3)数据操纵语言(Data Manipulation Language,DML)n用于完成数据更新工作,包括对已经存在的数据库进行记录的插入、删除 、修改等操作。 o(4)数据控制语言(Data Control Language,DCL)n用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及 效果、对数据库进行监视。3.1.3 SQL数据库的体系结构o SQL语言支持关系数据库三级模式结构,但术语与传统的关 系模型术语不同。 o 在SQL中,关系模

3、式称为“基本表”(Base Table),存储 模式称为“存储文件”(Stored File),子模式称为“视图” (View),元组称为“行”(Row),属性称为“列”( Column)。如图3.1所示的是SQL数据库的体系结构示意 图。3.2.2 定义基本表o1)基本表的创建 nSQL语言使用CREATE TABLE语句定义基本表,其基本命令格 式为CREATE TABLE (列名1 数据类型1 列完整性约束 条件 , n )in 数据库空间; n其中是要定义的基本表的名字,必须是合法的表示符, 最多可有128个字符,但本地临时表的表名(名称前有一个编号 符#)最多只能包含116个字符。

4、n一个表可以由一个或多个属性(列)组成。定义表时每一个列定 义语句之间用逗号分隔,最后一条语句不用逗号。每个SQL语句 以分号结束。 n关系模型的完整性规则是对关系的某种约束条件。建表的同时还 可以定义与该表有关的完整性约束条件,这些完整性约束条件被 存入系统的数据字典中。 实例CREATE TABLE Table_Card ( CardID varchar(8) PRIMARY KEY, Password varchar(8) NOT NULL, StartDate datetimeNOT NULL, EndDate datetime, State char(1) NOT NULL, Bal

5、ance money NOT NULL, );3.2.2 定义基本表o5)基本表的撤消 o删除基本表命令的基本格式为DROP TABLE 基本表名 CASCADE|RESTRICT o其中关键词CASCADE和RESTRICT的含义同前面句法中的含义 一样。o例3-7 删除test表。DROP TABLE test;SELECT FROM tabname Where condition Group By . Having . Order By .语法:3.3 SQL的数据查询语言(DQL)3.3.1 简单查询 3.3.2 联合查询 3.3.3 连接查询 3.3.4 嵌套查询3.3 SQL的数据

6、查询语言(DQL)单表查询o 1) 投影查询SELECTn (1) 查询指定列o 1.查询所有列 n SELECT * FROM STUDENT o 1. 查询学生的姓名、性别 n (1)SELECT Sn,Sex FROM Student o 2. 查询学生选修课的课程号 n (1)SELECT Cno FROM Sc n (2)SELECT DISTINCT Cno FROM Sc2)使用WHERE子句设置查询条件 o 算术操作符:+、-、*、/; o 比较操作符:=、=、80o (2)多重条件查询:NOT / AND/OR n1. 查询课程号为101且成绩高于85分以上的学号 o SEL

7、ECT SNO FROM Sc WHERE Cno=101 AND SCORE85 n2. 查询选修101或102且不低于70分的学号 o SELECT SNO FROM Sc WHERE (Cno=101 OR Cno=102) AND SCORE=70 o (3)确定范围查询 BETWEEN AND |NOT BETWEEN AND n查询成绩高于75分低于90分的学号 o SELECT SNO FROM SC WHERE SCORE BETWEEN 75 AND 90o (4)确定集合查询 IN |NOT IN n查询汉族和回族的同学学号与姓名 SELECT SNO,SN FROM ST

8、UDENT WHERE MZ IN(汉 ,回族)4)使用聚合函数统计数据o 聚合函数也称为集合函数或统计函数、聚集函数、 其作用是对一组值进行统计并返回一个单值。 o SQL提供的聚合函数有n计数函数:COUNT()n求平均函数:AVG()n求和:SUM()n求最小值函数:MIN()n求最大值函数:MAX()多表查询(连接查询) o 多表查询时对列名的引用 表名.列名 o 多表连接条件一般的表达形式为表名1.列名 比较运算符 表名2.列名.n 问题的引入n连接操作的过程:首先从表1中找到第一个元组,然后从表2的 逻辑第一元组开始查找满足条件的元组,每找到一个元组,就将 表1中的第一个元组与该元

9、组拼接起来,形成结果表中的一个元 组.表2扫描完毕,回到表1,找到第二个元组,然后再到表2重复上 述操作,只到表1全部元组处理完毕为止无条件连接AB12AC 10 10 20 10Da a b bAB 1 1 1 1 2 2 2 2AC 10 10 20 10 10 10 20 10Da a b b a a b brs等值连接AB12AC 10 10 20 10Da a b bAB 1 1 2 2AC 10 10 10 20Da b a brso 1) 等值连接 n (1) 查询每个学生及其选修课程的情况 o SELECT Student.学号,姓名,性别,课程号,成绩 FROM Studen

10、t,Sc WHERE Student.学号 =Sc.学号o 2) 复合条件连接 n (1) 查询“陈东华”的课程号与成绩 o SELECT 课程号,成绩 FROM Student,Sc WHERE Student.学号=Sc.学号 AND 姓名=陈东华 n (2)查询所有学生姓名和选修的课程名和成绩( 包括姓名) o SELECT 姓名,课程名称 ,成绩 FROM Student,Course,Sc WHERE Student.学号 =Sc.学号 AND Course.课程号=Sc.课程号o 3). 嵌套查询n 1) 概念o (1) 嵌套查询是SQL结构化的体现 o (2) 内部查询(内层查询

11、、子查询)、外部查 询(外层查询、父查询、主查询) o (3) 子查询不能使用ORDERn 2) 带有IN谓词的子查询o (1) 查询和“李小平”同性别的学生姓名 nSELECT 姓名 FROM Student WHERE 性别 IN(SELECT SELECT 性别性别 FROM Student FROM Student WHERE WHERE 姓名姓名=李小平李小平 )o (2)找出和李小平同民族的同学的全部信息 n SELECT * FROM STUDENT WHERE 民族 IN (SELECT (SELECT 民族民族 FROM STUDENT FROM STUDENT WHERE

12、SN=WHERE SN=李小平李小平)n (3) 查询选修了C语言的学生姓名 o 原始作法 SELECT 姓名 FROM Student,Sc,Course WHERE 课程名称=C语言 AND Student.学号 =Sc.学号 AND Sc.课程号=Course.课程号 o 嵌套查询作法 SELECT 姓名 FROM Student WHERE 学号 IN(SELECT (SELECT 学号学号 FROM Sc,Course FROM Sc,Course WHERE Sc. WHERE Sc.课程号课程号=Course.=Course.课程号课程号 AND AND 课程名称课程名称=C=C

13、语言语言)3.4 SQL的数据操纵语言(DML)允许数据库用户操纵(增加、删除、修改)数据。INSERT插入新记录UPDATE更新表中记录DELETE删除表中记录3.4.1插入数据INSERT语法:1) 完整型 INSERT INTO tabnameVALUES (val1, val2, .)2)列举型 INSERT INTO tabname (col1, col2, .)VALUES (val1, val2, .)3)复制型 INSERT INTO tabname1 (col1, col2, .)SELECT (col1, col2, .) FROM tabname2o 例3-47 将一条售

14、饭机数据插入到售饭机表中,售饭 机号为00000010,状态正常,位于第三食堂。INSERT INTO Table_Machine VALUES(00000010,0, 第三食堂);o 例3-48 向学生表中插入一条新记录,学号为 012006024921,院系为管理学院,其他信息暂缺 。INSERT INTO Table_Student(StudentID, School) VALUES (012006024921, 管理学院);3.4.1插入数据INSERTo 例3-50 求每个学院学生的人数,并把结果存入数据库中。n首先要在数据库中建立一个存储学院名称和人数的新表 。CREATE TAB

15、LE Table_Sum (School varchar(8),Sumnum int);n然后对数据库中的学生表按照院系分组求各院人数,再 把院系名称和总人数存入新表中。INSERT INTO Table_Sum (School,Sumnum)SELECT School,COUNT(*) FROM Table_Student GROUP BY School;3.4.1插入数据INSERT3.4.1插入数据INSERTo注意: n1)字符、日期等数据类型用单引号或双引号界定,数值型不 用引号。n2)每个数据之间用逗号隔开。n3)运用完整型语法时,数据顺序要与定义表时的字段顺序完 全一致,不可跳过或颠倒,空数据用 NULL 表示。n4)运用列举型语法时,数据顺序要与列举的字段顺序完全一 致,空数据用 NULL 表示,也可不列出;属性为 NOT NULL 约束的字段必须全部列出,否则,操作不能成功。n5)运用复制型语法时,要求两个表具有大致相同的表结构。3.4.2 删除数据DELETEo 语法DELETE FROM tabnameWHERE conditiono 当不包含条件语句 Where 时,该命令将 删除所有记录。3.4.3 修改数据UPDATEo语法 o1)单字段更新UPDATE tabnameSET COL1=VAL1WHERE cond

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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