天天看點

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];      

索引

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

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

DROP INDEX <索引名>