数据库SQL语言Word文件下载.docx
《数据库SQL语言Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库SQL语言Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
b)关系模式:
在SQL中称为基本表(BaseTable)
c)存储模式:
在SQL中称为存储文件(StoredFile)
5、SQL数据库的体系结构要点
a)一个SQL模式是表和约束的集合
b)一个表由行集构成,一行是一个列的序列,每列对应一个数据项;
c)表有三种类型,基本表、视图和导出表;
i.基本表是实际存储在数据库中的表;
ii.视图是由若干基本表或其他视图构成的表的定义;
iii.导出表示执行了查询时产生的表。
d)一个基本表可以跨一个或多个存储文件,一个存储文件可以存放一个或多个基本表;
e)用户可以用SQL语句对基本表和视图进行查询等操作;
f)SQL用户可以是应用程序,也可以是终端用户。
6、核心SQL的组成
a)数据定义语言:
即SQLDDL,用于定义SQL模式、基本表、视图、索引等结构;
b)数据操纵语言:
即SQLDML,用于查询、插入、删除和修改等操作;
c)嵌入式SQL语言的使用规定:
嵌入在主语言中使用;
d)数据控制语言:
即SQLDCL,用于基本表和视图的授权、完整性规则的描述、事务控制等。
7、SQL的特点
a)SQL具有十分灵活和强大的查询功能;
b)SQL不是一个应用开发语言,它只提供对数据库的操作功能,不能完成屏幕控制、菜单管理、报表生成等功能,可以作为交互式语言用,也可以嵌入在主语言中使用,是开发语言的一部分;
c)SQL是国际标准语言,有利于各种数据库之间交换数据、程序移植、实现数据独立性和标准化;
d)SQL的词汇不多,完成核心功能只用了9个英语单词,语法结构接近英语。
8、SQL的分类
a)交互式SQL:
在终端交互方式下使用的语言,称为交互式SQL;
b)嵌入式SQL:
嵌入在主语言的程序中使用,称为嵌入式SQL。
数据库SQL语言之SQL的数据定义语言
(二)
一次跟我一哥们去肯德基点了两杯可乐坐着聊天。
旁边一妹纸吃了汉堡留了一袋薯条和一个鸡腿人就走了。
我俩就觉得浪费啊!
这么好的东西!
激烈思想斗争后,于是决定拿过来吃。
他啃着鸡腿,我正在往土豆条上挤番茄酱。
妹纸拿着杯可乐就上来了。
。
SQL的数据定义语言(DataDefinitionLanguage,DDL),用于定义SQL模式、基本表、视图、索引等结构。
1、模式(Schema)
a)定义:
在SQL中,一个SQL模式定义为基本表的集合,一个SQL模式由模式名和模式拥有者的用户名或账号确定,并包含模式中每一个元素(基本表、视图、索引等)的定义,。
b)创建语法:
创建SQL模式,就是定义了一个存储空间
CreateSchema<
模式名>
Authorization<
用户名>
c)撤销语法:
当SQL模式及其下属的基本表、视图等元素都不需要时,可以撤销
DropSchema<
[Cascade|Restrict]
Cascade:
执行Drop时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤销;
Restrict:
执行Drop时,只有当SQL模式中没有任何下属元素时才能撤销SQL模式,否则拒绝执行该语句。
d)注意:
由于SQL模式这个名词学术味太重,因此DBMS厂家都用“数据库”这个名词来代替“SQL模式”这个名词,创建SQL模式就是创建数据库。
使用CreateDatabase<
数据库名>
和DropDatabase<
2、基本表(Table)
如果在系统中创建了一个数据库,那么就可以再数据库中定义基本表
创建一张基本表,创好以后只是一个空框架,可以用Insert命令加数据
Createtable<
基本表名>
(<
列名类型notnull>
,
……
<
primarykey(列名)>
foreignkey(列名)references表名(列名)>
check(列名)between20and35>
……);
c)修改语法:
基本表建立一段时期后,可以根据实际情况对基本结构进行修改
i.增加新的列
Altertable<
add<
列名>
类型>
ii.删除原有的列
drop<
[Cascade|Restrict];
iii.修改数据类型、宽度等
modify<
d)撤销语法:
当基本表不需要时,可以撤销,撤销后,其所有数据也丢失了
Droptable<
3、索引(Index)
为了加快查询速度而建立的,建立后由系统自动维护。
为了更快地查询,可以创建索引
Create[unique]index<
索引名>
on<
(<
列名序列[ASC|DESC]>
);
当索引不需要时,可以撤销索引
Dropindex<
4、视图(View)
SQL中,外模式的基本单位是视图,视图是从若干基本表和其他视图构造出来的表,创建一个视图,只是把视图的定义放到数据字典中,而不存储视图对应的数据,在用户需要时,才去求对应的数据,因此称为“虚表”
需要视图时,可以创建
Createview<
视图名>
列表序列>
)as<
select查询语句>
如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,这样的视图称为“行列子集视图”,是可以执行修改操作的,必须在视图定义的时候加上withcheckoption短语。
定义在多个基本表上的视图,或者使用聚合操作的视图,或者不包含主键的视图是不允许更新的。
Insertinto<
values(<
值>
…);
不需要时,可以撤销
Dropview<
5、域类型:
SQL提供的主要数据类型
a)分类:
i.数值型:
长整数int,短整数smallint,浮点数real,双精度浮点数doubleprecision,浮点数float(n),定点数numeric(p,d)
ii.字符串型:
定长字符串char(n),变长字符串varchar(n)
iii.位串型:
二进制位串bit(n),变长二进制位串bitvarying(n)
iv.时间型:
日期date,时间time
允许用户定义新的域,可以创建
CreateDomain<
域名>
基本数据类型>
该新的域不需要时,可以撤销
DropDomain<
数据库SQL语言之SQL的数据操作语言(三)
MM和男友吵架了,她气的摔门跑了出去。
男友连忙跟出去,MM刚跑出门,就遇到一辆大货车!
MM一时紧张,闭着眼睛!
男友毫不犹豫的上前抱住了她,并把她推开!
开车的司机探出头来:
“还好我是倒车,要不真让你上头条了。
数据操纵语言(DataManipulationLanguage,DML),分数据查询和数据更新两类,数据更新又分插入、删除和修改三种操作。
1、插入(Insert)
在SQL基本表中插入数据的语句是insert语句
b)插入语法1—单行的插入
[(<
列名序列>
)]Values(<
行值>
c)插入语法2—多行的插入
),(<
)…;
d)插入语法3—查询结果的插入
[(<
)]<
e)插入语法4—表的插入
基本表名1>
)]table<
基本表名2>
2、删除(Delete)
当元组不需要的时候,可以从基本表中删除;
delete语句只能从一个基本表中删除元组,若要删除多个表中的数据,请写多条数据。
b)删除语法:
Deletefrom<
[where<
条件表达式>
]
3、修改(Update)
当需要修改基本表中元组的某些列值时,可以使用update
b)修改语法
Update<
set<
=<
值表达式>
>
|row=(<
元组>
)[where<
];
4、查询(Select)
数据查询是关系运算理论在SQL中的主要体现,需要查询基本表中的数据时候,用select语句
b)
c)基本语法:
Select<
目标表的列名或列表达式>
From<
基本表名或视图名>
Where<
行条件表达式>
d)查询语句的三种写法
i.连接查询select*from*where条件表达式1and条件表达式2
ii.嵌套查询select*from*whereselect*
iii.带存在量词的嵌套查询select*from*where量词select*
e)完整语法:
Select<
目标表的列名或列表达式序列>
基本表名和视图序列>
[where<
]//行条件子句
[groupby<
]//分组子句
[having<
组条件表达式>
]//组条件子句
[orderby<
列名[asc|desc]>
]//排序子句
具体操作步骤解释:
读取from子句中基本表、视图的数据,执行笛卡尔积操作;
选取满足where子句中给出的条件表达式的元组;
按group子句中指定列的值分组,同时提取满足having子句中组条件表达式的那些组;
按select子句中给出的列名或列表达式求值输出;
Order子句对输出的目标进行排序,asc升序,desc降序;
f)Where子句中的条件表达式
5、数据查询中的限定和规定
a)可以使用聚合函数:
i.求某一列值的平均值avg(<
ii.求某一列值的最小值min(<
iii.求某一列值的最大值max(<
iv.求某一列值的总和sum(<
v.对一列中的值计算个数count(<
vi.计算元组的个数count(*);
b)Select子句的规定:
select[all|distinct]<
列名或列表达式序列>
|*
i.Distinct选项保证重复的行将从结果中去除
ii.all是默认的,保证重复的行不从结果中去除;
iii.*号是对于from子句中命名表的所有列的简写;
iv.列表达式是对于单列求聚合值的表达式;
v.允许表达式中出现+、-、*、/以及列名、常数的算术表达式。
c)列和基本表的改名操作:
旧名as新名
i.有时,一个基本表在select语句中多次出现,就是该表被多次调用,为区别不同的引用,应该标上不同的名字。
d)集合的并、交、差操作:
当两个子查询结构完全一致,可以使用并、交、差
i.(select查询语句1)union(select查询语句2)
ii.(select查询语句1)intersect(select查询语句2)
iii.(select查询语句1)except(select查询语句2)
6、基本表的连接操作语法
a)自连接:
一个表可以连接自身,自连接要求使用表的别名
select*from<
基本表>
as<
innerjoin/leftouterjoin/rightouterjoin/full
outerjoin<
.<
b)内连接:
消除交叉连接中不满足内连接匹配条件的记录形成的
innerjoin<
c)左外连接:
包含内连接的所有记录,以及左表中所有未匹配记录
leftouterjoin<
d)右外连接:
包含内连接的所有记录,以及右表中所有未匹配记录
rightouterjoin<
e)完全外连接:
包含内连接的所有记录,以及左、右表中所有未匹配记录
fullouterjoin<
f)笛卡尔积连接:
包含m*n条记录,由两个表中所有可能的记录对组成
crossjoin<
g)合并连接:
是全外连接减去内连接
unionjoin<
7、条件表达式中的比较操作符
a)算术比较操作符(算术比较判断):
比较两个表达式的值,
i.算术比较操作符的符号有:
、<
=、>
、>
=、=、<
、!
=、=
ii.语法:
表达式1>
&
表达式2>
between..and..、notbetween…and…
b)算术范围操作符(之间判断):
搜索(不)在给定范围内的数据
i.算术范围保留字是between…and…
[not]between<
and<
表达式3>
c)字符串的匹配操作(相同判断):
查找(不)包含给定模式的值
i.字符串匹配操作符是like,有两个通配符;
字符串>
[not]like<
匹配模式>
百分号(%):
与零个或多个字符组成的字符串匹配
下划线(_):
与单个字符匹配
d)空值的比较操作(空值判断):
判断某值是否为空值
i.空值的保留字是null;
表达式>
is[not]null。
e)集合成员资格的比较(之内判断):
判断某元组是否在某集合内
i.集合成员资格的保留字是in
[not]in(<
集合>
)
f)集合成员的算术比较(限定比较判断):
元组与集合中每一个元组满足&
比较
i.集合成员算术的保留字是some,all,any
all|some|any(<
)//&
是算术比较运算
some操作表示左边那个元组与右边集合中每一个元组满足&
运算
any|&
some操作表示左边那个元组与右边集合中至少一个元组满足&
g)集合空否的测试(存在判断):
判断集合是否至少存在一个元组
i.集合空否判定的保留字是exists
[not]exists(<
h)集合中重复元组存在否的测试(唯一判断):
判断集合是否没有重复元组
i.集合中重复元组的保留字是unique
[not]unique(<
数据库SQL语言之SQL的数据控制语言(四)
一个小伙子大老远地来到鉴宝节目现场,拿出瓷器,几个专家认真辨认,告诉小伙子是宋瓷。
小伙子的高兴劲儿可想而知,急忙掏出手机说要给爷爷打电话。
摄像师见状,赶紧悄悄跟过去抓拍。
只听小伙子高兴地说:
“爷爷,专家说了,你烧的瓷器是宋朝的!
”
数据控制语言(DataControlLanguage,DCL),包括基本表和视图的授权、完整性规则的描述、事务控制等内容。
(具体内容可以参考数据管理之数据库的并发控制、完整性规则、安全性)
1、基本表和视图的授权
a)授权Grant<
权限表>
数据库元素>
to<
用户名|角色名>
withgrantoption
b)撤权Revoke<
from<
[restrict|cascade]
2、完整性规则的描述
a)域约束
b)基本表约束
c)断言
d)触发器
3、事务控制
a)事务的封锁
b)事务的并发调度
数据库SQL语言之嵌入式SQL(五)
有一死党月光族,经常打电话来叫请吃饭。
于是有一次我接了电话就说:
对不起您的手机已欠费。
停了几秒不知道后面怎么说,她不说话也没挂电话。
然后我又说orryyourcellularphonehavenomoney
我反复说了几遍后,她突然冒了一句,你玩够没有。
玩够了出来请我吃饭
数据库中的游标主要是用于嵌入式SQL里面,解决SQL的集合处理方式与主语言单记录处理方式之间的协调问题。
1、嵌入式SQL定义:
SQL不能提供屏幕控制、菜单管理、图像管理、报表生成等功能,这些只能通过C、Java等主语言实现,在主语言中使用SQL结构(嵌入在主语言的程序中使用的SQL)称为嵌入式SQL。
2、嵌入式SQL的两种实现方式
a)扩充主语言的编译程序,使之能处理SQL语句(很少用)
b)采用预处理方式,是先用预处理程序对源程序进行扫描,识别出SQL语句,并处理成主语言的函数形式,然后再用主语言的编译程序编译成目标程序(目前多数系统采用的方式)
共享变量:
数据库和主语言程序间的信息传递是通过共享变量实现的,这些共享变量用declare语句说明,共享变量是SQL和主语言的接口。
SQL_STATE是一个特殊共享变量,起着解释语句执行状况的作用,它由5个字符组成的字符数组,全零表示成功,非全零表示各种错误。
3、嵌入式SQL的使用规定
a)在程序中要区分SQL语句和主语言语句
i.所有主语言中的SQL语句必须加上标识“ExecSQL开始,End_EXEC结束”
ii.嵌入的SQL语句的语法:
EXECSQL<
SQL语句>
END_EXEC;
b)允许嵌入的SQL语句引用主语言的程序变量(即共享变量)
i.引用时,共享变量前必须加冒号:
,作为前缀标识,以示与数据库中变量的区别;
ii.共享变量要用SQL的Declare语句说明,语法:
EXECSQLBEGINDECLARESECTION;
共享变量定义>
;
EXECSQLENDDECLARESECTION;
c)SQL的集合处理方式与主语言单记录处理方式之间的协调
i.SQL语句处理的是记录集合,而主语言语句一次只能处理一个记录,所以需要用游标机制(cursor)来协调SQL和主语言之间的处理方式。
在推进时沿查询结果中元组顺序从头到尾一行行推进,并且不能返回,这就是游标技术
ii.游标定义语句(declare)
EXECSQLDECLARE<
游标名>
CURSORFOR<
Select语句>
END_EXEC
iii.游标打开语句(open)
EXECSQL
OPEN<
END_EXEC
iv.游标推进语句(fetch)
FETCHFROM<
INTO<
变量表>
v.游标关闭语句(close)
EXECSQL
CLOSE<
d)SQL的集合处理方式与主语言单记录处理方式之间的协调的增强版(卷游标的使用)
i.为了解决游标不能返回的问题,SQL2中提供了卷游标,在推进时沿查询结果中元组可以进退自如。
ii.卷游标定义语句(declare)
DECLARE<
SCROLLCURSORFOR<
iii.卷游标打开语句(open)
iv.卷游标推进语句(fetch)
FETCH
Next从当前位置推进一行
或Prior从当前位置返回一行
或First移向第一行
或Last移向最后一行
或Relative<
整数>
从当前位置推进n行,正数代表推进,负数代表返回或Absolute<
移向查询结果的第n行,正数代表正数,负数代表倒数
FROM<
v.卷游标关闭语句(close)
EXECSQLCLOSE<
4、嵌入式SQLDML语句的使用技术
SQLDDL语句只要