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表示满足所有值