SQL的特色:是一个综合的、功能极强而且简洁容易学的语言。程序员
SQL的功能:数据查询、数据操纵、数据定义、数据控制。数据库
数据库系统的主要功能是经过数据库支持的数据语言来实现。数据结构
菲关系模型(层次模型、网状模型)的数据语言分为:框架
- DDL:数据定义语言(用来维护存储数据的结构,例如:数据库、表等)。
- DML:数据操纵语言(对数据进行操做,也就是对数据表的内容进行操做)。
- DSDL:数据存储有关的描述语言。
SQL的特色:优化
- 综合统一:集数据定义语言、数据操纵语言、数据控制语言的功能与一体,语言风格统一,能够独立完成数据库生命周期中的所有活动;在关系模型中实体与实体之间的联系均用关系表示,这种数据结构的单一性带来了数据操做符的统一性。
- 高度非过程化:只要提出“作什么”,不用指明“怎么作”,所以无须了解存取路径,存取路径的选择以及SQL的操做过程由系统自动完成。
- 面向集合的操做方式:非关系数据模型采用的是面向记录的操做方式,操做对象是一条记录,但SQL采用集合操做方式,不只操做对象、查找结果可使元组的集合,并且一次插入、删除、更新操做的对象也能够是元组的集合。
- 以同一种语法结构提供多种使用方式:SQL既是独立的语言,又是嵌入式语言。做为独立语言,它可以独立的用于联机交互的使用方式,用户能够在终端键盘上直接敲入SQL命令对数据库进行操做;做为嵌入式语言,SQL语句能够嵌入到高级语言(C,C++,Java)程序中,供程序员设计程序时使用。
- 语言简洁、易学易用:SQL功能极强,语言十分简洁。核心功能只用了9个动词(数据查询:SELECT;数据定义:CREATE、DROP、ALTER;数据操纵:INSERT、UPDATE、DELETE;数据控制:GRANT、REVOKE)
补充:spa
- 基本表和视图同样,都是关系。
- 基本表是自己独立存在的表,在关系数据库管理系统中一个关系对应一个基本表。
- 一个或多个基本表对应一个存储文件,一个表能够带若干索引,这些索引存放在存储文件中
- 存储文件的逻辑结构组成了关系数据库的内模式,存储文件的物理结构对最终用户是隐蔽的。
- 视图是从一个或多个基本表导出来的,它自己不独立存储的数据库中,因此视图是一个虚表。
数据定义:设计
关系数据库系统支持三级模式结构,其模式、外模式、内模式中的基本对象是模式、表、索引。所以SQL的数据定义包括模式定义、表定义、视图和索引的定义。对象
SQL标准不提供修改模式定义和修改视图定义的操做。若是想修改这些对象,只能先将它们删除然年再重建,SQL标准也没用提供索引相关的语句。blog
一个数据库管理系统的实例中能够建多个数据库,一个数据库中能够创建多个模式,一个模式下一般包括多个表、视图和索引等数据。索引
- 定义模式:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;
若是没有指定<模式名>,那么<模式名>隐含为<用户名>。要建立模式,调用该命令的用户必须拥有数据库管理员权限,或者得到了数据库管理员授予的CREATE SCHEMA的权限。
定义模式实际上定义了一个命名空间,在这个空间中能够进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。
- 删除模式:
DROP SCHEMA <模式名> <CASCADE|RESTRICT>;
其中CASCADE和RESTRICT必须二选一,选择了CASCADE(级联),表示在删除模式的同时把该模式中全部的数据库对象所有删除;选择了RESTRICT(限制),表示若是该模式中已经定义了下属的数据库对象,则拒绝删除语句的执行,只有当该模式中没有任何下属的对象时才能执行。
- 定义基本表
建立了一个模式就创建了一个数据库的命名空间,一个框架。
CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件]
,<列名> <数据类型> [列级完整性约束条件]
……
,[<表级完整性约束条件>]);
建表的同时能够定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,若是完整性约束条件涉及表中的多个属性列,则必须定义在表级上,不然能够定义在列级也能够定义在表级。有主码时要在主码那一列定义完后面加上“PRIMARY KEY”,标识为主码。若是有外码和被参照表以及被参照列,在完整性约束条件定义完后加上相应标识,外码“FOREIGN KEY”,被参照表“REFERENCES”,被参照列加上“()”就行。参照表和被参照表能够是同一个表。
数据类型:
- 修改基本表
ALTER TABLE<表名>
[ADD [COLUMN] <新列名> <数据类型> [完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束> [CASCADE|RESTRICT]]
[ALTRE COLUMN <列名> <数据类型>];
其中<表名>是要修改的基本表,ADD字句用于增长新的列、新的列级完整性约束条件和新的表级完整性约束条件。DROP COLUMN字句用于删除表中的列。DROP CONSTRAINT字句用于删除指定的完整性约束条件。ALTER COLUMN 字句用于修改原有的列定义,包括修改列名和数据类型。
- 删除基本表
DROP TABLE <表名> [CASCADE|RESTRICT];
索引:
创建索引是加快查询素的有效手段。
数据库索引有多种类型,常见索引包括顺序文件上的索引、B+树索引、散列索引、位图索引等,索引虽然能加快数据库查询速度,但须要占用必定的存储空间,当基本表跟新时,索引要进行相应的维护,这些都会增长数据库的负担。
通常来讲,创建与删除索引由数据库管理员或表的属主,即创建表的人,负责完成。关系数据库管理系统在执行查询时会自动选择合适的索引做为存取路径,用户没必要也不能显示地选择索引。索引是关系数据库管理系统的内部实现技术,属于内模式的范畴。
- 创建索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>;
ON <表名>(<列名> [<次序>][,<列名>[<次序>]]……);
其中,<表名>是要创建索引的基本表的名字。索引能够创建在该表的一列或多列上,各列名之间用逗号隔开。每一个<列名>后面还能够用<次序>指定索引值的排列次序,可选ASC(升序)或DESC(降序),默认值为ASC。
UNIQUE代表此索引的每个索引值只对应惟一的数据记录。CLUSTER表示要创建的索引是聚簇索引。
- 修改索引
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
- 删除索引
索引一经创建就由系统使用和维护,不需用户干预。创建索引是为了减小查询操做的时间,但若是数据增、删、改频繁,系统会花费许多时间来维护,从而下降了查询效率。这时能够删除一些没必要要的索引。
DROP INDEX <索引名>;
删除索引时,系统会同时从数据字典中删去有关该索引的描述。
数据字典
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中全部的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各种用户对数据库的操做权限、统计信息等。关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的响应信息。在进行查询优化和查询处理时,数据字典中的纤细是其重要依据。