资源描述:
《数据库应用技术课件 (2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库应用技术第三章深入SQL3.1SQL概述SQL的历史1970,StructuredEnglishQueryLanguage("SEQUEL"),IBM1979,OracleSQL的标准化过程从SQL-86(ANSI)到SQL-2003(ANSI,ISO)SQL的设计初衷是给高级用户提供一种通用的、易于学习和理解的数据库操作方式。演变为给程序员使用的数据库标准接口。SQL的特点面向集合的操作方式,是关系代数的实现;高度非过程化。只需要提出“What”,不需要指出“How”;上下文无关,运行结
2、果取决于数据;语言风格统一,类自然语言,简单易学;既是自含式语言,又是嵌入式语言SQL的分类查询(DataQueryLanguage,DQL)SELECT操纵(DataManipulateLanguage,DML)INSERT,DELETE,UPDATE定义(DataDefinitionLanguage,DDL)CREATE,DROP,ALTER。控制(DataControlLanguage,DCL)GRANT,REVOKE,COMMIT,ROLLBACK。SQL的基本语法SQL语句不区分大小写,可
3、以写在多行,各个单词之间使用分隔符(空格,回车,制表符)分隔。SQL语句中的关键字属于保留字,不能用于其他地方。数字常量的写法和通常程序语言一致,字符串使用单引号包含,字符串中的单引号使用两个连续的单引号转义表示,不区分字符和字符串。SQL书写规范为便于书写和阅读,通常采用如下的书写规范:1、关键字大写,其他标识符小写字段名大写???2、每个子句单起一行3、使用制表符缩进标准与可移植性在SQL92标准中定义了四种级别:Entry,Transitional,Intermediate,andFull国际
4、标准与各个厂商之间的不兼容性。事实上的不可移植性字符串连接
5、
6、与+;专有的查询关键字数据类型与函数特殊语义;可移植性神话3.2简单SELECT语句3.2.1基本语句语法SELECT[DISTINCT
7、ALL][*
8、查询项列表]FROM表名;说明查询项:字段
9、表达式[[AS]别名]无条件:查询出表的所有记录。次序不确定、不稳定,依赖于数据库的实现。*:按特定顺序列举所有字段。3.2.1基本语句当明确要查询哪些字段的时候,将字段名称列在SELECT的后面,这样语句含义清楚,性能也有所提高。[AS]别名:
10、别名起到简化作用,通常还作为表达式的标题。特别是很多使用SQL的开发工具直接使用SELECT语句中每个查询表达式的名称作为标识符,这种情况下更需要给出别名。表达式与别名之间的AS是一个冗余的关键字,可以省略,直接以空白符分隔。DISTINCT
11、ALL:在整个查询内容前加上DISTINCT,返回结果中不重复的内容。不重复针对所有要查询的表达式集合而言。ALL是缺省值,列出包括重复的所有记录。另外,DISTINCT是一个比较费时间的操作,使用时需慎重。3.2.1基本语句查询的内容可以是字段,也可以是由字
12、段、常数通过运算符、函数构成的复杂表达式。这种计算要对表上的所有行都施加运算。SELECTsid,UPPER(sname),salary+100FROMsales;3.2.1基本语句在某些情况下,也可能使用SQL计算纯粹常量表达式的值,如检索服务器当前时间。SELECTSYSDATE,1+2FROMsales;依赖于表中记录的数目,将得到若干行(也可能是0行)同样的结果。而这一般不是我们想要得到的结果。3.2.1基本语句如果明确地只想得到一行结果在MS-SQL和MySQL中,可以使用不带FROM子句
13、的SELECT语句;SELECT1+2在Oracle中,不允许没有FROM子句。系统提供了一个名叫dual的表,保证其中只有一条记录,不依赖于表的计算可以使用这个表。SELECTSYSDATE,1+2FROMdual;3.2.2筛选可以使用WHERE子句来筛选出满足某些条件的记录。WHERE逻辑表达式基本比较运算符=,>,<,>=,<=,<>它们都具有通常的含义。比较运算符的两端都可以是字段或者表达式。其他相当于比较运算符的结构BETWEENANDINLIKENULL的运算逻辑运算符NOTANDOR
14、其他where条件1、BETWEEN…AND…如果要限定某个表达式的值在某个区间内,可以使用这个关键字。例:查询出薪水在1000和2000之间的记录的sid和salary值。SELECTsid,salaryFROMsalesWHEREsalaryBETWEEN1000AND2000;这是一个闭区间,等于两端值的记录也会被查出来。另外,一般要求区间前面的值小于后面的值,否则将查不出结果。2、ININ运算符用来检验某个表达式的值是否包含在一个指定的值集合内。例:查询出名字