1.SQL:Structured Query Language 结构化查询语言
2.数据查询(Data Query)QL
数据操纵(Data Manipulation)DML
数据定义(Data Definition)DDL
数据控制(Data Control)DCL
3.SQL的主要特点综合统一,高度非过程化,面向集合的操作方式,既是独立的语言又是嵌入式语言,语言简洁,易学易用
4.外模式:视图和部分基本表模式:基本表内模式:存储文件
5.模式
模式定义:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
如果没有指定模式名,模式名隐含为用户名
模式的删除:
DROP
SCHEMA <模式名> <CASCADE | RESTRICT>
CASCADE(级联):删除模式的同时把该模式中所有的数据库对象全部一起删除
RESTRICT(限制):如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行。只有在该模式下没有任何下属的对象时才能执行DROP
SCHEMA 语句。
例子:
CREATE
SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20));
该语句为用户ZHANG创建了一个模式TEST,并且在其中定义了一个表TAB1.
6.基本表
定义基本表:
CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件],
<列名> <数据类型> [列级完整性约束条件]);
CREATE TABLE Student
(SoneCHAR (9) PRIMARY KEY, /*主码*/
Sname CHAR (20) UNIQUE,
/*唯一性*/
Ssex CHAR (2),
Sage SMALLINT,
Sdept CHAR(20)
);
7.模式与表
每一个基本表都属于某一个模式,一个模式包含多个基本表。
例如定义了学生–课程模式,包含Student,Cource,SC等基本表。
方法一:在表名中明显的给出模式名
CREATE TABLE “S-T”.Student(….);
方法二:创建模式语句中同时创建表
例子:
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20));
方法三:设置所属的模式,这样在创建表时表名中不必给出模式名。
当用户创建基本表时若没有指定模式,系统根据搜索路径来确定对象所属的模式。
8.修改基本表
ALERT TABLE <表名>
[ADD <新列名> <数据类型> [完整性约束]]
/增加新列和完整性约束条件/
[DROP <完整性约束名>]/删除指定的完整性约束条件/
[ALTER COLUMN <列名> <数据类型>];/修改原有列定义,包括修改列名和数据类型/
例子:增加入学时间列,数据类型为日期型
ALTER TABLE Student ADD S_entrance DATA;
9.删除基本表
DROP TABLE <表名> [RESTRICT|CASCADE];
若选择RESTRICT,删除表是有限制的。欲删除的基本表不能被其他表的约束所引用(CHECK,FOREIGN KEY等约束),不能又视图,不能有触发器,不能又存储过程或函数。如果存在依赖该表的对象,则此表不能删除。
若选择CASCADE,没有限制,在删除基本表的同时,相关依赖对象都将被一起删除。
缺省的情况下为RESTRICT
例子:删除Student表
DROP TABLE Student CASCADE;
10.建立索引 :为了加快查询的速度
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名> (<列名> [<次序>],<列名> [<次序>])
索引可以建立在表的一列或者多列上,各列名之间用逗号分隔,次序可以选择升序ASC或者降序DESC,缺省为ASC
UNIQUE:说明每一个索引值只对应唯一的数据记录
CLUSTER:要建立的索引是聚簇索引。聚簇索引是索引项的顺序与表中记录的物理顺序一致的索引组织
例子:
CREATE CLUSTER INDEX Stusname ON Student (Sname);
注意:一个基本表只能建立一个聚簇索引,建立聚簇索引后,更新该索引列上的数据时,往往导致表中物理顺序的改变,所以不适合经常更新的表。
11.删除索引
DROP INDEX <索引名>
例子:删除Student表的Stusname索引
DROP INDEX Stusname;