SQL(Structured Query Language),即结构化查询语言,是关系数据库的标准语言,SQL是一个通用的、功能极强的关系数据库语言。
SQL概述
SQL的特点
SQL集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)、数据控制(Data Control)功能于一体。
综合统一
数据定义语言DDL、数据操纵语言DML、数据控制语言DCL。
定义关系模式,插入数据,建立数据库;
对数据库中的数据进行查询和更新;
数据库重构和维护;
数据库安全性、完整性控制。
高度非过程化
用SQL进行数据操作,只要提出”做什么“,而无须指明”怎么做“,因此无需了解存取路径。存取路径的选择以及SQL的操作过程由系统自动完成。减轻了用户的负担,有利于提高数据独立性。
面向集合的操作方式
以同一种语法结构提供多种使用方式
语言简洁,易学易用
SQL的基本概念
SQL可以对基本表和视图进行查询或其他操作。
基本表是独立存在的表,在SQL中一个关系就对应一个基本表,一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理结构是任意的,对用户是透明的。
视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,即数据库只存放视图的定义而不存放视图对应的数据。用户可以在视图上再定义视图。
数据定义
模式、外模式和内模式中的基本对象有表、视图和索引。SQL通常不提供修改模式定义、修改视图定义、修改索引定义的操作。
操作对象 创建 删除 修改 模式 CREATE SCHEMA DROP SCHEMA 表 CREATE TABLE DROP TABLE ALTER TABLE 视图 CREATE VIEW DROP VIEW 索引 CREATE INDEX DRPO INDEX
模式的定义与删除
/*创建模式*/ CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
如果没有指定模式名,那么模式名隐含为用户名。定义模式实际上定义了一个命名空间。
/*删除模式*/ DROP SCHEMA <模式名> <CASCADE | RESTRICT>
CASECADE(级联),表示在删除模式的同时把该模式中的所有数据库对象全部一起删除。RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行。
基本表的定义、删除与修改
/*创建基本表*/ CREATE TABLE <表名>( <列名> <数据类型> [<列级完整性约束条件>] [,<列名> <数据类型> [<列级完整性约束条件>]] ... [, <表级完整性约束条件>] ); /*修改基本表*/ ALTER TABLE <表名> [ ADD <新列名> <数据类型> [<完整性约束>]] [ DROP <完整性约束列名>] [ ALTER COLUMN <列名> <数据类型>]; /*删除基本表*/ DROP TABLE <表名> [<CASCADE | RESTRICT>];
索引表的建立与删除
UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录。/*建立索引*/ CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名> (<列名> [<次序>][,<列名>[ <次序>]]...); /*删除索引*/ DROP INDEX <索引名>;
CLUSTER 表示要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。
数据查询
一般格式为:
/*数据查询*/ SELECT [ALL | DISTINCT] <目标列表达式>[,<目标列表达式>]... FROM <表名或视图名>[,<表名或视图名>]... [WHERE <条件表达式>] [GROUP BY <列名1> [HAVING<条件表达式>]] [ORDER BY <列名2> [ASC | DESC]]
单表查询
一、选择表中的若干列
关系代数的投影运算
1、查询指定列
通过在SELECT子句的<目标列表达式>中指定要查询的属性列
2、查询全部列
可以通过列出所有列名或通过将<目标列表达式>指定为*
3、查询经过计算的值
SELECT子句中的<目标列表达式>不仅可以是表中的属性列,也可以是表达式。
用户可以通过指定别名来改变查询结果的列标题。(AS)
二、选择表中的若干元组
1、消除取值重复的行
当查询结果出现完全重复的行时,可以用DISTINCT取消它们。
2、查询满足要求的元组
通过WHERE子句实现。
(1)比较大小
(2)确定范围
BETWEEN...AND... 和 NOT BETWEEN...AND...
(3)确定集合
IN,NOT IN,用户查找属性值属于或不属于指定集合的元组。
(4)字符匹配
谓词LIKE可以用来进行字符串的匹配,一般语法格式如下:
% 代表任意长度的字符串[NOT] LIKE '<匹配串>'[ESCAPE '<换码字符>']
_代表任意单个字符
(5)涉及空值查询
需要IS NULL,且IS不能用=代替。
(6)多重条件查询
逻辑运算符AND和OR,AND优先级高于OR