表:基本表:实现存储在数据库中的表
视图:由若干基本表或其他视图构成的表的定义
导出表:执行了查询时产生的表
SQL:SQL DDL:用于定义SQL模式、基本表、视图及索引等结构
SQL DML:数据查询、数据更新(插入、删除、修改)
嵌入式SQL语言的使用规定
SQL DCL:包括对其基本表和视图的授权、完整性规则的描述及事务控制等内容
模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
模式及其所属的基本表、视图等元素都不需要时,用drop语句撤销
DROP SCHEMA <模式名>[CASCADE|RESTRICT]
SQL数据类型(主要)=(域类型)
1、 数值型
Integer,Samllint,Real,Double,Precision, Float(n),Numeric(p,d)
2、 字符串型
Char(n),varchar(n)具有最大长度为n的变长字符串
3、 位串型
Bit(n),bit varying(n)具有最大长度为N的变长二进制位串
4、时间型 date,time
基本表的创建、修改与撤销
--------基本表的创建
Create table <基本表名>
(<列名类型>,
……
<完整性约束>,
……)
完整性约束:主键子句:Primary Key
外键子句:Foreign Key
检查子句:Check
--------基本表结构的修改
(1) 增加新的列:ALTER TABLE <基本表名> ADD <列名> <类型>
(2) 删除原有的列:ALTER TABLE<基本表> DROP <列名> [CASCADE|RESTRICT]
(3) 修改原有列的类型及宽度:ALTER TABLE <基本表> MODIFY <列名> <类型>
-----------基本表的撤销
DROP TABEL <基本表> [CASCADE|RESTRICT]
索引的创建和撤销
------------索引的创建:
CRATE [UNIQUE] INDEX <索引名> ON <基本表名> (<列名序列>)
对于聚集索引用CLUSTERED
升序排列用ASC ,降序排列用DESC
---------------索引的撤销:DROP INDEX <索引名>
数据查询
Where子句的条件表达式F中可使用下列运算符
算术比较运算符:<,<=,>,>=,=,<>或!=
逻辑运算符:and ,or,not
集合成员资格运算符:INT ,NOT IN
谓词:exists,all,some,unique
聚合函数:avg,min,max,sum,count
集合运算符:union(并),intersect(交),except(差)
SELECT 语句使用时3中写法:连接查询,嵌套查询,带存在量词的嵌套查询
SQL聚合函数:COUNT(*),COUNT(<列名>),SUM(<列名>),AVG(<列名>),
MAX(<列名>),MIN(<列名>)
SELECT 语句完整的句法
SELECT <目标表的列名或列表达式序列>
FROM <目标表名或视图序列>
[WHREE <行条件表达式> ]
[GROUP BY <列名序列>]
[HAVING <组条件表达式>]
[ORDER BY <列名 [ASC|DESC] >,…]
在SQL中不允许对聚合函数进行复合运算
嵌套查询:导出表的使用,with子句和临时视图
数据更新
数据插入:
1、 单元组的插入:INSERT INTO <基本表> [(<列名序列>)]
VALUES (<元组值>)
2、 多元组的插入:INSERT INTO <基本表> [(<列名序列>)]
VALUES (<元组值>),(<元组值>),…
3、 查询结果的插入:INSERT INTO <基本表名> [(<列名序列>)]
<SELECT 查询语句>
4、 表的插入:INSERT INTO <基本表名> [(<列名序列>)]
TABLE <基本表名>
数据删除:DELETE FROM <基本表名>
[ <WHREE 条件表达式>]
数据修改:UPDATE <基本表名>
SET <列名>=<值表达式>[,<列名>=<值表达式>,…..]|ROW=(<元组>)
[ <WHREE 条件表达式>]
视图的创建和撤销
视图的创建:CREATE VIEW <视图名> (<列名序列>)
AS <SELECT 查询语句>
视图的撤销:DROP VIEW <视图名>
SQL语言嵌入:终端交互方式下使用-----交互式SQL
嵌入式主语言的程序中使用--------嵌入式SQL
与游标有关的SQL语句
(!)游标定义语句(DECLARE)
EXEC SQL DECLARE <游标名> CURSOR FOR
<SELECT 语句>
END_EXEC
(2)游标打开语句(OPEN)
EXEC SQL OPEN<游标名> END_EXEC
(3) 游标推进语句(FETCH)
EXEC SQL FETCH<游标名> INTO <变量表>END_EXEC
(4)游标关闭语句(CLOSE): EXEC SQL CLOSE<游标名> END_EXEC
不涉及游标的SQL DML语句
涉及游标的SQL DML语句
卷游标的定义和推进
(1) 卷游标的定义句法:
EXEC SQL DECLARE <游标名> SCROLL CURSOR FOR
<SELECT 语句>
END_EXEC
(2) 卷游标的推进句法
EXEC SQL FETCH NEXT
PRIOR
FIRST FROM <游标名> INTO <变量表>
LAST
RELATIVE <整数>
ABSOLUTE <整数>
END_EXEC
动态SQL技术
1、动态SQL预备语句 EXEC SQL PREPARE < 游标名> FROM <共享变量或字符串>
2、动态SQL执行语句 EXEC SQL EXECUTE <动态SQL语句名>