第四章、结构化查询语言----SQL.ppt
第四章 结构化查询语言-SQLSQL是结构化查询语言(Structured Query Language)的缩写,它包括查询、定义、操纵和控制四部分,是一种功能齐全的数据库语言,已成为关系数据库语言的国际标准。SQL是一种高度非过程化的面向集合的语言SQL的数据定义功能能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式又叫视图,全局模式简称模式或数据库,内模式由系统概据数据库模式自动实现,一般无需用户过问。一个数据库由若干个基本表(关系)组成。每个视图也是一个关系,它由基本表产生出来,有自己独立的结构定义,但没有独立的数据存在,它的数据来自基本表。所以,又把视图称为虚表表表1 表表2 表表3 视图1视图2视图3关系:基本表或表属性:字段或列元组:行4.1 数据库模式的建立和删除数据库模式的建立和删除4.2 表结构的建立、修改和删除4.3 表内容的插入、修改和删除4.4 视图的建立、修改和删除4.5 SQL查询查询(p85)本章中使用到的数据库教学库(包括学生、选课、课程三个基本表)学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课进入1、定义教学库、定义教学库2、定义学生、定义学生、选课、课程基本选课、课程基本表结构表结构3、向学生、选、向学生、选课、课程基本表课、课程基本表中输入内容中输入内容一、数据库模式的建立和删除1、建立数据库模式CREATESCHEMA|DATABASEAUTHORIZATIONCreate schema xuesh authorization 刘勇Create database 教学库2、删除数据库模式DROP SCHEMA|DATABASEDrop database 教学库返回返回二、表结构的建立、修改和删除格式:create table.(,)功能:在当前或给定的数据库中定义一个表的结构(关系模式)1、建立表结构说明(1)若省略,则在当前数据库建立(2)格式:长度列级完整性约束char(n)int floatdate defaultnull/not nullprimary keyuniquereferences()check()(3)在所有列定义之后进行primary key(,)主码约束主码约束unique(,)单值约束单值约束Foreign key(,)references()外码约束外码约束check()检查约束检查约束Create table 教学库教学库.学生学生Create table 学生学生返回返回create table 学生(学生号 char(7)primary key姓名 char(6)not null unique性别 char(2)not null check(性别男 or 性别=女出生日期 datetime check(出生日期=1 and 年级=1 and 课程学分=0 and 成绩=100),primary key(学生号,课程号),foreign key(学生号)references 学生(学生号),foreign key(课程号)references 课程(课程号)学生号课程号成绩选课使用了表级完整性约束和列级完整性约束商品库(其中包括商品表1和商品表2两个基本表)商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠create database 商品库use 商品库create table 商品表1(商品代号 char(8)primary key,分类名 char(8),单价 float,数量 int)create table 商品表2(商品代号 char(8)primary key产地 char(6)品牌 char(6)商品代号分类名单价数量商品代号产地品牌1、在表级完整性约束和列级完整性约束同时存在的四种约束是:单值、主码、外码、检查小结小结2、每个列级完整性约束只能涉及一个属性,每个表级完整性约束可涉及多个属性(含一个)。若只涉及到一个列(属性)时,可用两种约束中的任一种。3、默认值约束和空值/非空值约束只能在列级完整性约束中存在格式:alter .add,|add,|drop column,|drop,2、修改表结构功能:向已定义过的表中添加一些列的定义或一些表级完整性约束,或者从已定义过的表中删除一些列或一些完整性约束增加增加删除删除alter table 学生 add 籍贯 char(6)alter table 学生 drop column 籍贯格式:drop table .3、删除表结构功能:从当前或给定的数据库中删除一个表,在删除表结构的同时也删除了全部内容如:drop table 学生1教学库(包括学生、选课、课程三个基本表)学生号姓名性别专业课程号课程名课程学分0101001王明王明男男计算机计算机0102005刘芹刘芹女女电子电子0202003张鲁张鲁男男电子电子0303001赵红赵红女女电气电气0304006刘川刘川男男通信通信0501001张江张江男男通信通信0502003沈艳沈艳女女电子电子学生课程学生号课程号成绩选课C001C+语言语言4C004操作系统操作系统3E002电子技术电子技术5X003信号原理信号原理4X005软件工程软件工程40101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272三、表内容的插入、修改和删除向基本表中插入数据的命令有两种格式:一种是向具体元组插入常量数据(单行插入)一种是把子查询的结果输入到另一个关系中去(多行插入)1、插入insert into.(,)values(,)单行插入格式:create table 职工(职工号 char(6)primary key,姓名 char(8)not null,性别 char(2)not null,年龄 int,基本工资 float)职工号姓名性别年龄基本工资010405李羽女281560insert into 职工(职工号,姓名,性别,年龄,基本工资)values(010405,李羽,女,28,1560)insert into.(,)(select 子句)多行插入格式:insert 职工(职工号,姓名,性别,年龄,基本工资)select 职工号,姓名,性别,年龄,基本工资 from 职工1 where 性别=男职工号姓名性别年龄基本工资010405李羽女281560职工职工号姓名性别年龄职务基本工资津贴010203李英女44副处1750450010408王秀男43科员1568231010506刘强男33科员1244332职工1010408王秀男431568010506刘强男3312441、建立/删除数据库Create database/drop2、建立/删除表结构Create table/drop table3、表内容的插入Insert 表级完整性约束和列级完整性约束默认值约束和空值/非空值约束只能在列级完整性约束中存在单值、主码、外码、检查2、修改update.set=,fromwhere update 职工 set 年龄=年龄+1update 职工 set 基本工资=基本工资*1.2 where 职工号=010405update 职工 set 基本工资=职工1.基本工资+职工1.津贴 from 职工1 where 职工.职工号=职工1.职工号职工号姓名性别 年龄基本工资010405李羽女281560职工号姓名性别年龄职务基本工资津贴010203李英女44副处1750450010408王秀男43科员1568231010506刘强男33科员1244332010408王秀男431568010506刘强男331244职工职工1当在一条语句中使用多个表时当在一条语句中使用多个表时,若使用的列名有重名若使用的列名有重名,必须在必须在所列名前加上表名和圆点分隔符限定所列名前加上表名和圆点分隔符限定1568+231010408王秀男431799010506刘强男3315761244+3323、删除delete from.fromwhere delete from 职工 where 年龄45delete 职工 from 职工1 where 职工.职工号=职工1.职工号delete 职工四、视图的建立、修改和删除视图视图基本表基本表1局部模式中的表,虚表全部模式中的表,实表对视图通常只做修改、查询视图的建立和删除只能影响视图本身,不影响对应的基本表,但对视图内容的更新(插入、删除和修改)直接影响基本表 每个视图的列可以来自同一个基本表,也可以来自多个不同的基本表,视图是基本表的抽象和在逻辑意义上建立的新关系视图来自基本表非主属性非主属性基本表基本表21、建立视图格式:create view(,)as 功能:在当前数据库中根据select的查询结果建立一个视图,包括视图的结构和内容。学生学生(学号,姓名,性别,系)(学号,姓名,性别,系)建立计算机系的学生视图建立计算机系的学生视图create view 计算机系视图表(学号,姓名,性别)计算机系视图表(学号,姓名,性别)as select 学号,姓名,性别学号,姓名,性别 from 学生学生where 系系=“计算机计算机”学号学号姓名性别专业4051王平女经管4052赵路男经管4061邱华女计算机4062宁静女计算机4063张宇男计算机4071刘兵男电子课程号课程号课程名学分C001高等数学6C002会计学5C003管理学4C004程序设计3C005数字电路4学号课程号成绩4051c001784051c002894052c002884052c003854063c00367选课(SC)学生(S)课程(C)create view 成绩视图表(学号,姓名,课程号,课程名,成绩)成绩视图表(学号,姓名,课程号,课程名,成绩)as select 选课选课.学号,姓名,选课学号,姓名,选课.课程号,课程名,成绩课程号,课程名,成绩from 学生,选课,课程学生,选课,课程where 学生学生.学号学号=选课选课.学号学号 and 课程课程.课程号课程号=选课选课.课程号课程号 and 专业专业=经管经管学号学号姓名姓名课程号课程号课程名课程名成绩成绩4051王平王平c001高等数学高等数学784051王平王平c002会计学会计学894052赵路赵路c002会计学会计学884052赵路赵路c003管理学管理学85特征一:使用视图还能够根据用户的局部应用、根据用户的习惯命名视图中的列名特征二:设计基本表时,不能把通过计算得到的属性作为关系的属性,但在视图中却可以定义。学生成绩(学号,姓名,语文,数学,英语)create view 成绩视图(学号,姓名,平均成绩,总成绩)as select 学号,姓名,(语文+数学+英语)/3,语文+数学+英语from 学生成绩要求:建立包含平均成绩、总成绩的成绩视图2、修改视图内容格式:update.set=,from,where 功能:按照一定条件对当前或指定数据库中的一些列值进行修改。update 成绩视图表 set 成绩=80where 学生号=0102005 and 课程号=E0023、修改视图定义格式:alter view (,)as alter view 学生视图(学生号,专业)as select 学生号,专业 from 学生功能:在当前数据库中修改已知视图的列,它与select 子句查询结果相对应create view 学生视图(学生号,姓名)as select 学生号,姓名 from 学生4、删除视图格式:drop view 功能:删除当前数据库中的一个视图4.5 SQL查询SQL的查询只对应一条语句,即SELECT语句。SQL查询速度快,且只需用户讲清楚“要干什么”,而不需要指出“怎么干”。一、一、SQLSQL查询的基本结构查询的基本结构 SELECT ,;FROM ,.;WHERE 你要查询(输出)什么?(查询目标)最常用的格式是用逗号分隔的属性名所查询的目标来自那个表(要使用的关系名)查询的目标要满足什么条件如没有条件,如没有条件,where where 可可省略,表示对所有记录省略,表示对所有记录比较运算符:比较运算符:=!=#=!=#逻辑运算符:逻辑运算符:and or notand or not在条件中也经常会用到一些谓词,比如:在条件中也经常会用到一些谓词,比如:all(all(所有)所有)any(any(任意)任意)betweenand(betweenand(在在 之间)之间)in(in(包含)包含)not in(not in(不包含)不包含)exists(exists(存在)存在)not existnot exist(不存在)不存在)从学生关系中找出专业是电气的学生学号、姓名 SelectSelect fromfromwherewhere学号学号,姓名;姓名;学生;学生;专业专业=电气电气*;所有字段所有字段from和where 实现选择运算投影投影引用字符型常量引用字符型常量Select Select 学号,学号,课程名,成绩From From 选课,课程选课,课程Where Where 选课选课.课程号课程号=课程课程.课程号课程号课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272from和where 实现连接运算From和和where实现了实现了连接和选择的运算连接和选择的运算新版规定P86如果不同的关系具有相同的属性如果不同的关系具有相同的属性名,必须在前面冠以关系名名,必须在前面冠以关系名本章中使用到的数据库教学库(包括学生、选课、课程三个基本表)学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课商品库(其中包括商品表1和商品表2两个基本表)商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠二、SELECT选项其中SELECT子句用逗号分开的表达式为查询目标,可为用逗号分开的属性名,或包含字段名、字段函数的表达式。SelectSelect From From 商品表商品表1 1商品代号,单价*数量DISTINCT用于用于SELECT子句中,使得从子句中,使得从查询结果中去掉重复元组。若不使用查询结果中去掉重复元组。若不使用DISTINCT,则默认为则默认为ALL,即无论是即无论是否有重复元组都全部输出。否有重复元组都全部输出。1、DISTINCT和和ALL的使用的使用例:例:selectdistinct分类名;分类名;From 商品表1商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1分类名电冰箱电视机电视机电视机空调器微波炉洗衣机洗衣机分类名电冰箱电视机空调器微波炉洗衣机分类名(商品表1)Where 数量数量10分类名(数量10(商品表1)商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠selectdistinct 产地;产地;From例:列出商品表2中的所有产品的不同产地商品表商品表22、用AS指定查询结果的自定义列名SelectSelect From From 学生学生学生号 ,性别学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生where where 专业专业=通通信信numbersex 0304006男0501001男学生号性别0304006男0501001男AS number as sex学生号,性别(专业=通信(学生)SelectSelect From From 商品表商品表1 1商品代号,单价*数量 as 价值商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1商品代号价值DBX-134DSJ-120DSJ-180DSJ-340KTQ-12WBL-6XYJ-13XYJ-20从商品表1中查询出每一种商品的价值3、可使用的列函数count*countall()countdistinct ()max()min ()avg ()sum ()数值列商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1从商品表1中查询出不同分类名的个数SelectSelect FromFromcount(distinct 分类名)as 分类种数商品表商品表1分类种数分类种数 5count *countall(分类名)countdistinct (分类名)商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1从商品表1中查询出所有商品的最大数量、最小数量、平均数量及数量总和SelectSelect FromFrommax(数量)as 最大数量,min(数量)as 最小数量商品表商品表1avg(数量)as 平均数量,sum(数量)as 总和最大数量最小数量平均数量总和2051192商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1从商品表1中查询出分类名为“电视机”的商品的种数、最高价、最低价及平均价。SelectSelect FromFromcount(*)as 种数,max(单价)as 最高价商品表商品表1min(单价)as 最低价,avg(单价)as 平均价种数最高价最低价平均价337261865Where 分类名分类名=“电视机电视机”商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1SelectSelect max(单价*数量),min(单价*数量),sum(单价*数量)From From 商品表商品表1 1写出它的功能。写出它的功能。查询出商品的最高价值、最低价值及总价值 SELECT ,;FROM ,.;WHERE 复习Distinct/all字符型常量的表达专业专业=电气电气新版规定ascount/min/max/sum/avg商品表商品表1.商品代号商品代号=商品表商品表2.商品代号商品代号三、from选项FROM子句指出查询目标及下面WHERE子句的条件所涉及的所有关系的关系名用户可以自行定义临时别名,用户可以自行定义临时别名,在在FROM子句中给出,特别是表名比较长时,定子句中给出,特别是表名比较长时,定义别名作为列名的前缀限定符更为方便义别名作为列名的前缀限定符更为方便1、为关系指定临时别名、为关系指定临时别名select x.学生号,y.学生号from 学生基本情况表 x,学生基本档案表 yWhere x.籍贯=广东Select 学生基本情况表.学生号,学生基本档案表.学生号from 学生基本情况表,学生基本档案表Where 学生基本情况表.籍贯=广东、联接查询如果查询目标涉及到两个或几个关系,要进行联接运算。由于SQL是高度非过程化的,用户只要在FROM子句中指出各个关系的名称,在WHERE子句里正确指出联接条件即可。联接运算由系统去完成并实现优化。关系关系1.属性名属性名=关系关系2.属性名属性名商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠商品表1商品表2商品代号分类名单价数量产地 品牌 Select *Select *From From 商品表商品表1 1,商品表,商品表2 2where where 商品表商品表1.1.商品代号商品代号=商品表商品表2.2.商品代号商品代号Select 商品表商品表1.*,产地,品牌如果不同的关系具有相同的属性如果不同的关系具有相同的属性名,必须在前面冠以关系名名,必须在前面冠以关系名从商品表从商品表1和商品表和商品表2中查询出按商品代号进行自然连接的结果中查询出按商品代号进行自然连接的结果三、按下列给出的每项功能写出相应的查询命令1、从商品库中查询出每种商品的商品代号、单价、数量和产地 select from where商品表1(商品代号,分类名,单价,数量)商品表2(商品代号,产地,品牌)商品表1.商品代号=商品表2.商品代号商品表1,商品表2商品表1.商品代号,单价,数量,产地P112学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课查询出每个学生选修每门课程的学生号、查询出每个学生选修每门课程的学生号、姓名、课程号、课程名、成绩等数据姓名、课程号、课程名、成绩等数据学生号,姓名(学生)选课课程号,课程名(课程))学生号姓名课程号课程名成绩学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课查询出每个学生选修每门课程的学生号、查询出每个学生选修每门课程的学生号、姓名、课程号、课程名、成绩等数据姓名、课程号、课程名、成绩等数据)select from 学生 x,课程 y,选课 zx.学生号,x.姓名,y.课程名,z成绩 wherex.学生号=z.学生号 and y.课程号=z.课程号四、where 选项WHERE子句指出查询目标必须满足的条件(连接条件、筛选条件),如没有条件,此子句可省略。商品表1.商品代号=商品表2.商品代号专业专业=电气电气商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1从商品表1中查询出单价大于1500,同时数量大于等于10的商品SelectSelect fromfromwherewhere商品表商品表1 1单价单价1500 and 1500 and 数量数量=10=10商品代号,单价,数量商品代号,单价,数量商品代号分类名单价数量DBX-134电冰箱14568DSJ-120电视机186515DSJ-180电视机207310DSJ-340电视机37265KTQ-12空调器280012WBL-6微波炉64010XYJ-13洗衣机46820XYJ-20洗衣机87312商品表1商品表2商品代号产地品牌DBX-134北京雪花DSJ-120南京熊猫DSJ-180南京熊猫DSJ-340北京牡丹KTQ-12无锡春兰WBL-6青岛海信XYJ-13无锡小天鹅XYJ-20山西海棠查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌SelectSelect fromfromwherewhere商品表1 x,商品表2 yx.商品代号,分类名,产地,品牌(产地=南京 or 产地=无锡)and x.商品代号=y.商品代号 SELECT ,;FROM ,.;WHERE Distinct/all字符型常量的表达专业专业=电气电气新版规定ascount/min/max/sum/avg商品表商品表1.商品代号商品代号=商品表商品表2.商品代号商品代号定义定义别名别名学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课C1C2Select Select distinct c1.distinct c1.学生号学生号 from from 选课选课 c1,c1,选课选课 c2c2where where c1.c1.学生号学生号=c2.=c2.学生号学生号 and c1.and c1.课程号课程号c2.c2.课程号课程号对于相同的表可定义对于相同的表可定义不同的别名,以使它不同的别名,以使它们作为不同的表使用们作为不同的表使用查询出选修至少两门课程的学生学号查询出选修至少两门课程的学生学号学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气0304006刘川男通信0501001张江男通信0502003沈艳女电子学生课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E002730202003C001940202003C004650202003X003800303001C001760304006E00272选课Select Select 姓名姓名 from from 学生学生 x,x,课程课程 y,y,选课选课 z zwhere where x.x.学生号学生号=y.=y.学生号学生号 and and y.y.课程号课程号=z.=z.课程号课程号 and and 课程名课程名=操作系统操作系统写功能。查询出选修了课程名为查询出选修了课程名为操作操作系统系统课程的每个学生的姓名课程的每个学生的姓名P111 二、按照下列每条查询命令写出相应的功能。1、select x.商品代号,分类名,数量,品牌 from 商品表1 x,商品表2 y where x.商品代号=y.商品代号 从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。and(品牌=熊猫or 品牌=春兰)品牌为熊猫或春兰的品牌为熊猫或春兰的 商品表1(商品代号,分类名,单价,数量)商品表2(商品代号,产地,品牌)SELECT FROM WHERE从商品库中查询出产地为广州或深圳的所有商品的商品代号、分类名、产地和品牌。(产地产地=广州广州 or 产地产地=深圳深圳)x.商品代号,分类号,产地,品牌商品代号,分类号,产地,品牌商品表商品表1 x,商品表商品表2 yx.商品代号商品代号=y.商品代号商品代号 and94从教学库中查询出选修了课程名为“数据库应用”课程的每个学生的学号、姓名和专业。学生(学生号 char(7),姓名 char(6),性别 char(2),专业 char(6)课程(课程号 char(4),课程名 char(10),课程学分 int)选课(学生号 char(7),课程号 char(4),成绩 int)select X.学生号,姓名,专业 from 学生 x,课程 y,选课 z wherex.学生号=z.学生号 and y.课程号=z.课程号 and y.课程名=数据库应用 select count(*)from 商品表1 where 数量10从商品库中查询出数量大于10的商品种数 SELECT ,;FROM ,.;WHERE SELECT ,;FROM ,.;WHERE 传统传统新版新版投影投影选择、选择、连接连接投影投影连接连接选择选择新版SQL中,已经把查询连接条件从where选项中转移到from 选项中,并且还丰富了连接功能.一、中间连接、左连接、右连接中间连接From inner join On .leftright 学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气学生学生号课程号成绩0101001C001780101001C004620102005E00273选课Select Select*from from 学生,选课选课where where 学生学生.学生号学生号=选课选课.学生号学生号From 学生 inner join 选课On 学生学生.学生号学生号=选课选课.学生号学生号select*SelectSelect fromfromwherewhere商品表1,商品表2商品表1.商品代号,分类名,产地,品牌(产地=南京 or 产地=无锡)and 商品表1.商品代号=商品表2.商品代号SelectSelect fromfromwherewhere商品表商品表1 inner join 1 inner join 商品表商品表2 2商品表商品表1.1.商品代号,分类名,产地,品牌商品代号,分类名,产地,品牌(产地(产地=南京南京 or or 产地产地=无锡无锡)On On 商品表商品表1.1.商品代号商品代号=商品表商品表2.2.商品代号商品代号学生号姓名性别专业0101001王明男计算机0102005刘芹女电子0202003张鲁男电子0303001赵红女电气学生学生号课程号成绩0101001C001780101001C004620102005E00273选课From 学生 left join 选课On 学生学生.学生号学生号=选课选课.学生号学生号select*学生号姓名性别专业学生号课程号成绩0101001王明男计算机0101001C001780101001王明男计算机0101001C004620102005刘芹女电子0102005E002730202003张鲁男电子nullnullnull0303001赵红女电气nullnullnull把第一个表中没有形成连接把第一个表中没有形成连接的所有元组也加入结果中的所有元组也加入结果中所有学生的选课情况(含没选课的同学)所有学生的选课情况(含没选课的同学)一般连接一般连接(中间连接)(中间连接)课程号课程名课程学分C001C+语言4C004操作系统3E002电子技术5X003信号原理4X005软件工程4课程学生号课程号成绩0101001C001780101001C004620102005E00273选课From 选课 right join 课程On 选课选课.课程号课程号=课程课程.课程号课程号select*学生号课程号成绩课程号课程名课程学分0101001C00178C001C+语言40101001C00462C004操作系统30102005E00273E002电子技术5nullnullnullX003信号原理4nullnullnullX005软件工程4把第二个表中没有形成连接把第二个表中没有形成连接的所有元组也加入结果中的所有元组也加入结果中 SELECT ,;FROM ,.;WHERE SELECT ,;WHERE From inner/right/left join On .联接条件联接条件Select*From 课程 left join(选课 inner join 学生 on 学生.学生号=选课.学生号)On 课程.