关系数据库标准语言SQL(SQL概述、数据定义、创建数据库,索引等) | 您所在的位置:网站首页 › 标准sql基本查询模块的结构是什么 › 关系数据库标准语言SQL(SQL概述、数据定义、创建数据库,索引等) |
关系数据库语言SQL
一、SQL概述
SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言。 1 .SQL 的产生与发展
SQL功能极强,完成核心功能只用了9个动词。 SQL支持关系数据库三级模式结构. 基本表 - 本身独立存在的表 - SQL中一个关系就对应一个基本表 - 一个(或多个)基本表对应一个存储文件 - 一个表可以带若干索引 存储文件 - 逻辑结构组成了关系数据库的内模式 - 物理结构对用户是隐蔽的 视图 - 从一个或几个基本表导出的表 - 数据库中只存放视图的定义而不存放视图对应的数据 - 视图是一个虚表 - 用户可以在视图上再定义视图 二、学生-课程数据库学生-课程模式 S-T : 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit) 学生选课表:SC(Sno,Cno,Grade) 学生表数据——>戳这里下载 做操作的时候会用到。 Student表: SC表: 模式 数据库(有的系统称为目录)——>模式——>表以及视图、索引等 现代关系数据库管理系统提供了一个层次化的数据库对象命名机制 - 一个关系数据库管理系统的实例(Instance)中可以建立多个数据库 - 一个数据库中可以建立多个模式 - 一个模式下通常包括多个表、视图和索引等数据库对象 1.模式的定义与删除定义模式 [例1] 为用户WANG定义一个学生-课程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG; [例2] CREATE SCHEMA AUTHORIZATION WANG; 该语句没有指定,隐含为 定义模式实际上定义了一个命名空间。 在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。 CREATE SCHEMA AUTHORIZATION [||] [例3]为用户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(限制)如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。 仅当该模式中没有任何下属的对象时才能执行。 [例4] DROP SCHEMA ZHANG CASCADE; 删除模式ZHANG 同时该模式中定义的表TAB1也被删除 2.基本表的定义、删除与修改 2.1定义基本表 CREATE TABLE ( [ ] [, [ ] ] … [, ] );定义基本表 - :所要定义的基本表的名字 - :组成该表的各个属性(列) - :涉及相应属性列的完整性约束条件 - :涉及一个或多个属性列的完整性约束条件 - 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。 [例5] 建立“学生”表Student。学号是主码,姓名取值唯一。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) [例6 ] 建立一个“课程”表Course CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); [例7] 建立一个学生选课表SC CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), /* 主码由两个属性构成,必须作为表级完整性进行定义*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Cno)REFERENCES Course(Cno) /* 表级完整性约束条件, Cno是外码,被参照表是Course*/ ); 2.2数据类型 SQL中域的概念用数据类型来实现定义表的属性时需要指明其数据类型及长度选用哪种数据类型 取值范围要做哪些运算数据库管理员用户可以设置搜索路径,然后定义基本表 SET search_path TO “S-T”,PUBLIC; Create table Student(…); 结果建立了S-T.Student基本表。 关系数据库管理系统发现搜索路径中第一个模式名S-T, 就把该模式作为基本表Student所属的模式。 2.4修改基本表ALTER TABLE [ ADD[COLUMN] [ 完整性约束 ] ] [ ADD ] [ DROP [ COLUMN ] [CASCADE| RESTRICT] ] [ DROP CONSTRAINT[ RESTRICT | CASCADE ] ] [ALTER COLUMN ] ; 是要修改的基本表 ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件 DROP COLUMN子句用于删除表中的列 - 如果指定了CASCADE短语,则自动删除引用了该列的其他对象 - 如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列 DROP CONSTRAINT子句用于删除指定的完整性约束条件 ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型 [例8] 向Student表增加“入学时间”列,其数据类型为日期型 ALTER TABLE Student ADD S_entrance DATE; 不管基本表中原来是否已有数据,新增加的列一律为空值 [例9] 将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。 ALTER TABLE Student ALTER COLUMN Sage INT; [例10] 增加课程名称必须取唯一值的约束条件。 ALTER TABLE Course ADD UNIQUE(Cname); 2.5删除基本表DROP TABLE [RESTRICT| CASCADE]; RESTRICT:删除表是有限制的。 欲删除的基本表不能被其他表的约束所引用如果存在依赖该表的对象,则此表不能被删除 CASCADE:删除该表没有限制。 在删除基本表的同时,相关的依赖对象一起删除[例11] 删除Student表 DROP TABLE Student CASCADE; 基本表定义被删除,数据被删除 表上建立的索引、视图、触发器等一般也将被删除 [例3.12 ]若表上建有视图,选择RESTRICT时表不能删除;选择CASCADE时可以删除表,视图也自动删除。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS'; DROP TABLE Student RESTRICT; --ERROR: cannot drop table Student because other objects depend on it [例12续]如果选择CASCADE时可以删除表,视图也自动被删除 DROP TABLE Student CASCADE; --NOTICE: drop cascades to view IS_Student SELECT * FROM IS_Student; --ERROR: relation " IS_Student " does not existDROP TABLE时,SQL2011 与 3个RDBMS的处理策略比较
语句格式: CREATE [UNIQUE] [CLUSTER] INDEX ON ([][,[] ]…); :要建索引的基本表的名字 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔 :指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE:此索引的每一个索引值只对应唯一的数据记录 CLUSTER:表示要建立的索引是聚簇索引 [例13] 为学生-课程数据库中的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); 3.2修改索引ALTER INDEX RENAME TO [例14] 将SC表的SCno索引名改为SCSno ALTER INDEX SCno RENAME TO SCSno; DROP INDEX ; 删除索引时,系统会从数据字典中删去有关该索引的描述。 [例3.15] 删除Student表的Stusname索引 DROP INDEX Stusname; 4.数据字典 数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息: 关系模式定义视图定义索引定义完整性约束定义各类用户对数据库的操作权限统计信息等 关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。 |
CopyRight 2018-2019 实验室设备网 版权所有 |