第八讲 SQL语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三、SQL的数据定义 SQL的数据定义功能包括三部分:定义基本表,定义视图和 定义索引。视图是基于基本表的虚表,索引是依附于基本 表的。因此SQL通常不提供修改视图和索引定义的操作。
SQL 的数据定义语句
操作 对象 表 索引
操作方式
创建
CREATE TABLE
CREATE INDEX
删除
DROP TABLE
数据控制
GRANT
REVOKE
二、SQL查询: 1、查询语句的完整句法: 语句格式为: SELECT [ALL|DISTINCT]目标列或列表达式 序列(函数) FROM 表(或视图)[[left][Right]Join <表(或视图)>On<条件表达式>] [WHERE 条件表达式或子查询块] [GROUP BY 列名序列] [HAVING 组条件表达式] [ORDER BY 列名 [ASC|DESC]]
2、删除数据
语句格式为: DELETE FROM 表名 [WHERE 条件表达式]; 功能:删除指定表中的数据。 说明:没有WHERE子句时表示删除此表中的全部记录, 但此表的定义仍在数据字典中。 例:把考试成绩不及格的选课记录从选课表中删除: DELETE FROM sele_course WHERE score<60
3、修改数据
语句格式为: UPDATE 表名 SET 列名=表达式[,列名=表达式.... ] [WHERE 条件表达式]; 功能:修改指定表中满足条件的元组;把这些 元组按SET子句中的表达式修改相应列值。 例:把学生S1的姓名改为 WANGPING UPDATE student SET Sname= 'WANG PING' WHERE SNO='S1';
2)、删除原有的列: 语句ቤተ መጻሕፍቲ ባይዱ式为: ALTER TABLE <表名> DROP<列名><类型> [CASCADE|RESTRICT] 功能:用于删除指定表中指定的列。 可选项: CASCADE:级联方式删除 RESTRICT:受限方式删除 例:在选课表中删除学分列 Cred: ALTER TABLE sele_course DROP cred int
4、连接查询: 例:求有教学任务的教师的姓名、系别、所教课程的课 程号: SELECT teacher.Tno,Tname,Dept,Cno FROM teacher Join course; On teacher.Tno=course.Tno 5、带函数的查询: 例:求出国土系选修了课程的男生人数: SELECT COUNT(DISTINCT student.Sno) FROM student Join sele_course; On student.Sno=sele_course.Sno WHERE Dept=‘国土系‘ AND Sex=‘男’
求一列值的平均值
求一列中的最大值
MIN([DISTINCT|ALL])<列名>
求一列中的最小值
SELECT语句的查询条件可以包括以下类型: (1) 比较 ( = , <, <=, >, >=, <>, !=, !< ,!> ) (2) 范围 ( between and , not between and ) (3) 集合 ( in , not in ) (4) 字符匹配 (like , not like ) (5) 空值判断 (is null , is not null ) (6)多重条件 (not,and,or)
约束条件
2、修改基本表 1)、向基本表中增加新列: 语句格式为: ALTER TABLE <表名> ADD<列名><类型>[完整性约束] 功能:向指定的基本表中增加新列和新的完整性约束条 件。 注意:新增加的列不能定义为NOT NULL,基本表在增加 一列后,原有元组在新增加列上的值都被定义为空值。 例:在选课表中增加学分列 Cred: ALTER TABLE sele_course ADD cred int
常见库函数
库函数名 COUNT([DISTINCT|ALL]*) COUNT([DISTINCT|ALL])<列名> SUM([DISTINCT|ALL])<列名> 意义 统计记录个数 统计一列中值的个数 求一列值的总和
AVG([DISTINCT|ALL])<列名>
MAX([DISTINCT|ALL])<列名>
2、SQL的组成: 1)、数据定义语言 2)、数据操作语言 3)、数据控制语言 4)、嵌入式SQL语言的使用规定 3、SQL的特点: 1)、具有统一的语法结构 2)、用同一语法结构提供了两种使用方式 3)、高度非过程化 4)、语言简洁,易学易用
SQL语言的动词
SQL 功能 动词 数据查询 SELECT 数据定义 数据操纵 CREATE DROP ALTER INSERT UPDATE DELETE
2、简单查询: 查询学生的全部信息: SELECT * FROM student 查询所有学生的学号、姓名: SELECT Sno,Sname FROM student 3、条件查询: WHERE <条件1>AND(OR)<条件2> AND(OR) <条件3>..... 查找计算机学院23岁以上的男生的全部信息: SELECT * FROM student WHERE Dept=’计算机学院‘AND Age>23 AND Sex=’男‘
例1、在教学管理数据库中创建选课表 sele_course(ID,Sno,Cno,Score) ID是主键, Sno,Cno是外键 列级完整性
CREATE TABLE sele_course ( ID char(8) NOT NULL UNIQUE, sno char(6) not null, Cno char(8), Score numeric(4,2))
注意:Alter语句修改表结构,只能修改字段属性,不能 增加、删除字段,不能更改字段名。
四、SQL数据操纵 1、数据插入 语句格式为: INSERT INTO 表名[(字段名[,字段名]....)] VALUES(表达式1[,表达式2].......); 功能:将新记录插入指定表中。 说明: (1)在INTO中没有出现的属性列,将被置为空值; (2)在表定义时说明了NOT NULL的属性列不能取空值; (3)如果INTO子句没有指明任何列名,则新插入的记录必须 在每个属性列上均有值。 例:向课程表中插入一门课的记录: INSERT INTO shedule(Cno,Cname,Pre) VALUES(‘C7’,’数据库技术‘,’C5’)
例:如果要把国土系所有不及格的成绩置为0: UPDATE sele_course SET Score=0 WHERE Score<60 AND Sno IN (SELECT Sno FROM student WHERE Dept=‘国土系‘)
作业:P167:3、4、5
2)、同时插入多个元组 例:向课程表中插入三门课的记录: INSERT INTO shedule(Cno,Cname,Pre) VALUES(‘C7’,’数据库技术‘,’C5’) (‘C8’,’信息系统‘,’C7’) (‘C9’,’管理信息系统‘,’C8’) 3)、插入子查询结果 语句格式为: INSERT INTO 表名[(字段名[,字段名].......)] 子查询;
4)、修改字段属性: 语句格式: Alter Table<表名> Alter <字段名1>类型(长度)……… 例、在教学管理数据库中将选课表sele_course(ID char(8) , Sno char(6) ,Cno char(8) ,Score numeric(4,2))进行修改:
Alter TABLE sele_course Alter ID char(6), Alter Sno char(10) , Alter Cno char(10), Alter Score numeric(6,2)
DROP INDEX
修改
ALTER TABLE
1、定义基本表
语句格式为: CREATE TABLE <表名> (<列名> <数据类型>[列级完整性约束], <列名> <数据类型>[列级完整性约束]]… , [表级完整性约束]); 功能:定义一个基本表,同时定义与该表有关的完整性约 束条件。 说明:(1)<表名>是所要定义的基本表的名字。 (2) 一个表可以由一个或几个属性(列)组成。 表级完整性约束可以用两种方式进行定义: 1)、在属性名称后面定义 2)、在关系定义中单独指定
3)、基本表的删除: 语句格式为: DROP TABLE <表名>[CASCADE|RESTRICT] 功能:用于删除指定表,同时表中的数据和在 此表上建立的索引都将自动被删除掉。建立在 此表上的视图虽仍然保留,但已 无法引用 可选项: CASCADE:级联方式删除 RESTRICT:受限方式删除 例:DROP TABLE sele_course RESTRICT
例:把平均成绩大于80分的男生的学号和平均成绩存 入到数据库中 CREATE TABLE average (Sno char(8),Aver int) INSERT INTO average(Sno,Aver) (SELECT Sno,AVG(Score) FROM sele_course WHERE Sno IN (SELECT Sno FROM student WHERE Sex=‘男’) GROUP BY Sno HAVING AVG(Score)>80)
第八讲 SQL语言
一、SQL概述 1、SQL的发展历程 SQL(Structured Query Language)语言是 1974年由Boyce和Chamberlin提出的,在IBM 公司San Jose Research Laboratory研制的 System R上实现了这种语言。 SQL语言的三个标准:1986年10月由 ANSI公布,称为SQL-86;1989.4提出了具有 完整性增强特性的SQL-89,1992.11公布了新 的标准—SQL92(SQL2),1999公布了 SQL99(SQL3)。
相关文档
最新文档