第2章 SQL语言
- 格式:ppt
- 大小:2.31 MB
- 文档页数:67
《Oracle数据库应用》理论课第2章SQL 查询和SQL 函数⏹本章技能目标⏹了解Oracle 数据类型⏹了解数据定义语言和数据操纵语言⏹了解事务控制语言和数据控制语言⏹掌握SQL 操作符和SQL 函数1.SQL简介SQL 是Structured Query Language(结构化查询语言)的首字母缩写词。
SQL 是数据库语言,Oracle 使用该语言存储和检索信息。
表是主要的数据库对象,用于存储数据。
通过SQL可以实现与Oracle 服务器的通信。
下图显示了用户执行命令时与Oracle服务器的通信。
与Oracle服务器通信SQL 支持下列类别的命令:数据定义语言(DDL)2数据操纵语言(DML ) 事务控制语言(TCL ) 数据控制语言(DCL )数据定义语言:Create(创建),Alter (更改)和Drop(删除)命令 数据操纵语言:Insert (插入),Select (),Delete (),Update () 事务控制语言:Commit (),SavePoint (),Rollback () 数据控制语言:Grant (),Revoke ()2. Oracle 数据类型创建表时,必须为各个列指定数据类型。
下面介绍Oracle 中常用的数据类型。
以下是 Oracle 数据类型的类别:2.1 字符数据类型CHAR 数据类型当需要固定长度的字符串时,使用 CHAR 数据类型。
CHAR 数据类型存储字母数字值。
CHAR 数据类型的列长度可以是 1 到 2000 个字节。
如果输入的值小于指定的长度,数据库则用空格填充至固定长度。
如果用户输入的值大于指定的长度,数据库则返回错误报告。
V ARCHAR2数据类型V ARCHAR2数据类型支持可变长度字符串。
V ARCHAR2数据类型存储字母数字值。
V ARCHAR2数据类型的大小在1至4000个字节范围内。
在定义该数据类型时,应该指定其大小。
第二章数据库设计和ER模型一、单项选择题(一)同步练习1.在一个ER模型中,有三个不同的实体集和3个不同的二元联系,其中有一个1一对一联系,一个多对多的联系,根据ER模型转换成关系模型的规则,转换成关系的数目是()。
A.3 B. 4C.5 D. 62.增强的ER模型中,子类与超类之间存在着()。
A.相容性 B.一致性C.继承性 D.完整性3.在数据库设计中,用ER模型图来描述信息结构但不涉及信息在计算机中的表示,他属于数据库设计的()阶段。
A.需求分析 B. 概念设计C.逻辑设计 D. 物理设计4.数据库逻辑设计结构的主要任务是()。
A.建立ER图和说明书 B.创建数据库说明C.建立数据流图 D.把数据送入数据库5.下列不属于数据库逻辑设计阶段应考虑的问题是()。
A.概念模式B.存取方法C.处理要求D.DBMS特性6.设计数据库时首先考虑的是()。
A.数据库应用系统结构B.DBMS结构C.数据库的概念结构D.数据库的控制结构7.下列不属于需求分析阶段工作的是()。
A.分析用户活动B.建立ER图C.建立数据字典D.建立数据流图8.数据流图是在数据库()阶段完成的。
A.逻辑设计B.物理设计C.需求分析D.概念设计9.在关系数据库设计中,设计关系模式是()的任务。
A.需求分析B.概念设计C.逻辑设计D.物理设计10.一个M:N:P的联系可以转化成()个关系模式。
A.3 B.2C.1 D.011.当局部ER图合并成全局ER图时可能出现冲突,不属于合并冲突的是()。
A.属性冲突B.语法冲突C.结构冲突D.命名冲突12.ER图中的联系可以与()个实体有关。
A.0 B.1C.1或多D.多(二)试题09011.学校里规定,一个教师最多可讲授3门课程,最少必须讲授l门课程;每门课程最多5个教师讲授,最少需要一个教师讲授,则教师与课程的基数分别为()A.(1,3),(1,5)B.(3,1),(5,1)C.(1,5),(1,3)D.(5,1),(3,1)08101.教师实体中有教师号、姓名、部门、任教时间、教龄等属性,其中教龄是一个()A.派生属性B.多值属性C.复合属性D.NULL属性08102.对关系的描述不正确...的是()A.关系是一个集合B.关系是一张二维表C.关系可以嵌套定义D.关系中的元组次序可交换07101.设计数据库时,应该首先设计数据库的()A.应用系统结构B.概念结构C.逻辑结构D.物理结构07011将ER模型转换成关系模型的过程属于数据库的()A.需求分析 B. 概念设计C.逻辑设计 D. 物理设计07012用二维表结构表达实体集的模型是()A.概念模型B.层次模型C.网状模型D.关系模型二、填空题(一)同步练习1.ER数据模型一般在数据库设计的__________阶段使用。
第1章绪论1 .试述数据、数据库、数据库系统、数据库管理系统的概念。
答:( l )数据( Data ) :描述事物的符号记录称为数据。
数据的种类有数字、文字、图形、图像、声音、正文等。
数据与其语义是不可分的。
解析在现代计算机系统中数据的概念是广义的。
早期的计算机系统主要用于科学计算,处理的数据是整数、实数、浮点数等传统数学中的数据。
现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂。
数据与其语义是不可分的。
500 这个数字可以表示一件物品的价格是500 元,也可以表示一个学术会议参加的人数有500 人,还可以表示一袋奶粉重 500 克。
( 2 )数据库( DataBase ,简称 DB ) :数据库是长期储存在计算机内的、有组织的、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
( 3 )数据库系统( DataBas 。
Sytem ,简称 DBS ) :数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
解析数据库系统和数据库是两个概念。
数据库系统是一个人一机系统,数据库是数据库系统的一个组成部分。
但是在日常工作中人们常常把数据库系统简称为数据库。
希望读者能够从人们讲话或文章的上下文中区分“数据库系统”和“数据库”,不要引起混淆。
( 4 )数据库管理系统( DataBase Management sytem ,简称 DBMs ):数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。
DBMS 的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
解析DBMS 是一个大型的复杂的软件系统,是计算机中的基础软件。
目前,专门研制DBMS 的厂商及其研制的DBMS 产品很多。
第2章关系数据库1.试述关系模型的三个组成部分。
答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2.试述关系数据语言的特点和分类。
答:关系数据语言可以分为三类:关系代数语言。
关系演算语言:元组关系演算语言和域关系演算语言。
SQL:具有关系代数和关系演算双重特点的语言。
这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
4.试述关系模型的完整性规则。
在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?答:实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R 和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。
即属性F本身不是主属性,则可以取空值,否则不能取空值。
5.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:1)求供应工程J1零件的供应商号码SNO:πSno(σSno=…J1‟(SPJ))2)求供应工程J1零件P1的供应商号码SNO:πSno(σSno=…J1‟∧Pno=…P1…(SPJ))3)求供应工程J1零件为红色的供应商号码SNO:πSno(σPno=…P1… (σCOLOR=‟红… (P)∞SPJ))4)求没有使用天津供应商生产的红色零件的工程号JNO:πJno(SPJ)- πJNO(σcity=…天津‟∧Color=…红… (S∞SPJ∞P)5)求至少用了供应商S1所供应的全部零件的工程号JNO:πJno,Pno(SPJ)÷πPno(σSno=…S1… (SPJ))6.试述等值连接与自然连接的区别和联系。
答:连接运算符是“=”的连接运算称为等值连接。
它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
“实验习题1:••自定义一个地址(address)数据类型exec sp_addtype address/varchar(80)7not nu『-创建两个自定义数据类型stu_name和postalcodeuse studentgoexec sp_addtype stu_nam巳,varchar(8)Tnu『exec sp_addtype postalcode,'charfGJ'/not nu『•■定义一个整形局部变暈和一个可变长字符型局部变暈并赋值declare @local_variable_int int,@local_variable_char nvarchar(9) select @local_variable」nt=40set @local_variable_char=,Welcome to changsha1select @local_variable」ntselect @local_variable_chargo-使用if语句求i到10 Z间的累加“和”并输出结果declare @sum int,@count intselect @sum=0/@count=lwhile @count<=10beginselect @sum=@sum+@countselect @count=@count+1endselect @sum,@count一编写计算n! (n=20)的T・SQL语句,并显示计算结果。
declare @a int,@b bigintset @a=lset @b=lwhile @a<=20beginset @b=@b*@aset @a=@a+l;endprint @b-输出字符串“School”中的每一个字符的ASCII值和字符declare @position int,@string char(6) set @position=2set @string='Schowhile @position<=datalength(@string)beginselect ascii(substring(@string,@position,l)) as asccode, char (ascii(substring(@string,@position,1)))as ascchar set @position二@position+lend••设置在9: 00进行一次查询操作use student gobeginwaitfor time '3:35' select * from Table_l end-设置在1分钟后进行一次查询操作use student gobeginwaitfor delay'00:01' select * from Table_2 end-1、简答题-(1) 1)、在方法上突破:由单一数据表发展为通过表的联接可以组合地处理数据・・2)、容易学习和维护:SQL语句简洁直观,一条语句可以取代常规程序语言的一段程序,容易维护・・3)、语言共享:不同数据库的程序设计语言会有所不同,但SQL在所有数据库中都是相同的・・4)、全面支持客户机/服务器结构:SQL是当今唯一已形成标准的数据库共享语言-(2)、局部变量名必须以标识符'@'开头,全局变量名必须以标识符'@@'开头。
数据库学习课程第二章习题和答案一.单项选择1.SQL语言是 B 的语言,易学习.A 过程化B 非过程化C 格式化D 导航式提示:SQL是一种介于关系代数与关系演算之间的结构化查询语言,它是高度非过程化的.2.SQL语言是 C 语言.A 层次数据库B 网络数据库C 关系数据库D 非数据库提示:SQL是关系数据库标准语言.3.SQL语言具有 B 的功能.A 关系规范化,数据操纵,数据控制B 数据定义,数据操纵,数据控制C 数据定义,关系规范化,数据控制D 数据定义,关系规范化,数据操纵提示:SQL语言自身不具备关系规范化功能.4.在SQL中,用户可以直接操作的是 D .A 基本表B 视图C 基本表和视图D 基本表和视图5.在SQL语言中,实现数据检索的语句是 A .A SELECTB INSERTC UPDATED DELETE6.SELECT语句执行结果是 C .A 数据项B 元组C 表D 数据库7.在SQL语句中,对输出结果排序的语句是 B .A GROUP BYB ORDER BYC WHERED HA VING8.在SELECT语句中,需对分组情况满足的条件进行判断时,应使用 D .A WHEREB GROUP BYC ORDER BYD HA VING9.在SELECT语句中使用*表示 B .A 选择任何属性B 选择全部属性C 选择全部元组D 选择主码10.在SELECT语句中,使用MAX(列名)时,该”列名”应该 D .A 必须是数值型B 必须是字符型C 必须是数值型或字符型D 不限制数据类型11.使用CREATE TABLE语句创建的是 B .A 数据库B 表C 试图D 索引12.下列SQL语句中,修改表结构的是 A .A ALTERB CREATEC UPDATED INSERT13.在SQL中使用UPDATE语句对表中数据进行修改时,应使用的语句是 D .A WHEREB FROMC V ALUESD SET14.视图建立后,在数据库中存放的是 C .A 查询语句B 组成视图的表的内容C 视图的定义D 产生视图的表的定义15.以下叙述中正确的是 B .A SELECT命令是通过FOR子句指定查询条件B SELECT命令是通过WHERE子句指定查询条件C SELECT命令是通过WHILE子句指定查询条件D SELECT命令是通过IS子句指定查询条件16.与WHERE AGE BETWEEN 18 AND 23完全等价的是 D .A WHERE AGE>18 AND AGE<23B WHERE AGE<18 AND AGE>23C WHERE AGE>18 AND AGE<=23 D WHERE AGE>=18 AND AGE<=2317.在查询中统计记录(元组)的个数时,应使用 C 函数.A SUMB COUNT(列名)C COUNT(*)D A VG18.在查询中统计某列中值的个数应使用 B 函数.A SUMB COUNT(列名)C COUNT(*)D A VG19.已知基本表SC(S#,C#,GRADE),其中S#为学号,C#为课程号,GRADE为成绩.则”统计选修了课程的学生人数”的SQL—SELECT语句为 A .A SELECT COUNT(DISTINCT S#)FROM SCB SELECT COUNT(S#)FROM SC C SELECT COUNT()FROM SCD SELECT COUNT(DISTINCT *)FROM SC20.在数据库中有如图所示的两个表,若职工表的主码是职工号,部门表的主码是部门号,SQL 操作 B 不能执行.A 从职工表中删除行(‘025’,’王芳’,’03’,720)B 将行(‘005’,’乔兴’,’04’,750)插入到职工表中C 将职工号为”001”的工资改为700D 将职工号为”038”的部门号改为’03’提示:由于职工表中的职工号为主码,不能向其中插入同主码的记录.21.若用如下SQL语句创建一个表studentCREATE TABLE student(NO CHAR(4) NOT NULL,NAME CHAR(8) NOT NULL,SEX CHAR(2),AGE INT)可以插入到student 表中的是 B .A (‘1031’,’曾华’,男,23)B (‘1031’,’曾华’,NULL,NULL)C (NULL,’曾华’,’男’,’23’)D (‘1031’,NULL,’男’,23)提示:A 中性别SEX 属性值格式不正确,C 中NO 属性值不能为空,D 中NAME 属性值不能为空.22.假设学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE).要查询选修”COMPUTER ”课程的”女”同学的姓名,将涉及关系 D .A SB SC,C C S,SCD S,SC,C 二.填空1.SQL 语言的数据定义功能包括 定义数据 、 定义基本表 、 定义视图 、 定义索引 。
用sql语句建立第二章建立第二张表需要写出包含表的字段名称和数据类型的 CREATE TABLE 语句。
SQL 是一种结构化查询语言,我们可以使用它来创建和管理数据库对象,如表、视图和存储过程等。
CREATE TABLE 语句是创建表的核心。
下面是一个基本的 CREATE TABLE 语法:CREATE TABLE table_name (column1 datatype,column2 datatype,column3 datatype,.....);其中,table_name 是要创建表的名称,而 column1,column2,column3 等是表中的字段名称。
CREATE TABLE 很多参数可以用来控制表的结构,如约束、索引、默认值等等,但这些我们在后面的章节中会详细讲解。
现在让我们先来创建我们的第二张表。
我们假设要创建的表名为 students,它包含以下字段:- id:学生ID,int类型- name:学生姓名,varchar类型- age:学生年龄,int类型- gender:学生性别,varchar类型- major:学生专业,varchar类型根据以上内容,可以使用以下 SQL 语句创建具有相应字段的students 表:CREATE TABLE students (id int,name varchar(255),age int,gender varchar(10),major varchar(255));此时我们可以通过以下命令来查看刚刚创建的表:SHOW TABLES;结果应该显示出刚刚创建的 students 表。
参考上述 SQL 语句,您也可以使用自定义数据类型、约束、索引、触发器等等来创建更复杂的表。
无论何时需要创建表,只要按照有意义的列名和与列中存储的数据类型结合的格式书写 CREATE TABLE 语句即可。
总之,SQL 是一种非常强大的数据库语言,掌握它能够极大地提高我们的工作效率和代码质量。
第1章绪论习题参考答案13.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。
这些零件由不同的原材料制成,不同零件所用的材料可以相同。
这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。
请用E-R图画山此工厂产品,零件,材料,仓库的概念模型。
第2章关系数据库习题参考答案5. 设有一个SPJ数据库,包括S, P, J, SPJ四个关系模式:1) 求供应工程J1零件的供应商号码SNO:n Sno( (T Jno= ' J1' ( SPJ )2) 求供应工程J1零件P1的供应商号码SNO:n Sno( T Jno= 'J1'人Pno= ‘ P1 ‘(SPJ))3) 求供应工程J1零件为红色的供应商号码SNOn Sno( T Pno= ‘P1 ‘ (T COLOR=红‘ (P)^ SPJ )4) 求没有使用天津供应商生产的红色零件的工程号JNOn Jno(SPJ)- n JNO (T city='天津'人Color='红‘(S^SPJ50 P)5) 求至少用了供应商S1所供应的全部零件的工程号JNO:n Jn。
, Pno(SPJ片n Pno (T Sno= ‘ S1 ‘(SPJ)第3章SQL语言习题参考答案用SQL语句建立第二章习题5中的四个表。
S(SNO SNAME STATUS CITY)P(PNO, PNAME, COLOR WEIGHT)J(JNO JNAME CIT Y)SPJ(SNO PNO, JNO, QTY);供应商表S由供应商代码(SNO)供应商姓名(SNAME)供应商状态(STATUS)供应商所在城市(CIT Y组成:CREATE TABLE S(Sno CHAR(2) UNIQUESn ame CHAR(6),Status CHAR(2,City CHAR(4));零件表P由零件代码(PNO)零件名(PNAME)颜色(COLOR、重量(WEIGHT组成:CREATE TABLE P(Pno CHAR(2) UNIQUEPname CHAR(6,)COLOR CHAR(2,)WEIGHT INT);工程项目表J由工程项目代码(JNO)工程项目名(JNAME、所在城市(CITY组成:CREATE TABLE J( JNO CHAR(2) UNlQUE,JNAME CHAR(8,)CITY CHAR(4));供应情况表SPJ由供应商代码(SN0)零件代码(PN0)工程项目代码(JN0)供应数量(QTY)组成:CREATE TABLE SPJ( SN0 CHAR(2,) PN0 CHAR(2,) JN0 CHAR(2,) QTY INT);4. 针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:求供应工程J1零件的供应商号码SN0:SELECT SN0 FR0M SPJWHERE JN0='J1'求供应工程J1 零件P1 的供应商号码SN0:SELECT SN0 FR0M SPJWHERE JN0='J1' AND PN0='P1'求供应工程J1 零件为红色的供应商号码SN0:SELECT SN0 FR0M SPJ,PWHERE JN0='J1' AND = AND C0L0fi='求没有使用天津供应商生产的红色零件的工程号JN0:SELECT JN0 FR0M SPJWHERE JN0 N0T IN (SELECT JN0 FR0M SPJ,P,SWHERE =天津'AND COLOR红'AND =AND =;或者:SELECT JNO FROM JWHERE NOT EXITS( SELECT * FROM SPJ,S,P WHERE = AND ;=求至少用了供应商S1 所供应的全部零件的工程号JNO。