版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 关系数据库标准语言SQL,4.1 SQL概述 4.2 数据定义 4.3 数据更新 4.4 数据查询,4.1 SQL概述,结构化查询语言SQL 1974年提出,IBM SQL的特点 高度综合统一 非过程化 面向集合的操作方式 一种语法结构、两种使用方法 语言简洁,易学易用,SQL的功能 数据的定义、查询、更新、控制和视图管理。,4.2 数据定义,4.2.1 基本数据类型,数值型 INT/Integer:长整型 Smallint:整型 Float(n):精度为n位的浮点型。 Real:精度由机器决定的浮点型 Double:精度由机器决定的双精度浮点型 Numberic(p,q):定点数,p
2、总位数、q小数位数 在ACCESS中,Float同Double,均不必指明长度,4.2.1 基本数据类型,字符型 Char(n):长度为n的定长字符串 Varchar (n):最大长度为n的变长字符串 Text(n):长度与实际输入的字符数一致 Memo:备注型,用户不需指明长度 Binary(n):长度为n的定长二进制位串 VarBinary(n):最大长度为n的变长二进制位串,日期、时间型 Date Time DateTime 逻辑型 Boolean(在SQL中) Logical(在ACCESS中) 上述所有类型,无须指明长度,货币型 SmallMoney:4B Money:8B OLE型
3、 Generay,4.2.2 创建表,定义基本表语句格式 CREATE TABLE ( , ,); 说明 :所要定义的基本表的名字 :组成该表的各个字段属性,:相应属性列的完整性约束条件 :对整个表的一些约束条件,常见的有定义主码、外码等 常用完整性约束 主码约束:PRIMARY KEY 外码约束:FOREIGN KEY 唯一性约束:UNIQUE 不允许/允许列值为空值约束:NOT NULL/NULL,例1 P68 例2 建立表Student,有Sno、name、sex、age、Sdept五个属性。其学号为主码、姓名不能为空、值唯一(建立唯一索引)。 CREATE TABLE Student
4、( Sno CHAR(5) PRIMARY KEY, name TEXT(8) NOT NULL UNIQUE, sex logical, age INT, Sdept CHAR(15);,4.2.3 修改表结构,语句格式 ALTER TABLE ADD 完整性约束 DROP ALTER ; 说明 ADD:增加新列和新的完整性约束条件 DROP:删除指定的字段,ALTER :用于修改字段的宽度和数据类型。 例1 P69 例2 将年龄的数据类型改为整数。 ALTER TABLE Student ALTER age SMALLINT; 例3 添加学生补贴字段。 ALTER TABLE Studen
5、t ADD bt FLOAT; 例4 删除学生补贴字段。 ALTER TABLE Student DROP bt;,4.2.4 删除表,语句格式 DROP TABLE ; 说明 基本表一经删除,则有关该表的数据、表的索引及视图都被自动删掉,无法恢复 P69 例4.3,4.2.5 建立索引,语句格式 CREATE UNIQUE CLUSTER INDEX ON ( ,); 说明 索引可以建立在表的一列或多列上,之间用逗号分隔 ASC升序,DESC降序。缺省值:ASC,UNIQUE:每一个索引值是唯一的数据,含重复值的属性列不能建UNIQUE索引。 CLUSTER:建立聚簇索引后,基表中数据也需按
6、指定的聚簇属性值的升序或降序存放。即聚簇索引的索引项顺序与表中记录的物理顺序一致,一个表只能建立一个聚簇索引,不常用。,P70 例4.4 CREATE INDEX XB ON STUDENT(SEX); CREATE UNIQUE INDEX XHNL ON STUDENT(Sno ASC,age DESC);,4.2.6 删除索引,语句格式 DROP INDEX ON ; 说明 原基本表不发生变化。 例 删除表的XHNL索引。 DROP INDEX XHNL ON Student;,4.3 数据更新,4.3.1 数据插入 4.3.2 数据修改 4.3.3 数据删除,4.3.1 插入数据,语句
7、格式 INSERT INTO (,) VALUES ( ,) 功能:将新元组插入指定表中。 说明 与的个数、数据类型要匹配 省略,则新元组的每列都有具体值,P71 例4.5 例2 将一个新学生记录(学号:07020;姓名:陈冬;性别:男;所在系:新闻系;年龄:18岁)插入到Student表中。 INSERT INTO Student VALUES (07020,陈冬,1,18,新闻系);等价于 INSERT INTO Student VALUES (07020,陈冬,yes,18,新闻系);,4.3.2 数据更新,语句格式 UPDATESET=,=,WHERE; 功能 修改表中满足WHERE子
8、句条件的元组,一次可以同时修改多个。 说明 SET子句:指定要修改的列,及修改后取值,WHERE子句:指定要修改的元组,缺省表示所有元组 P72 例4.6 例2 将所有学生的年龄增加1岁。 UPDATE Student SET age= age+1; 例3 UPDATE Student SET age=age+1,bt=100 where sex=0;,4.3.3 删除数据,语句格式 DELETE FROMWHERE; 功能:删除满足WHERE条件的元组 说明 WHERE缺省表示删除所有元组 P73 例4.7 DELETE FROM student WHERE sex=no,4.4 数据查询,
9、语句格式 select all/Distinct/top n / as ,INTO from ,left/right/inner join on where order byASC | DESC group byhaving ,功能 从指定的表或查询中,创建指定范围内、满足条件、按字段分组、并按某字段排序的新记录集。 说明 SELECT子句:指定要显示的属性列 FROM子句:指定查询对象(基本表或查询) WHERE子句:指定查询条件 注意:上述三个是必备的内容。,DISTINCT:查询结果不包含重复的记录 Top n:查询结果显示满足where的前n条记录。 :不仅可以是表中的属性,也可以是有
10、关表达式。 :SUM()、AVG()、MAX/MIN()、计数COUNT(*)等 as :定义字段的别名,即标题 INTO:生成表查询。,leftright inner join on :查询结果是多表数据源组成的记录集。 ORDER BY子句:按指定列值的升序或降序排序。Asc/desc:排序时升降序。 GROUP BY子句:按指定列的值分组。 HAVING短语:筛选满足指定条件的元组,只能与GROUP BY子句配合使用。,:,4.4.2 简单查询,简单查询:单表查询 查询表中所有行、所有列 P74 例4.8 SELECT * FROM 学生; 查询表中指定行、所有列 P75 例4.9 SE
11、LECT * FROM 学生 WHERE 性别=“男”;,4.4.2 简单查询,查询表中指定行、指定列 P76 例4.10 SELECT 姓名,性别 FROM 学生 WHERE NOT 籍贯=“北京”; 查询表中指定列、产生新列 P77 例4.11 SELECT sum(成绩),COUNT(*) AS 总人数 FROM 成绩 SELECT max(成绩) AS 最高分 FROM 成绩,查询表中满足指定条件的行 P79 例4.12 SELECT 姓名,籍贯 FROM 学生 WHERE 籍贯 NOT IN (“北京市”,“上海”); 查询表中分组统计结果 P79 例4.13 SELECT COUN
12、T(学号) as 老乡人数,籍贯FROM 学生 GROUP BY 籍贯;,查询表中排序结果 P80 例4.14 SELECT * FROM 学生 ORDER BY 性别,籍贯 DESC; 查询表分组排序结果 P81 例4.15 SELECT COUNT(*),性别 FROM 学生 GROUP BY 性别 ORDER BY 性别;,SELECT COUNT(*),性别,籍贯 FROM 学生 GROUP BY 性别,籍贯 ORDER BY 性别; 查询名字中第2个字为“平”的学生信息 SELECT * FROM 学生 WHERE 姓名 LIKE “?平*”; 查询人数在两人以上的各个地区的具体人数
13、 SELECT COUNT(*) as 人数 FROM 学生 GROUP BY 籍贯 HAVING COUNT(*)2;,两个或两个以上表的查询 两个表连接 P82 例4.16 查询每个学生及其考试成绩的情况。 SELECT 学生.*,成绩.* FROM 学生,成绩 WHERE 学生.学号=成绩.学号;,4.4.3 连接查询,多表连接 P84 例4.17 查询学生的学号、姓名、选修的课程名及成绩 SELECT 学生.学号,姓名,课程名,成绩 FROM 学生,成绩,课程 WHERE 学生.学号=成绩.学号 and 成绩.课程编号=课程.课程编号,嵌套查询 将一个查询语句嵌套在另一个查询语句的WH
14、ERE子句或HAVING短语的条件中的查询称为嵌套查询 SELECT 系名称,系主任 FROM 系 WHERE 学院编号 IN 外层查询/父查询 (SELECT 学院编号 FROM 学院 WHERE 学院名称= “计算机”) 内层查询/子查询,先执行,4.4.4 嵌套查询,用相等判断的子查询 子查询结果仅存在1个值时 P85 例4.18 SELECT 学号,成绩 FROM 成绩 WHERE 课程编号= (SELECT 课程编号 FROM 课程 WHERE 课程名=数据库原理),用于IN短语的子查询 子查询结果可能存在多个值时 P85 例4.19 SELECT 学号,成绩 FROM 成绩 WHE
15、RE 课程编号 in (SELECT 课程编号 FROM 课程 WHERE 课程名=数据库原理 or 课程名=程序设计),用于比较运算符的子查询 P86 例4.20 SELECT 学号,成绩 FROM 成绩 WHERE 成绩 (SELECT avg(成绩) FROM 成绩),用于any或all的子查询 ANY:满足子查询产生的任意一个值 ALL:满足子查询产生的所有值 P87 例4.21 4.22 查询比北京市任意一个(其中某一个)学生年龄小的学生姓名和年龄。 将语句中的any改成all结果如何?,SELECT 姓名,年龄 FROM 学生 WHERE 年龄 ANY (SELECT 年龄 FROM 学生 WHERE 籍贯=“北京市”) /* 注意这是父查询块中的条件 */,集合查询 将多个SELECT查询结果合并,更详细的查看结果数据 并操作(UNION) 标准SQL直接支持的集合操作种类 形式 UNION
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江西应用工程职业学院单招职业适应性考试备考题库及答案解析
- 2026年连云港职业技术学院单招职业适应性测试备考试题及答案解析
- 2026年抚顺职业技术学院单招职业适应性考试参考题库及答案解析
- 2026年河南林业职业学院单招职业适应性测试备考试题及答案解析
- 本科毕业生实习总结15篇
- 2026年桂林山水职业学院单招职业适应性测试备考题库及答案解析
- 2026年萍乡卫生职业学院单招职业适应性测试模拟试题及答案解析
- 2026年泉州经贸职业技术学院单招职业适应性考试模拟试题及答案解析
- 2026年泉州海洋职业学院单招职业适应性测试模拟试题及答案解析
- 2026年邯郸科技职业学院单招职业适应性考试模拟试题及答案解析
- 东北抗联英雄人物智慧树知到期末考试答案章节答案2024年牡丹江师范学院
- Turning Red《青春变形记(2022)》完整中英文对照剧本
- JT-T-1178.2-2019营运货车安全技术条件第2部分:牵引车辆与挂车
- 时尚流行文化解读智慧树知到期末考试答案章节答案2024年天津科技大学
- 齐鲁名家 谈方论药智慧树知到期末考试答案2024年
- 校园火灾发生时教师如何迅速报警并组织疏散
- 血尿病人的护理
- Python数据分析与应用-从数据获取到可视化(第2版)课件 第8章 文本数据分析
- 《数字经济学》教学大纲
- 第七章重介质选矿课件
- 气浮设计计算
评论
0/150
提交评论