三、关系数据库的标准语言———SQL' H6 M- T; V3 w! {/ T3 `9 M) _8 ^
1.SQL概述SQL的英语名称是结构查询语言(Structured Query Language)9 g9 R" v1 J6 e
实际上它的功能包括查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Control)
( O: }& J/ l( |' [2 \3 }7 g/ a5 r+ P( @ 四个方面,是一个综合的、通用的、功能极强的关系数据库语言。SQL支持数据库的三级模式结构。 M. Q, c& i% q6 l+ \
2.SQL的数据定义功能SQL的数据定义功能包括三部分:4 B1 @3 N' B! D& b8 m( f: H) O9 ~
定义基本表,定义视图和定义索引。它们是:# Q4 ?+ h+ ^$ Z$ o/ `
CREATE TABLE 创建表
7 ^) D/ [- T2 }+ [' r7 u! ] CREATE VIEW 创建视图, ?) {$ T, e. p9 t* K% p
CREATE INDEX 创建索引
: n4 _. M4 S9 o+ J6 X2 A; W" i DROP TABLE删除表' o1 W; `2 g3 H$ d
DROP VIEW 删除视图
2 X1 |, q2 S3 r% W D& O DROP INDEX SQL 删除索引( S9 s- ^% v0 M5 \
的数据定义功能可用于定义和修改模式(如基本表),定义外模式(如视图)和内模式(如索引)。1 B6 |, y5 u" M( A: z# R1 J: _
3.基本表的定义与删除
" Q2 b% {" V9 S2 `: X+ P6 d 定义基本表的语句格式为:
# x$ |7 W* ?5 {- b& m. |& G4 h* T CREATE TABLE表名 (列名1 类型[NOT NULL]
3 C" L) f/ X9 F" D [,列名2类型[NOT NULL]]…)0 v/ d$ x3 w( N8 Z0 g1 {
[其他参数];
3 b- V1 }$ P y4 _3 e% s, L' d% { 其中,任选项“其它参数”是与物理存储有关的参数。根据具体系统的不同而不同。删除基本表的语句为:DROP TABLE表名;删除索引的语句为:DROP INDEX索引名;删除索引的同时把有关索引的描述也从数据字典中删去。但表的内涵仍存在且其数据外延内容不变。把一个基本表的定义连同表上所有的记录、索引以及由此基本表导出的所有视图全部都删除,并释放相应的存储空间。
- v+ A' c$ F# Z, c 4.索引的建立与删除( ]3 p6 w! [! z6 {2 r
对一个基本表,可以根据应用环境的需要建立若干索引,以提供多种存取方式。通常,索引的建立和删除由DBA或表的主人(即建立表的人)负责。用户不必也不能在存取数据时选择索引。存取路径的选择由系统自动进行。索引的描述存放在数据字典中。建立索引的语句格式为:! @' F" d4 Y. B
CREATE[UNIQUE] INDEX索引名ON基本表名(列名[次序][,列名[次序]]…)[其他参数];这里的任选项———其他参数是与物理存储有关的参数。索引可以建在一列或几列上。圆括号内是索引列的顺序说明表。其中的任选项———次序,指定了索引值排序的次序。可取ASC(升序)或DESC(降序)。缺省值为升序。UNIQUE表示每一索引值只对应唯一的数据记录。# d: q U; A3 w' C$ B+ z7 o
5.SQL的数据操纵功能6 R9 z1 ^% L7 z
SQL的数据操纵功能包括SELECT,INSERT,DELETE和UPDATE四个语句,即检索和更新(包括增、删、改)两部分工能。检索就是查询。' `; @7 n% @+ R. w T& D& H; d
SQL更新语句SQL的更新语句, w$ l; r+ ?/ V& D) G
包括修改,删除和插入三类语句。
) m: U$ w! n- s# d# L: e% ? ①修改(UPDATE)(亦称为更新)
$ P5 T% S( B |2 Z* r e- _ 修改语句的一般格式为:' D/ m# N' P/ e8 K( K. b- A$ U
UPDATE表名% Z- M- J4 g9 N6 K6 a! a/ Z! y
SET字段=表达式[,字段=表达式]…
6 h- Y Z& I% q) E" |/ {: m; d) s9 X [WHERE谓词];
4 c1 h8 s8 e2 Q$ j 修改指定表中满足谓词(或条件)的元组,把这些元组按SET子句中的表达式修改相应属性或字段上的值。2 v, ]# g& s: C( h5 z0 b
②删除(DELETE)
8 S) u1 M8 n7 D2 f 删除语句一般格式为:
4 {; q7 J- I. u2 [9 u& [8 q DELETE FROM表名
2 h; a, l# ` I/ i4 i5 l [WHERE谓词];
$ c; U0 e; `3 P7 p; l7 @ 从指定表中删除满足谓词的那些记录。没有WHERE子句时表示删去此表中的全部记录,但此表的定义仍在数据字典中,只是一个空表。DELETE只对表外延操作,不对内涵操作。1 P) [2 {1 q F7 R
③插入(INSERT)插入语句的一般格式为:# m! q$ |$ r5 p# a! e
INSERT INTO表名[(字段名[,字段名]…)]0 h+ b3 L" a6 E) ?
valueS(常量[,常量]…);1 v+ ?2 F h" r1 e2 @) ]5 S
或/ a) o( c" z) S; Q) p
INSERT* x. [0 @! j" ]3 i- C
INTO表名[(字段名[,字段名]…)]5 i7 m6 K2 X4 x; v
子查询;5 R6 J# T0 s( y
第一种格式把一个新记录插入指定的表中。第二种格式把子查询的结果插入表中。若表中有些字段在插入语句中没有出现,则这些字段上的值取空值NULL。当然在表定义中说明了NOT NULL的字段在插入时不能取NULL。若插入语句中没有指出字段名,则新记录必须在每个字段上均有值。 |