数据库系统概论(第三章)----关系数据库标准语⾔SQL 1.SQL概述
SQL的特点
综合统⼀
⾼度⾮过程化
⾯向集合的操作⽅式
以同⼀种语法结构提供多种使⽤⽅式
语⾔简洁,易学易⽤。
SQL的基本概念
2.数据定义
早期数据库系统,所有数据库对象都属于⼀个数据库,也就是说只有⼀个命名空间。sql中union多表合并
现代的数据库系统,⼀个数据库管的实例中可以建⽴多个数据库,⼀个数据库中可以建⽴多个模式,⼀个模式下通常包括多个表、视图和索引等数据库对象。
模式
定义模式
定义模式实际上定义了⼀个命名空间,在这个空间中可以进⼀步定义该模式包含的数据库对象。例如基本表、视图、索引等。
基本模板:
CREATE SCHEMA <;模式名> AUTHORIZATION <⽤户名>[<;表定义⼦句>|<;视图定义⼦句>|<;授权定义⼦句>]
如果没有指定模式名,模式名隐含为⽤户名。
例、为⽤户ZHANG创建⼀个模式TEST,并且在其中定义⼀个表TAB1
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1  ( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
删除模式
模板:
DROP SCHEMA <;模式名> <CASCADE|RESTRICT>
CASCADE和RESTRICT必须两者选其⼀。CASCADE(级联),表⽰删除模式同时把模式中的所有数据库对象全部删除;RESTRICT(限制),表⽰只删除模式中没有数据库对象的模式。
模板:
CREATE TABLE <;表名>
(<;列名> <;数据类型>[ <;列级完整性约束条件> ]
[,<;列名> <;数据类型>[ <;列级完整性约束条件>] ]
[,<;表级完整性约束条件> ] );
数据类型
修改基本表
ALTER TABLE <;表名>
[ ADD[COLUMN] <;新列名> <;数据类型> [ 完整性约束 ] ]
[ ADD <;表级完整性约束>]
[ DROP [ COLUMN ] <;列名> [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT<;完整性约束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <;列名><;数据类型> ] ;
ADD⼦句⽤于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
DROP COLUMN⼦句⽤于删除表中的列
如果指定了CASCADE短语,则⾃动删除引⽤了该列的其他对象
如果指定了RESTRICT短语,则如果该列被其他对象引⽤,关系数据库管理系统将拒绝删除该列
DROP CONSTRAINT⼦句⽤于删除指定的完整性约束条件
ALTER COLUMN⼦句⽤于修改原有的列定义,包括修改列名和数据类型
删除基本表
DROP TABLE <;表名>[RESTRICT| CASCADE];
RESTRICT:删除是有限制的,欲删除的表不能被其他表的约束所引⽤(如check,foreign key等),不能有视图,不能有触发器。
CASCADE:删除时没有任何限制条件,删除的同时,相关的依赖对象⼀同删除。
默认为RESTRICT
索引
当⽤户数据较⼤时,查询操作会⽐较耗时。建⽴索引可以加快查询速度。索引可以理解为字典中的⽬录,根据⽬录查某个字与随便查快很多。虽然说建⽴索引可加快查询速度,但是它也有⼀定的缺点。它需要占⽤⼀定的存储空间,当基本表更新时,索引要进⾏相应的维护,这样会增加数据库的负担。
建⽴索引
CREATE [UNIQUE] [CLUSTER] INDEX <;索引名>
ON <;表名>(<;列名>[<;次序>][,<;列名>[<;次序>] ]…);
<;表名>:要建索引的基本表的名字
索引:可以建⽴在该表的⼀列或多列上,各列名之间⽤逗号分隔
<;次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
UNIQUE:此索引的每⼀个索引值只对应唯⼀的数据记录
CLUSTER:表⽰要建⽴的索引是聚簇索引
例:为学⽣-课程数据库中的Student,Course,SC三个表建⽴索引。Student表按学号升序建唯⼀索引,Course表按课程号升序建唯⼀索引,SC表按学号升序和课程号降序建唯⼀索引
CREATE UNIQUE INDEX  Stusno ON Student(Sno);
CREATE UNIQUE INDEX  Coucno ON Course(Cno);
CREATE UNIQUE INDEX  SCno ON SC(Sno ASC,Cno DESC);
修改索引
ALTER INDEX <;旧索引名> RENAME TO <;新索引名>
例: 将SC表的SCno索引名改为SCSno
ALTER INDEX SCno RENAME TO SCSno;
删除索引
DROP INDEX <;索引名>;
删除索引时,系统会从数据字典中删去有关该索引的
描述。
数据字典
数据字典是关系数据库管理系统内部的⼀组系统表,它记录了数据库中所有定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类⽤户对数据库的操作权限、统计信息等。
关系数据库管理系统在执⾏SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。
3.数据查询
SELECT [ALL|DISTINCT] <⽬标列表达式>[,<⽬标列表达式>] …
FROM <;表名或视图名>[,<;表名或视图名> ]…|(SELECT 语句)
[AS]<;别名>
[ WHERE <;条件表达式> ]
[ GROUP BY <;列名1> [ HAVING <;条件表达式> ] ]
[ ORDER BY <;列名2> [ ASC|DESC ] ];
SELECT⼦句:指定要显⽰的属性列
FROM⼦句:指定查询对象(基本表或视图)
WHERE⼦句:指定查询条件
GROUP BY⼦句:对查询结果按指定列的值分组,该属性列值相等的元组为⼀个组。通常会在每组中作⽤聚集函数。
HAVING短语:只有满⾜指定条件的组才予以输出
ORDER BY⼦句:对查询结果表按指定列值的升序或降序排序
单表查询
select * from table_name;
选择表中的若⼲元组(条数据)
select <⽬标列> from table_name;
⽬标列不仅可以是表中的属性列,也可以是表达式
as给⽬标列去别名
消除重复
DISTINCT关键字可消除重复
select DISTINCIT * FROM TABLE_NAME;
查询满⾜条件的元组
1.⽐较⼤⼩
select * from stu where age<20
2.确定范围
⽤ 和可以⽤来查指定范围的元组。
-- 查询20~30岁之间的学⽣
select * from stu where age between 20 and 30;
3.确定集合
谓词in可以⽤来查属性值属于指定集合的元组。
-- 查询班级在101和102班的学⽣
select * from stu where class in (101,102);
4.字符匹配(模糊查询)
谓词like可以⽤来进⾏字符串的匹配。其⼀般语法如下:
[NOT] LIKE  ‘<;匹配串>’  [ESCAPE ‘ <;换码字符>’]
<;匹配串>可以是⼀个完整的字符串,也可以含有通配符%和 _

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。