概述
SQL是一个综合的、功能极强、又简单易学,既是独立语言又是嵌式性语言。语言风格统一,其集数据查询、数据操纵、数据定义和数据控制等功能于一体,可以独立完成数据库生命周期的全部活动。
1、其主要特点如下:
综合统一
高度非过程化
面向集合的操作方式
以同一种语法结构提供多种使用方式
语言简洁易学易用
2、SQL的基本概念
数据库三级模式结构图
其中外模式包括若干视图和部分基本表,模式包含若干基本表,内模式包含若干储存文件。
3、SQL数据定义
3.1、SQL动词及分类
数据查询 : SELECT
数据定义 : CREATE 、DROP、ALTER
数据操纵 : INSERT、UPDATE、DELETE
数据控制: GRANT、REMOVE
3.2、SQL的数据定义语句![](https://i-blog.csdnimg.cn/blog_migrate/ca438eea2b62fdfb38c10847deb51652.jpeg)
SQL标准不提供模式和视图的修改操作,如果想修改,只能先删除,再进行重建。
3.3、模式的定义与删除.
3.3.1 模式定义
语句格式:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;
若不指定模式名则模式名默认为用户名.
eg 为用户 Mu定义一个Student-Class S-C.
CREATE SCHEMA "S-C" AUTHORIZATION MU;
一个关系数据库管理系统实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包含多个表,视图和索引等数据库对象。
目前CREATE SCHEMA 中可以接收 CREATE TABLE 、CREATE VIEW 、GRANT 子句。即创建模式的同时,可以进一步创建基本表,视图和定义授权。
eg:
CREATE SCHEMA "S-C" AUTHORIZATION MuChenFeng
CREATE TABLE TABLE1 ( COL1 INT,
COL2 CHAR 20,
COL3 NUMERIC (10,3),
COL4 DECIMA(5,2),
);
3.3.2模式的删除
语句格式:
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
CASCADE和RESTRICT 必选取一,其中 CASCADE 表示级联删除,即删除模式的同时会把该模式中的所有数据库对象全部删除; RESTRICT 表示限制删除,即只有该模式下没有任何下属对象时才进行删除操作,否则会拒绝删除语句的执行。
3.4、基本表的定义、修改和删除。
3.4.1 基本表的定义
语句格式:
CERATE TABLE <表名> (<列名><数据类型>[列级完整性约束性条件],
[<列名><数据类型>[列级完整性约束性条件]],
......
[<,表级完整性约束条]);
创建表时可以定义与表有关的约束性完整条件,这些条件会存入系统的数据字典中,如果完整性约束条件涉及表的诸多列属性则必须定义在表级上,否则既可以定义在表级又可定义在列级上。
当用户对表中的数据进行操作时,关系数据库管理系统会自动检查操作是否违背定义的完整性约束条件。
eg: 建立一个“学生”表Student,Sno 为主码,学生姓名取不可重复。
CREATE TABLE Student(
Sno CHAR(10) PRIMARY KEY), /*列级完整性约束条件 ,Sno 为主码*/
Sname CHAR(20) UNIQUE,
SexCHAR(2),
Sage SMALLINT,
Sdept CHAR(20));
3.4.2 修改基本表
语句格式:
ALTER TABLE <表名>
[ADD [COLUMN] <新列名> <数据类型>[完整性约束]],
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE | RESTRICT]
[DROP CONSTRAINT <完整性约束名> [CASCADE | RESTRICT]]
[ALTER COLUMN <列名><数据类型>];
ADD子句用于增加新的列,新的列级完整性约束条件,以及新的表级完整性约束条件。
DROP COLUMN 子句用于删除表中的列,,如果指定CASCADE则会自动删除引用了该列的其他对象。如果引用RESTRICT,则在该列被其他对象引用时,RDBMS会拒绝删除该列。
DROP CONSTRAINT用于删除指定的完整性约束条件。
AL3.TER COLUMN 用于修改原有的列定义,包括列名和数据类型。
ALTER TABLE Student ADD S_entrance DATE; /* 向Student表中增加入学时间列,数据类型为日期型*/
ALTER TABLE Student ALTER COLUMN Sage INT; /*将年龄的数据类型由字符型改为整型*/
ALTER TABLE Student ADD UNIQUE (Sname); /*增加学生姓名,且取唯一值约束条件*/
3.4.3 删除基本表
语句格式:
DROP TABLE <表名> [RESTRICT | CASCADE]
选择 RESTRICT ,则删除的表不能被其他表的约束所引用,不能有视图,不能有触发器和储存过程或函数,否则该表无法删除。
选择 CASCADE ,则删除时没有约束条件。即会将表的相关依赖对象一起删除。因此删除基本表时一定要格外小心。
默认为RESTRICT。
3.5索引的建立与删除
3.5.1 建立索引
语句格式:
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]...);
UNIQUE 表示此索引的每一个索引值只对应唯一的数据记录。
CLUSTER 表示要建立的索引是聚簇索引。
索引可以建立在该表的一列或多列上,各列名之间用逗号隔开。
每个列名后面可以还可以 <次序> 指定索引值的排列顺序。 ASC (升序) DESC (降序)。默认为ASC。
eg: 为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.5.2 修改索引
语句格式:
ALTER INDEX <旧索引名>RENAME TO <新索引名>;
3.5.3 删除索引
语句格式:
DROP INDEX<索引名>;
删除索引的同时,数据字典中有关该索引的描述,也会被系统删除。
4、SQL数据查询
语句格式 :
SELECT [ALL | DISTINCT]<目标列表达式>[,<目标列表达式>].......
FROM <表名或视图名>[,<表名或视图名,>...]|(<SELECT语句)[AS]<别名>
[WHERE<条件表达式>]
[GROUP BY <列名1>[HAVING<条件表达式>]]
[ORDER BY <列名2>[ASC | DESC]];
SELECT 子句指定要选中的目标列 。
FROM 子句指定基本表,视图或派生表。
WHERE 子句 指定选出目标列时的条件要求,找出满足条件的元组。
GROUP BY 子句 将结果按列名1 的值进行分组,该属性列值相等的元组为一组。通常会在每组中用到聚合函数。若GROUP BY 子句带有HAVING短语,则只输出满足指定条件的组。
ORDER BY子句 将结果表按照<列名2>的值的升序或降序排列。
常见查询分为: 单表查询、连接查询 和嵌套查询。