SQL語言基礎
1986年10月由美國ANSI 公佈最早的SQL標準。
1989年4月,ISO提出了具備完整性特徵的SQL,稱爲SQL-89 。
1992年11月,ISO又公佈了新的SQL標準,稱爲SQL-92(以上均爲關係形式)。
1999年頒佈SQL-99,是SQL92的擴展。、
、
SQL語言的特點
1. 一體化。
2. 高度非過程化。
3. 簡潔。
4. 使用方式多樣。
四部分:數據定義功能、數據控制功能、數據查詢功能和數據操縱功能。
SQL的數據類型
-
數值型 字符串型 日期時間型 貨幣型
-
**準確型
-
整數
-
Bigint: 8字節, Int:4字節 Smallint:2字節, Tinyint:1字節 Bit:1位,存儲1或0
-
小數
-
Numeric(p,q)或Decimal(p,q), 其中:p爲數字位長度,q:小數位長度。
-
近似型
Float:8字節 Real:4字節
基本表的定義、刪除及修改
1.定義基本表
使用SQL語言中的CREATE TABLE語句實現,其一般格式爲:
CREATE TABLE <表名>(
<列名> <數據類型> [列級完整性約束定義]
{, <列名> <數據類型>
[列級完整性約束定義] … }
[, 表級完整性約束定義 ] )
NOT NULL:限制列取值非空。
DEFAULT:給定列的默認值。
UNIQUE:限制列取值不重。
CHECK:限制列的取值範圍。
PRIMARY KEY:指定本列爲主碼。
FOREIGN KEY:定義本列爲引用其他表的外碼。使用形式爲:
[FOREIGN KEY(<外碼列名>)] REFERENCES <外表名>(<外表列名>)
NOT NULL和DEFAULT只能是列級完整性約束;
其他約束均可在表級完整性約束處定義。
注意以下幾點:
第一,如果CHECK約束是定義多列之間的取值約束,則只能在表級完整性約束處定義;
第二,如果表的主碼由多個列組成,則也只能在表級完整性約束處定義,並將主碼列用括號括起來,即:PRIMARY KEY(列1{[,列2 ] …});
第三,如果在表級完整性約束處定義外碼,則“FOREIGN KEY (<外碼列名>)”部分不能省。
創建學生表
CREATE TABLE Student (
Sno char ( 7 ) PRIMARY KEY,
Sname char ( 10 ) NOT NULL,
Ssex char (2)
CHECK (Ssex = '男' OR Ssex = '女'),
Sage tinyint
CHECK (Sage >= 15 AND Sage <=45),
Sdept char (20 ) DEFAULT '計算機系'
)
創建課程表
CREATE TABLE Course (
Cno char(10) NOT NULL,
Cname char(20) NOT NULL,
Ccredit tinyint CHECK (Ccredit > 0),
Semester tinyint CHECK (Semester > 0),
Period int CHECK (Period > 0),
PRIMARY KEY(Cno)
)
創建SC表
CREATE TABLE SC (
Sno char(7) NOT NULL,
Cno char(10) NOT NULL,
Grade tinyint,
CHECK (Grade >= 0 and Grade <= 100),
PRIMARY KEY ( Sno, Cno ),
FOREIGN KEY ( Sno )
REFERENCES Student ( Sno ),
FOREIGN KEY ( Cno )
REFERENCES Course ( Cno ) )