第六章数据库标准语言SQL.docx

上传人:b****8 文档编号:12102680 上传时间:2023-06-04 格式:DOCX 页数:21 大小:27.44KB
下载 相关 举报
第六章数据库标准语言SQL.docx_第1页
第1页 / 共21页
第六章数据库标准语言SQL.docx_第2页
第2页 / 共21页
第六章数据库标准语言SQL.docx_第3页
第3页 / 共21页
第六章数据库标准语言SQL.docx_第4页
第4页 / 共21页
第六章数据库标准语言SQL.docx_第5页
第5页 / 共21页
第六章数据库标准语言SQL.docx_第6页
第6页 / 共21页
第六章数据库标准语言SQL.docx_第7页
第7页 / 共21页
第六章数据库标准语言SQL.docx_第8页
第8页 / 共21页
第六章数据库标准语言SQL.docx_第9页
第9页 / 共21页
第六章数据库标准语言SQL.docx_第10页
第10页 / 共21页
第六章数据库标准语言SQL.docx_第11页
第11页 / 共21页
第六章数据库标准语言SQL.docx_第12页
第12页 / 共21页
第六章数据库标准语言SQL.docx_第13页
第13页 / 共21页
第六章数据库标准语言SQL.docx_第14页
第14页 / 共21页
第六章数据库标准语言SQL.docx_第15页
第15页 / 共21页
第六章数据库标准语言SQL.docx_第16页
第16页 / 共21页
第六章数据库标准语言SQL.docx_第17页
第17页 / 共21页
第六章数据库标准语言SQL.docx_第18页
第18页 / 共21页
第六章数据库标准语言SQL.docx_第19页
第19页 / 共21页
第六章数据库标准语言SQL.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第六章数据库标准语言SQL.docx

《第六章数据库标准语言SQL.docx》由会员分享,可在线阅读,更多相关《第六章数据库标准语言SQL.docx(21页珍藏版)》请在冰点文库上搜索。

第六章数据库标准语言SQL.docx

第六章数据库标准语言SQL

第六章关系数据库标准语言SQL

  大纲要求

  

  关系数据库标准语言SQL

  1、SQL的数据定义功能:

  

(1)CREATETABLE–SQL

  

(2)ALTERTABLE–SQL

  2、SQL的数据修改功能:

  

(1)DELETE–SQL

  

(2)INSERT–SQL

  (3)UPDATE–SQL

  3、SQL的数据查询功能:

  

(1)简单查询。

  

(2)嵌套查询。

  (3)连接查询。

  内连接

  外连接:

左连接、右连接、完全连接

  (4)分组与计算查询。

  (5)集合的并运算。

  

  知识要点

  

  一、SQL语言的特点

  1.综合统一

  SQL语言集数据定义(DDL)、数据操纵(DML)、数据管理(DCL)的功能于一体,语言风格统一,可以独立完成数据库的全部操作,包括定义关系模式、录入数据及建立数据库、查询、更新、维护数据、数据库的重新构造、数据库安全性等一系列操作的要求,为数据库应用系统开发者提供了良好的环境。

  2.高度非过程化

  3.语言简洁,易学易用

  4.以同一种语法结构提供两种使用方式

  既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。

 二、SQL语言的基本概念

  SQL语言支持关系型数据库的三级模式结构。

其中外模式对应于视图(View)和部分基本表(BaseTable),模式对应于基本表,内模式对应于存储文件。

  基本表是本身独立存在的表,在SQL语言中一个关系对应一个表。

一些基本表对应一个存储文件,一个表可以带若干索引,索引存放在存储文件中。

  存储文件的逻辑结构组成了关系型数据库的内模式。

而存储文件的物理文件结构是任意的。

  视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库只存放在视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。

  

  三.数据定义

  数据定义语言DDL用于执行数据定义的操作,如创建或删除表、索引和视图之类的对象。

由CREATE、DROP、ALTER命令组成,完成数据库对象的建立(CREATE)、删除(DROP)和修改(ALTER)。

  1.定义(创建)表【格式】:

  CREATETABLE<表名>(<字段名1><数据类型>;

  [(<宽度>[,<小数位数>])][完整性约束];

  [NULL|NOTNULL][,<字段名2>…])

  【功能】定义(也称创建)一个表。

  【例1】创建一个表SC(课程成绩表),它由以下字段组成:

学号(C,10);课程号(C,2)。

  CREATETABLESC(学号C(10),课程号C

(2))

  LISTSTRUCTURE

  【例2】创建一个表STUD(学生信息表),它由以下字段组成:

学号(C,10);姓名(C,8);性别(C,2);班级名(C,10);系别代号(C,2);地址(C,50);出生日期(D);是否团员(L);备注(M);照片(G)。

  CREATETABLESTUD(学号C(10),姓名C(10),性别C

(2),班级名C(10),系别代号C

(2),地址C(50),出生日期D,是否团员L,备注M,照片G)

  LISTSTRUCTURE

  2.修改表【格式】

  ALTERTABLE<表名>[ADD<新字段名><数据类型>[(<宽度>[,<小数位数>])][完整性约束][NULL|NOTNULL]][DROP[完整性约束]][MODIFY<字段名><数据类型>]

  【功能】修改表结构。

  【说明】ADD子句用于增加指定表的字段变量名、数据类型、宽度和完整性约束条件;DROP子句用于删除指定的的完整性约束条件;MODIFY子句用于修改原有的字段变量的值。

  【例】在课程成绩表SC中,增加一个成绩字段变量(N,3)。

  ALTERTABLESCADD成绩N(3)

  LISTSTRUCTURE

  3.删除数据库

  【格式】DROPDATABASE<数据库名>

  【功能】删除指定数据库的结构和数据。

  【说明】谨慎使用。

  4.删除表

  【格式】DROPTALBE<表名>

  【功能】删除指定表的结构和内容(包括在此表上建立的索引)。

  【说明】如果只是想删除一个表中的所有记录,则应使用DELETE语句。

例题:

  

(1)SQL是______语言。

  A.结构化查询

  B.数据定义

  C.数据操作

  D.数据控制

  【解析】本题考查的知识点是SQL语言的基础知识。

在VisualFoxPro中,SQL是结构化查询语言。

选项B,C,D说法错误,在VisualFoxPro中有数据定义语言、数据操作语言、数据控制语言。

  【答案】A

  

(2)SQL除了具有数据查询的功能外,还有_____。

  A.数据定义   B.数据操纵   C.数据控制   D.以上答案均正确

  【解析】本题考查的知识点是SQL语言的作用。

在VisualFoxPro中,SQL的功能有四个:

数据查询、数据定义、数据操纵、数据控制。

因此正确答案为D。

  【答案】D

  (3)下列选项中,不属于数据定义功能的SQL语句是__________。

  A.CREATE   B.ALTER      C.SELECT    D.DROP

  【解析】本题考查的知识点是SQL命令动词的作用。

  选项A用来创建表;选项B用来修改表结构;选项C用来查询;选项D用来删除表文件。

在VisualFoxPro中,选项A,B,D都具有数据定义功能,只有选项C具有数据查询的功能。

  【答案】C

  (4)SQL的核心是__________。

  A.数据查询   B.数据定义   C.数据操纵   D.数据控制

  【解析】本题考查的知识点是SQL的核心。

SQL作为结构化查询语言,其核心是查询。

因此正确答案为A。

  【答案】A

  (5)SQL同其他数据操作语言不同,其关键在于_____。

  A.SQL是一种过程性语言       B.SQL是一种非过程性语言

  C.SQL语言简练               D.SQL的词汇有限

  【解析】本题考查的知识点是SQL不同于其他语言的关键。

SQL同其他数据操作语言不同的关键是SQL是一种非过程性语言。

通过这一功能用户只需说明做什么,而不用说明怎么做,不用了解数据存储的格式及SQL命令的内部执行过程,就可以方便地对数据库进行操作。

  选项A的说法错误,选项C和D是SQL语言的特点,但不是SQL语言同其他数据操作语言不同的关键。

  【答案】B

  (6)建立表结构的SQL命令是____。

  A.ALTERTABLE               B.DROPTABLE

  C.CREATTABLE               D.CREATINDEX

  【解析】本题考查的知识点是建立表结构的SQL命令。

建立表结构的SQL命令是CREATTABLE。

ALTERTABLE命令的作用是修改表结构;DROPTABLE命令的作用是删除表;CREATINDEX命令的作用是建立索引。

  【答案】C

  (7)SQL可以_____使用,也可以_____使用。

  【解析】本题考查的知识点是SQL语言的使用方式。

SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。

  【答案】直接以命令方式交互,嵌入到程序设计语言中以程序方式

  (8)在ALTERTABLE中,_____用来添加新字段;_____修改已有字段。

  【解析】本题考查的知识点是ALTERTABLE命令及各子项的作用。

在ALTERTABLE命令中,ADD用来添加新字段;ALTER用来修改已有字段。

  【答案】ADDALTER

 四、数据操纵

  数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DML:

  ●数据查询:

寻找所需的具体数据。

  ●数据修改:

添加、删除和改变数据。

  数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查询)等组成,由于SELECT比较特殊,所以一般又将它以查询语言单独出现。

  1.插入记录

  【格式1】

  INSERTINTO<表名>[<字段名表>]VALUES(<表达式表>)

  【格式2】

  INSERTINTO<表名>FROMARRAY<数组名>|FROMMEMVAR

  【功能】在指定的表文件尾部追加一条记录。

格式1用表达式表中的各表达式值赋值给<字段名表>中的相应的各字段。

格式2用数组或内存变量的值赋值给表文件中各字段。

  【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。

<字段名表>:

指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。

  <表达式表>:

指定要追加的记录各个字段的值。

  【例1】在表文件STUD的末尾追加三条记录。

  ***用表达式方式追加第一条记录***

  INSERTINTOSTUD(学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员);

  VALUES("011110","李中国","男","计0121","01","湖北武汉",{^2005/01/06},.T.)

  ***用数组方式追加第二条记录***

  DIMENSIONTA[8]

  TA

(1)="011103"

  TA

(2)="李宁"

  TA(3)="女"

  TA(4)="电0134"

  TA(5)="02"

  TA(6)="长沙希赛教育"

  TA(7)={^2005/01/15}

  TA(8)=.T.

  INSERTINTOSTUDFROMARRAYTA

  ***用内存变量方式追加第三条记录***

  学号="011202"

  姓名="赵娜"

  性别="女"

  班级名="英0112"

  系别代号="03"

  地址="广西南宁"

  出生日期={^2002/12/14}

  是否团员=.F.

  INSERTINTOSTUDFROMMEMVAR

  LIST

2.更新记录命令

  【格式】

  UPDATE<表文件名>SET<字段名1>=<表达式>

  [,<字段名2>=<表达式>…][WHERE<条件>]

  【功能】更新指定表文件中满足WHERE条件子句的数据。

其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。

  【说明】更新操作又称为修改操作。

  【例】将成绩表(SC)中,所有课程号为02的成绩各加5分。

  UPDATESCSET成绩=成绩+5WHERE课程号="k321"

  3.删除记录

  【格式】DELETEFROM<表名>WHERE<表达式>

  【功能】从指定的表中删除满足WHERE子句条件的所有记录。

如果在DELETE语句中没有WHERE子句,则该表中的所有记录都将被删除。

  【说明】这里的删除是逻辑删除,即在删除的记录前加上一个删除标记“*”。

  【例】删除STUD表中所有性别为男的记录。

  DELETEFROMSTUDWHERE性别=“男”

  4.数据管理

  数据管理(也称数据控制)语言是用来管理(或控制)用户的访问权限的。

而VisualFoxPro6.0没有这种权限管理。

  例题

  

(1)下列关于INSERT-SQL的叙述正确的是____。

  A.在表尾插入一条记录        B.在表头插入一条记录

  C.在表中任何位置插入一条记录D.可以向表中插入若干记录

  【解析】本题考查的知识点是INSERT命令的作用。

INSERT-SQL命令的作用是在表尾插入一条记录。

  选项B,C,D的说法都错误,INSERT-SQL命令不能完成B,C,D指定的要求。

  【答案】A

  

(2)DELETEFROM考生成绩WHERE成绩<90语句的功能是____。

  A.物理删除成绩在90分以下的记录

  B.彻底删除成绩在90分以下的记录

  C.删除考生成绩表

  D.为表中成绩小于90分的记录添加删除标记

  【解析】本题考查的知识点是SQL语句中DELETE命令的使用。

SQL中的DELETE命令用于逻辑删除记录,如果要物理删除记录,需要用PACK命令。

选项A中的物理删除错误。

选项B的彻底删除实际就是物理删除,所以错误。

选项C的说法有错误。

选项D的说法正确,因为SQL中的DELETE命令用于逻辑删除记录,FROM用于指定从哪个表中删除记录,本题即从“考生成绩”表中删除;WHERE用于指定被删除的记录所满足的条件,本题的条件是成绩在90分以下的记录。

  【答案】D

(3)SQL语句中,UPDATE命令的功能是____。

  A.数据更新

  B.删除数据

  C.建立表

  D.修改表

  【解析】本题考查的知识点是SQL语句中UPDATE命令的功能。

在SQL语句中,UPDATE命令的功能是数据更新。

删除数据的命令是DELETE。

建立表的命令是CREATETABLE。

修改表结构的命令ALTERTABLE。

  【答案】A

  (4)SQL语言中,删除表命令是____。

  A.DELETE

  B.DELETETABLE

  C.DROP

  D.DROPTABLE

  【解析】本题考查的知识点是删除表的命令。

SQL中删除表的命令是DROPTABLE。

DELETE命令用于删除数据。

DELETETABLE的格式错误。

DROP命令的语法错误。

因此正确答案为D。

  【答案】D

  (5)在SQL语句中,修改表中数据的命令是____。

  A.ALTER      B.UPDATE     C.DELETE     D.DISTINCT

  【解析】本题考查的知识点是SQL中修改表中数据的命令。

SQL语句中修改表中数据的命令UPDATE。

  ALTER命令用于修改表结构。

DELETE命令用于删除数据。

DISTINCT命令用于SELECT语句中消除重复出现的记录行。

  【答案】B

  (6)在VisualFoxPro中,向表中输入记录的命令是____。

  【解析】本题考查的知识点是向表中输入记录的命令。

在SQL语句中,向表中输入记录的命令是INSERT。

  【答案】INSERT

  (7)在VisualFoxPro中SQLDELETE命令是____删除记录,如果要物理删除记录应使用____命令。

  【解析】本题考查的知识点是SQL中的DELETE删除命令。

在VisualFoxPro的SQL中DELETE命令是逻辑删除记录,如果要物理删除记录应使用PACK命令。

  【答案】逻辑,PACK

五、SQL中的数据查询语句

  数据库中的数据很多时侯是为了查询,因此,数据查询是数据库的核心操作。

而在SQL语言中,查询语言中有一条查询命令,即SELECT语句。

  1.基本查询语句

  【格式】

  SELECT[ALL|DISTINCT]<字段列表>FROM<表>

  【功能】无条件查询。

  【说明】ALL:

表示显示全部查询记录,包括重复记录。

  DISTINCT:

表示显示无重复结果的记录。

  【例1】显示STUD(学生信息数据表)中的所有记录。

  SELECT*FROMSTUD

  命令中的*表示输出显示所有的字段,数据来源是STUD表,表中的内容以浏览方式显示。

  【例2】显示STUD(学生信息数据表)中的所有的学号及与之对应的姓名,同时能去除重名。

  SELECTDISTINCT学号,姓名FROMSTUD

  【例3】显示SC(课程成绩表)中的所有记录,并将成绩一项乘以0.7。

  SELECT学号,课程号,成绩*0.7AS成绩FROMSC

  2.带条件(WHERE)的查询语句

  【格式】

  SELECT[ALL|DISTINCT]<字段列表>

  FROM<表>

  [WHERE<条件表达式>]

  【功能】从一个表中查询满足条件的数据。

  【说明】<条件表达式>由一系列用AND或OR连接的条件表达式组成,SQL支持的关系运算符如下:

  =、<>、!

=、#、==、>、>=、<、<=。

  【例1】显示STUD表中所有男生记录的学号,姓名和性别字段值。

  SELECT学号,姓名,性别FROMSTUDWHERE性别="男"

  【例2】显示STUD表中出生日期在85-86年之间的学生的学号,姓名,出生日期。

  SELECT学号,姓名,出生日期FROM学生;

  WHERE出生日期BETWEEN{^1985/01/01}AND{^1986/12/31}

  【例3】显示STUD表中姓李的学生的学号,姓名,出生日期。

  SELECT学号,姓名,出生日期FROM学生;

  WHERE姓名LIKE"l%"

  (注:

LIKE是字符匹配运算符,可使用通配符%(表示0-多个字符)、-(表示一个字府))

 3.SQL的复杂查询

  

(1)连接查询

  【说明】在一个数据库中的多个表之间一般都存在着某些联系,在一个查询语句中同时涉及到

  两个或两个以上的表时,这种查询称之为连接查询(也称为多表查询)。

在多表之间查询必须处

  理表与表之间的连接关系。

  SELECT[ALL|DISTINCT]<字段列表>

  FROM<表1>[,表2…..]

  WHERE<条件表达式>

  【例1】查询并显示各个学生的学号,姓名,各科成绩及课程名。

  SELECTa.学号,a.姓名,b.课程号,c.成绩;

  FROMSTUDa,SC1b,SCc;

  WHEREa.学号=c.学号ANDb.课程号=c.课程号

  【例2】查询并显示各个学生所学课程的情况。

  SELECTSTUD.学号,STUD.姓名,SC1.课程号;

  FROMSTUD,SC,SC1;

  WHERESTUD.学号=SC.学号ANDSC.课程号=SC1.课程号

  

(2)连接问题

  在SQL语句中,在FROM子句中提供了一种称之为连接的子句,连接分为内部联接和外部联接,外部联接又可分为左联接、右联接和全联接。

  1)内部联接

  内部联接是指包括符合条件的每个表的记录,也称之为全记录操作。

而上面两个例子就是内连接。

  【例】查询并显示各个学生的学号,所学课程及课程成绩。

  SELECTSC.学号,SC1.课程名,SC.成绩;

  FROMSC,SC1;

  WHERESC.课程号=SC1.课程号

  如果采用内部联接方式,则命令如下:

  SELECTa.学号,b.课程名,成绩;

  FROMSCaINNERJOINSC1bONa.课程号=b.课程号

  将会得到完全相同的结果。

  2)外部联接

  外部联接是指把两个表分为左右两个表。

右联接是指连接满足条件右侧表的全部记录。

左联接是指连接满足条件左侧表的全部记录。

全联接是指连接满足条件表的全部记录。

(3)嵌套查询

  在SQL语句中,一个SELECT-FROM-WHERE语句称为一个查询块。

将一个查询块嵌套在另一个查询块的WHERE子句中的查询称为嵌套查询。

  【例1】显示“李宁”所在班级的学生名单。

  SELECT学号,姓名,班级名;

  FROMSTUD;

  WHERE班级名=(SELECT班级名FROMSTUDWHERE姓名="李中国")

  【例2】显示计算机系男生的名单。

  SELECT学号,姓名,系别代号,性别;

  FROMSTUD;

  WHERE系别代号="01"AND性别="男"

  【例3】显示计算机系非男生的名单。

  SELECT学号,姓名,系别代号,性别;

  FROMSTUD;

  WHERE系别代号="03"AND性别="女"

  【例4】显示既选修了01课程又选修了02课程学生的名单。

  SELECT学号;

  FROMSC;

  WHERE课程号=“01”AND学号IN;

  (SELECT学号FROMSCWHERE课程号=“02”)

  【例5】显示选修了01课程而没有选修02课程学生的名单。

  SELECT学号;

  FROMSC;

  WHERE课程号="01"AND学号NOTIN;

  (SELECT学号FROMSCWHERE课程号="02")

(4)排序

  在SQLSELECT中使用ORDERBY短语对查询结果排序,并可以用ASC按升序排序(默认),用DESC按降序排序,可以按一列或多列排序。

  【例1】先按课程号排序、再按成绩排序检索出全部SC表中的学生信息。

  SELECT*FROMSCORDERBY课程号ASC,成绩DESC

  例题:

  1)下列命令中,属于数据查询功能的SQL语句是_____。

  A.CREATE   B.SELECT

  C.INSERT   D.GRANT

  【解析】本题考查的知识点是SQL中的数据查询命令。

在VisualFoxPro中,数据查询的命令动词是SELECT。

CREATE是数据定义命令之一;INSERT是数据操纵命令之一;GRANT是数据控制命令之一。

  本题选项A用于数据定义。

选项B用于数据查询。

选项C用于数据操纵。

选项D用于数据控制。

  【答案】B

  2)在VisualFoxPro中,简单查询基于________。

  A.单个表          B.两个表

  C.两个有关联的表  D.多个表

  【解析】本题考查的知识点是SQL语句中的简单查询。

简单查询基于单个表,可以有简单的查询条件。

  【答案】A

  3)从“学生资料”表中查询所有的姓名,应输入______命令。

  A.SELECT学生资料FROM姓名

  B.SELECT姓名FROM学生资料

  C.SELECT姓名

  D.SELECT学生资料WHERE姓名

  【解析】本题考查的知识点是简单查询的使用。

简单查询由SELECT和FROM短语构成无条件查询,或由SELECT、FROM和WHERE短语构成条件查询。

  选项A中的“学生资料”和“姓名”顺序颠倒;选项B格式及命令都正确;选项C格式错误;选项D命令错误。

  【答案】B

  4)从“学生资料”表中查询所有年龄大于22岁的学生并显示其姓名,应输入_______命令。

  A.SELECT年龄FROM学生资料WHERE姓名>22

  B.SELECT年龄FROM学生资料

  C.SELECT姓名FROM学生资料WHERE年龄>22

  D.SELECT姓名FROM学生资料

  【解析】本题考查的知识点是简单查询命令的使用。

本题由SELECT、FROMTWHERE短语构成条件查询,其中WHERE指定了查询条件。

所以本题先排除B、D。

选项A中“姓名”和“年龄”顺序颠倒,输入该命令,系统会提示操作符与操作命令不匹配的

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

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2