SQL语法基础

每个关系型数据库都有自己的一套SQL语言,但是尽管有部分不同,但是85%以上的语法都是相同的,了解基本语法能极大提高具体数据库的学习效率和编程效率(不过在使用具体的数据库之前最好还是先看看对应的文档),好了那就不多说了,开始吧。

1、 数据定义

操作对象 创建 删除 修改
模式 CREATE SCHEMA DROP SCHEMA 不支持
CREATE TABLE DROP TABLE ALTER TABLE
视图 CREATE VIEW DROP VIEW 不支持
索引 CREATE INDEX DROP INDEX ALTER INDEX

提一句,尽管SQL标准没有提供索引相关的语句,但是为了提高查询效率,一般的商用数据库都提供了索引机制和相关的语句。

下面列出具体的写法:
模式

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;
DROP SCHEMA <模式名> <CASCADE | RESTRICT>

如果没有指定<模式名>,则<模式名>默认为<用户名>
CASCADE:级联,表示删除模式的时候同时把该模式下的数据库对象全部删除
RESTRICT:限制,表示删除模式的时候会检查该模式下是否有已定义的数据库对象(如表、视图等),如果有则拒绝删除

CREATE TABLE ["模式名"]<表名> (<列名> <数据类型>[列级完整性约束条件]
										,[<列名> <数据类型>[列级完整性约束条件]]
										...
										[,<表级完整性约束条件>]);
/* 举个例子 */
CREATE TABLE "haha".Course  /* Course所属的模式是haha */
(
Cno CHAR(4) PRIMARY KEY, /* 列级完整性约束,Cno是主码 */
Cpno CHAR(4),			/* Cpno的含义是先修课 */
FOREIGN KEY(Cpno) REFERENCES Course(Cno) /* 表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno */
)


ALTER TABLE<表名>
[ADD [COLUMN] <新列名> <数据类型> [完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束>[RESTRICT|CASCADE]]
[ALTER COLUMN <列名> <数据类型>];


DROP TABLE<表名> [RESTRICT | CASCADE];

DROP COLUMN的CASCADE表示会自动删除引用了该列的其他对象,比如视图,如果指定了RESTRICT同样也会拒绝删除。

索引

索引是加快查询速度的有效手段

CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON<表名>(<列名>[<次序>][<列名>[<次序>]]...);

ALTER INDEX <旧索引名> RENAME TO <新索引名>

DROP INDEX <索引名>

posted @ 2019-02-25 15:53  _吟游诗人  阅读(115)  评论(0编辑  收藏  举报