每個關系型資料庫都有自己的一套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 <索引名>