SQL语句知识总结(一)

2014-11-24 11:12:58 · 作者: · 浏览: 5
SQL语句知识总结
一、 模式的定义
在 SQL语句中模式的定义如下:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
如果没有指定<模式名>,那么<模式名>隐含为<模式名>。
二、模式的删除
在SQL语句中删除模式如下:
DROP SCHEMA <模式名>
其中CASCADE和RESTRICT两者必选其一;
选择了CASCADE(级联),表示在删除模式的同时在把该模式中的所有的 数据库对象全部一起删除;
选择了RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象(如表,视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句。
三、基本表的定义
格式:CREATE TABLE <表名> ( <列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
····
[,<表级完整性约束条件>]);
例如:建立课程表Course
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,/*(主码)*/
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY Cpno REFERENCES Course(Cno) /*最后一句没有逗号*/
/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);(分号能丢)
当主码由两个属性构成,必须作为表级完整性进行定义:
例如:CREATE TABLE SC
(
····
PRIMARY KEY (Sno,Cno),
····
);
附录:常用数据类型:
数据类型
含义
CHAR(n)
长度为n的定长字符串
VARVHAR(n)
最大长度为n的变长字符串
INT
长整数(也可以为INTEGER)
SMALLINT
短整型
NUMERIC(p,d)
定点数,由p位数字(不包括符号、小数点)组成,小数点后面有d为数字
REAL
取决于机器精度的浮点数
Double Precision
取决于机器精度的双精度浮点数
FLOAT(n)
浮点数,精度至少为n为数字
DATE
日期,包含年、月、日,格式为YYYY-MM-DD
TIME
时间,包含一日的时、分、秒,格式为HH:MM:SS
四、修改基本表
一般格式: ALTER TABLE <表名>
[ADD <新列名> <数据类型> [完整性约束]]
[DROP <完整性约束名>]
[ALTER COLUMN <列名> <数据类型>];
其中<表名>是要修改的基本表,ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型。
五.删除基本表
DROP TABLE <表名>[RESTRICT| CASCADE];
n RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
n CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除
例如: DROP TABLE Student CASCADE ;
n 基本表定义被删除,数据被删除
n 表上建立的索引、视图、触发器等一般也将被删除
n 若表上建有视图,选择RESTRICT时表不能删除
n CREATE VIEW IS_Student
n AS
n SELECT Sno,Sname,Sage
n FROM Student
n WHERE Sdept='IS';
n DROP TABLE Student RESTRICT;
n --ERROR: cannot drop table Student because other
n objects depend on it
n 如果选择CASCADE时可以删除表,视图也自动被删除
n DROP TABLE Student CASCADE;
n --NOTICE: drop cascades to view IS_Student
n SELECT * FROM IS_Student;
n --ERROR: relation " IS_Student " does not exist
六、索引的建立与删除
1、索引的建立
语句格式:
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
§ <表名>
§ <列名>
§ <次序>指定索引值的排列次序,可选ASC(升)或DESC(降),缺省为ASC
§ UNIQUE表明此索引每一个索引值只对应唯一的数据记录
CLUSTER表示聚簇索引。即索引项的顺序与表中记录的物理顺序一致。如电话号码簿。
例如:
CREATE CLUSTER INDEX Stusname
ON Student(Sname);
§ 在Student表的Sname(姓名)列上建立一个聚簇索引
v 在最经常查询的列上建立聚簇索引以提高查询效率
v 由于聚簇索引决定数据在表中的物理存储顺序,因此一个基本表上最多只能建立一个聚簇索引
v 经常更新的列不宜建立聚簇索引
v CREATE UNIQUE INDEX Stusno ON Student(Sno);
v CREATE UNIQUE INDEX Coucno ON Course(Cno);
v CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
v
v Student表按学号升序建唯一索引
v Course表按课程号升序建唯一索引
v SC表按学号升序和课程号降序建唯一索引
2、索引