关系数据库标准语言SQL(带例子)_第1页
关系数据库标准语言SQL(带例子)_第2页
关系数据库标准语言SQL(带例子)_第3页
关系数据库标准语言SQL(带例子)_第4页
关系数据库标准语言SQL(带例子)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关系数据库标准语言SQL一、查询功能SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECTFROMWHERE查询块组成,多个查询块可嵌套执行。SQL SELECT命令的语法格式:SELECT ALL|DISTINCT TOP <数值表达式>PERCENT <字段名表> FROM FORCE 数据库名 <表名> AS <别名> INNER|LEFT OUTER|RIGHT OUTER|FULL OUTER JOIN 数据库名 <表名> AS <别名> ON <条件> INTO &l

2、t;目标文件>|TO FILE <文本文件名> ADDITIVE|TO PRINT PROMPT|TO SCREEN PREFERENCE <名称> NOCONSOLE PLAIN OWAITWHERE <条件> AND <条件> AND|OR <条件> AND|OR <条件>GROUP BY <字段名>,<字段名> HAVING <分组条件> UNION ALL <查询命令>ORDER BY <表达式> ASC|DESC,< 表达式> ASC|

3、DESC短语的含义:SELECT说明要查询的数据;FROM说明要查询的数据来自哪个或哪些表;WHERE说明查询条件;GROUP BY短语用于对查询结果进行分组,可以利用它进行分组汇总;HAVING必须跟随GROUP BY使用,用来限定分组必须满足的条件;ORDER BY用来对查询结果进行排序。以上短语是学习和理解SQL SELECT命令必须掌握的。1、简单查询SELECT <字段名表>|* FROM <表名> WHERE <条件>例如:SELECT * from 课程SELECT 学号,姓名,性别,出生日期 from 学生 where 性别="女&

4、quot;2、简单联接查询SELECT <字段名表>|* FROM <表名> WHERE <联接条件> AND <条件>例如:SELECT 学生.学号,姓名,课程号,成绩 from 学生,选修 where 学生.学号=选修.学号and 性别="女"上式也等价于(下式运用了别名的操作):SELECT s.学号,姓名,课程号,成绩 from 学生 s,选修 x where s.学号=x.学号 and 性别="女"3、嵌套查询SELECT <字段名表>|* FROM <表名> WHERE

5、<条件> NOT IN (SELECT <字段名表>|* FROM <表名> WHERE <条件>)外层查询依赖于内层查询的结果,而内层查询与外层查询无关。例如:1、SELECT学号,姓名 from 学生 where 学号 in (select 学号 from 选修)2、select distinct 学号 from 选修 where 成绩>(select avg(成绩) from 选修)4、几个特殊运算符<数值型字段名> BETWEENAND表示“介于和之间”;LIKE是字符串匹配运算符,在其后可使用“*公司”、“?公司”等字

6、符串。例如:1、SELECT 学号,姓名 from 学生 where 姓名 like "*玉*"2、SELECT 学号,课程号,成绩 from 选修 where 成绩 between 80 and 895、排序使用SQL SELECT可以将查询结果排序,具体格式为:ORDER BY <表达式> ASC|DESC,< 表达式> ASC|DESC例如:SELECT 学号,课程号,成绩 from 选修 where 成绩 between 80 and 89 order by 课程号,成绩desc6、简单的计算查询SQL语言是完备的,也就是说,只要数据是按关系

7、方式存入数据库的,就能构造合适的SQL命令把它检索出来。事实上,SQL不仅具有一般的检索能力,而且还有计算方式的检索。用于计算检索的函数有:(1)COUNT计数(2)SUM求和(3)AVG计算平均值(4)MAX求最大值(5)MIN求最小值这些函数可以用在SELECT短语中对查询结果进行计算。例如:1、SELECT avg(成绩) from 选修2、SELECT avg(成绩) as 平均成绩 from 选修7、分组与计算查询利用GROUP BY子句进行分组计算查询使用得更加广泛。格式如下:GROUP BY <分组表达式1>,<分组表达式2> HAVING <分组条

8、件>注:HAVING子句总是跟在GROUP BY子句之后,不可单独使用。HAVING子句和WHERE子句不矛盾,在查询中是选用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组。SELECT 课程号,avg(成绩) as 平均成绩from 选修 group by 课程号8、利用空值查询SELECT <字段名表>|* FROM <表名> WHERE <字段名> IS NOT NULL注:查询空值时要使用IS NULL,而=NULL是无效的,因为空值不是一个确定的值,所以不能用“=”这样的运算符进行比较。Select * from 课程

9、 where 教师 is null9、别名与自联接查询在联接操作中,经常需要使用关系名作前缀,有时这样显得很麻烦。因此,SQL允许在FROM短语中为关系名定义别名,格式为:<关系名> <别名>SQL不仅可以对多个关系实行联接操作,也可以将同一关系与其自身进行联接,这种联接称为自联接。在可以进行自联接操作的关系上,实际存在着一种特殊的递归联系,即关系中的一些元组,根据出自同一值域的两个不同的属性,可以与另外一些元组有一种对应关系(一对多的联系)。例如:SELECT t.身份证号, t.姓名, s.姓名 AS 家长姓名FROM tStud s INNER JOIN tStu

10、dt ON s.身份证号 =t.家长身份证号10、内外层互相关嵌套查询在嵌套查询中,有时内层查询的条件需要外层查询提供值,而外层查询的条件又需要内层查询的结果,这种查询为内外层互相关嵌套查询。格式如下:SELECT <别名1>.<字段名1>,<别名1>.<字段名2> FROM <表名> <别名1> WHERE <条件> NOT IN (SELECT <表达式> FROM <表名> <别名2> WHERE <别名1><字段名>=<别名2>&l

11、t;字段名>)注:在此种查询中,是给一个表取了两个不同的别名;也就是说,无论外层还是内层都是在一个关系中进行的查询。通俗的看,就是将一个表看成两份。11、使用量词和谓词的查询前面我们使用过IN的NOT IN运算符,除此之外还有两类和子查询有关的运算符,形式如下:<表达式><比较运算符>ANY|ALL|SOME (子查询)NOT EXISTS (子查询)ANY、ALL和SOME是量词,其中ANY和SOME是同义词,在进行比较运算时只要子查询中有一行能使结果为真,则结果就为真;而ALL要求子查询中的所有行都使结果为真时,结果才为真。EXISTS是谓词,EXISTS和N

12、OT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。SELECT <字段名表>|* FROM <表名> WHERE <表达式><比较运算符>ANY|ALL|SOME (子查询)SELECT <字段名表>|* FROM <表名> WHERE NOT EXISTS (子查询)12、超联接查询SQL有专门的联接运算语法格式,它支持超联接查询,我们从SQL SELECT语句的完事语法格式中抽出与联接运算有关的语法格式如下:SELECT FROM <表名1> INNER|LEFT|RIGHT|F

13、ULL JOIN <表名2> ON <联接条件> WHERE其中:INNER JOIN为普通的联接;LEFT JOIN为左联接,即除满足联接条件的记录出现在查询结果之中外,第一个表中不满足联接条件的记录也出现在查询结果中;RIGHT JOIN为右联接,即除满足联接条件的记录出现在查询结果之中外,第二个表中不满足联接条件的记录也出现在查询结果中;FULL JOIN称为全联接,即两个表中的记录不管是否满足联接条件将都在目标表或查询结果中出现,不满足联接条件的记录对应部分为NULL。注意:这里的SQL SELECT语句的联接格式只能实现两个表的联接,如果要实现多个表的联接,还

14、需要使用标准格式。Select 学生.学号,姓名,课程号,成绩 from 学生 inner join 选修 on 学生.学号=选修.学号13、集合的并运算SQL支持集合的并(UNION)运算,即可将两个SELECT语句的查询结果通过并运算合并成一个查询结果。为了进行并运算,要求两个查询结果具有相同的字段个数,并且对应字段的值要出自同一个值域,即具有相同的数据类型和取值范围。例如:SELECT 学号,姓名,性别,家庭住址 from 学生 where 家庭住址 like "湖*" union SELECT 学号,姓名,性别,家庭住址 from 学生 where 家庭住址 lik

15、e "广*”二、操作功能SQL的操作功能是指对数据库中数据的操作功能,主要包括数据的插入、更新和删除三个内容。1、插入INSERT INTO <表> (<字段名1>,<字段名2>,) VALUES (<记录值1>,<记录值2>,)例如:INSERT INTO 课程 VALUES ("008","公文写作","01","王鸽",2)INSERT INTO 课程(课程号,课程名称,教师,学分) VALUES ("010",&quo

16、t;外国文学","王竹",2)2、更新SQL的数据更新命令格式如下:UPDATE <表名> SET <字段名1>=<表达式1> ,<字段名2>=<表达式2>, WHERE <条件>例如:update 学生 set 录取分数=录取分数+53、删除SQL从表中删除数据的命令格式如下:DELETE FROM <表名> WHERE <条件>这里的删除为逻辑删除记录,如果不使用WHERE子句,将删除该表中的全部记录。例如:delete from 课程 where 课程号=&quo

17、t;010"三、定义功能标准SQL的数据定义功能非常广泛,一般包括数据库的定义、表的定义、视图的定义、存储过程的定义、规则的定义和索引的定义等若干部分。1、表的定义前面介绍了通过表设计器建立表的方法,也可以通过SQL的CREATE TABLE命令建立表,相应的命令格式为:CREATE TABLE <表> NAME <长表名> FREE (<字段名1> <字段类型> (<宽度>,<小数位>) NULL NOT NULLCHECK <定义域完整性的表达式> ERROR <出错提示信息> DEF

18、AULT <默认值>PRIMARY KEY|UNIQUEREFERENCES <建立联系的表> TAG <索引名1>NOCPTRANS,<字段名2>,PRIMARY KEY <索引表达式> TAG <索引名2>|, UNIQUE <唯一索引表达式> TAG <索引名3>,FOREIGN KEY <普通索引表达式> TAG <索引名4> NODUPREFERENCES <建立联系的表> TAG <索引名5>,CHECK <定义域完整性的表达式>

19、; ERROR <出错提示信息>)|FROM ARRAY <数组>从以上句法格式基本可看出,用CREATE TABLE命令建立表可以完成表设计器完成的所有功能。除建立表的基本功能外,它还包括满足实体完整性的主关键字(主索引)PRIMARY KEY、定义域完整性的CHECK约束及出错提示信息ERROR、定义默认值的DEFAULT等。另外,还可以使用FOREIGN KEY短语为建立普通索引;使用REFERENCES短语建立表之间的联系。CREATE TABLE命令中可以使用的数据类型及说明数据类型说明bit是/否int长整型real单精度浮点型float双精度浮点型mone

20、y货币型datetime日期时间varchar文本型textMemo备注ntexthyperlink超链接2、表的删除删除表的SQL命令是:DROP TABLE <表>DROP TABLE直接从磁盘上删除<表>所对应的.dbf文件。如<表>是数据库中的表并且相应的数据库是当前数据库,则从数据库中删除了表;否则虽然从磁盘上删除了.dbf文件,但是记录在数据库.dbc文件中的信息却没有删除,此后会出现错误提示。所以要删除数据库中的表时,最好使数据库是当前打开的数据库,在数据库中进行操作。3、表结构的修改修改表结构的命令是ALTER TABLE,该命令有三种格式。

21、格式1:ALTER TABLE <表名> ADD|ALTER COLUMN <字段名> <字段类型>(<宽度> <小数位>) NULL|NOT NULL CHECK <定义域完整性表达式>ERROR <错误提示信息> DEFAULT <默认值> PRIMARY|UNIQUE REFERENCES <联系表名> TAG <联系表索引文件名>该格式可以修改字段的类型、宽度、有效性规则、错误信息、默认值,定义主关键字和联系等;但是不能修改字段名,不能删除字段,也不能删除已经定义的规则等。格式2:ALTER TABLE <表名> ALTER COLUMN <字段名> NULL|NOT NU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论