SQL语言,sql
SQL(Structured Query Language)结构化查询语言,是一种高度非过程化的语言,其灵活易用完成核心操作仅需要9个动词,对有一点编程基础的人来说很容易上手。在我们做过的机房收费系统中主要用它来创建数据库并完成系统和数据库的交互。
基本功能:
数据定义(Data Definition):建立数据库和表的结构
数据管理(Data Management):实现表中数据的输入、修改、删除和更新。
数据查询(Data Query):查询数据库中的内容(核心)
SQL语句:
1、表
(1)创建
create table 表名列名数据类型 [约束条件]
[,列名数据类型[约束条件]]
……
[,列名数据类型[约束条件]];
(2)修改
alter table 表名 [add新列名数据类型 [约束]]
[drop 列名约束]
[modify 列名数据类型];
(3)撤消
drop table 表名 [cascade | restrict]
2、视图
(1)创建
create View 视图名 [列名 [,列名] …]
as 子查询
[with check option];
(2)删除
drop View 视图名
3.索引
(1)创建
create [unique] [cluster] index 索引名
on 表名列名 [次序] [,列名]]…;
(2)删除
drop index 索引名;
4.查询
查询语句是SQL中的核心内容,也是最常用到的,句型为Select -from-where句,它的使用非常灵活,在where子句中可以嵌套多层查询,使得select句型能表达的语义比演变前的关系代数表达式复杂得多(Select语句能表达所有的关系代数表达式)。格式为(其中F为关系表达式):
select a(1),a(2) …a(n)
from A1,…B1
where F
Select语句使用时有三种写法:连接查询、嵌套查询、带存在量词的嵌套查询。这些比较常见,现在主要说一下Select语句中where子句里用到的一些东西
(1)聚合函数:SQL中提供了一些聚合函数,主要针对的是列
count(*):计算元祖的个数
count(列名):对一列中的值计算个数
sum(列名)——求和函数,此列的值必须是数值型
avg(列名)——求某列平均值,此列的值必须是数值型
Max(列名)——求某列中的最大值
min(列名)——求某列中的最小值
(2)Group by:对查询结果进行分组
Having:常与Group子句连用,表示同时提取满足Having子句中条件表达式的那些组
Asc升序排列,Descr降序排列
order by对查询结果进行排序
格式:Group by列名 [ASC|Descr] [Having 组条件表达式]
(3)算数比较
算数比较运算符<,<=,>,>=,=,!=和between …and,用于限定一个值的范围
字符串的匹配操作like,在表达式中可使用两个通配符:百分号(%,表示与零个或多个字符组成的字符串匹配)和下划线(_,表示与单个字符匹配),用转义字符(反斜线\)可是这两个通配符转换成普通字符。
(4)其它关键字
null:SQL中允许列值为空,空值用保留字null表示。在where语句中用“is null”来测试列值是否为空,不能用“=”
in:元组 [not]in集合,确定集合以及集合成员的资格比较
exists:exists代表存在量词,带有exist谓词的子查询不返回任何数据,只产生逻辑true和false
any和All:any表示子查询中满足比较运算符的某个值,all表示满足所有值
SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
Structured Query Language包含4个部分:
数据查询语言DQL-Data Query Language SELECT
数据操纵语言DQL-Data Manipulation Language INSERT, UPDATE, DELETE
数据定义语言DQL-Data Definition Language CREATE, ALTER, DROP
数据控制语言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK
SQL的历史
在70年代初,E.E.Codd首先提出了关系模型。70年代中期,IBM公司在研制 SYSTEM R关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。
1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS数据库系统中也实现了SQL。
1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。
1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89, 该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:
● 国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement”
● 美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127
目前,所有主要的关系数据库管理系统支持某些形式的SQL语言, 大部分数据库打算遵守ANSI SQL89标准。
SQL的优点
SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。
(1) 非过程化语言
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么......余下全文>>
SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
Structured Query Language包含4个部分:
数据查询语言DQL-Data Query Language SELECT
数据操纵语言DQL-Data Manipulation Language INSERT, UPDATE, DELETE
数据定义语言DQL-Data Definition Language CREATE, ALTER, DROP
数据控制语言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK
SQL的历史
在70年代初,E.E.Codd首先提出了关系模型。70年代中期,IBM公司在研制 SYSTEM R关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。
1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS数据库系统中也实现了SQL。
1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。
1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89, 该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:
● 国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement”
● 美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127
目前,所有主要的关系数据库管理系统支持某些形式的SQL语言, 大部分数据库打算遵守ANSI SQL89标准。
SQL的优点
SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。
(1) 非过程化语言
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么......余下全文>>