收藏 分享(赏)

SQL讲解.ppt

上传人:weiwoduzun 文档编号:5684249 上传时间:2019-03-12 格式:PPT 页数:47 大小:302.51KB
下载 相关 举报
SQL讲解.ppt_第1页
第1页 / 共47页
SQL讲解.ppt_第2页
第2页 / 共47页
SQL讲解.ppt_第3页
第3页 / 共47页
SQL讲解.ppt_第4页
第4页 / 共47页
SQL讲解.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

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 (S

4、no 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 Student ADD bt

5、 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 插入数据,语句格式 INSERT I

7、NTO (,) 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; 例3UPDATE 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 数据查询,语句格式 select all/

9、Distinct/top n / as ,INTO from , left/right/inner join on where order byASC | DESCgroup byhaving ,功能 从指定的表或查询中,创建指定范围内、满足条件、按字段分组、并按某字段排序的新记录集。 说明 SELECT子句:指定要显示的属性列 FROM子句:指定查询对象(基本表或查询) WHERE子句:指定查询条件 注意:上述三个是必备的内容。,DISTINCT:查询结果不包含重复的记录 Top n:查询结果显示满足where的前n条记录。 :不仅可以是表中的属性,也可以是有关表达式。 :SUM()、AVG

10、()、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 SELECT * FROM 学生 W

11、HERE 性别=“男”;,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 COUNT(学号) as 老乡人数,籍贯F

12、ROM 学生 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 “?平*”; 查询人数在两人以上的各个地区的具体人数SELECT COUNT(*) a

13、s 人数 FROM 学生 GROUP BY 籍贯 HAVING COUNT(*)2;,两个或两个以上表的查询 两个表连接 P82 例4.16 查询每个学生及其考试成绩的情况。 SELECT 学生.*,成绩.* FROM 学生,成绩 WHERE 学生.学号=成绩.学号;,4.4.3 连接查询,多表连接 P84 例4.17 查询学生的学号、姓名、选修的课程名及成绩SELECT 学生.学号,姓名,课程名,成绩FROM 学生,成绩,课程WHERE 学生.学号=成绩.学号and 成绩.课程编号=课程.课程编号,嵌套查询 将一个查询语句嵌套在另一个查询语句的WHERE子句或HAVING短语的条件中的查询称

14、为嵌套查询 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 成绩WHERE 课程编号 in(SELECT 课程编号 FROM

15、 课程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 籍贯=“北京市”)/* 注意这是父查询

16、块中的条件 */,集合查询 将多个SELECT查询结果合并,更详细的查看结果数据 并操作(UNION) 标准SQL直接支持的集合操作种类 形式UNION ,4.4.5 嵌套查询,要求 参加UNION操作的各结果表的列数必须相同;对应项的数据类型也必须相同 P89 例4.23 查询新闻系的学生及年龄不大于19岁的学生 SELECT * FROM 学生 WHERE 籍贯=“北京市” UNION SELECT * FROM 学生 WHERE 性别=“男”;,方法二:SELECT DISTINCT * FROM 学生WHERE 籍贯=“北京市” OR 性别=“男”;,设计题 P90 实验指导,思考题,下课了。,休息一会儿。,追 求,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报