SQL語(yǔ)言基本語(yǔ)句介紹
關(guān)系數(shù)據(jù)庫(kù)的主要特點(diǎn)之一就是用表的方式組織數(shù)據(jù)。表是SQL語(yǔ)言存放數(shù)據(jù)、查找數(shù)據(jù)以及更新數(shù)據(jù)的基本數(shù)據(jù)結(jié)構(gòu)。在SQL語(yǔ)言中,表有嚴(yán)格的定義,它是一種二維表,對(duì)于這種表有如下規(guī)定:
1) 每一張表都有一個(gè)名字,通常稱為表名或關(guān)系名。表名必須以字母開(kāi)頭,最大長(zhǎng)度為30個(gè)字符。 2)一張表可以由若干列組成,列名唯一,列名也稱作屬性名。 3)表中的一行稱為一個(gè)元組,它相當(dāng)于一條記錄。 4)同一列的數(shù)據(jù)必須具有相同的數(shù)據(jù)類型。 5)表中的每一個(gè)列值必須是不可分割的基本數(shù)據(jù)項(xiàng)。
注意:當(dāng)用戶需要新的數(shù)據(jù)結(jié)構(gòu)或表存放數(shù)據(jù)時(shí),首先要生成一個(gè)表。
語(yǔ)法:
CREATE TABLE 表名 [表約束]
( 列名1 數(shù)據(jù)類型 [缺省值1,列約束1]
( 列名2 數(shù)據(jù)類型 [缺省值2,列約束2]
…
列名 n 數(shù)據(jù)類型 [缺省值n,列約束n]
[TABLESPACE 表空間名稱]
[STORAGE ( 存貯的子句)]
[ENABLE 約束名]
[DISABLE 約束名]
當(dāng)一個(gè)表新建成時(shí),它里面沒(méi)有數(shù)據(jù),通過(guò)向表中扦入數(shù)據(jù),建成表的實(shí)例。
語(yǔ)句句法:
INSERT INTO 表名[(列名1,…)]
VALUES(值1,值2,…,值n)
[子查詢];
假設(shè)有一張表Student如下所示:
| NO |
NAME |
AGE |
| 1001 |
A |
12 |
| 1002 |
B |
14 |
將新學(xué)生E增加到上表中,并按照表的結(jié)構(gòu)將信息添加完整,需要如下語(yǔ)句:
INSERT INTO STUDENT VALUSE(1003, ‘E‘,12);
對(duì)表中已有數(shù)據(jù)進(jìn)行修改,語(yǔ)句句法:
UPDATE 表名SET 列名1=表達(dá)式1,列名2=表達(dá)式2,…
WHERE 條件;
例如:對(duì)下表Student
| NO |
NAME |
AGE |
| 1001 |
A |
12 |
| 1002 |
B |
14 |
將 B的年紀(jì)改為18;應(yīng)該執(zhí)行以下語(yǔ)句:
UPDATE STUDENT SET AGE=18 WHERE NAME=‘B‘;
刪除表中已有數(shù)據(jù),不能刪除不存在的數(shù)據(jù)。
語(yǔ)句句法:
在已存在的表中增加新列,語(yǔ)句句法:
ALTER TABLE 表名 ADD(新列名 數(shù)據(jù)類型(長(zhǎng)度));
例如:
ALTER TABLE STUDENT ADD (DEPARTMENT CHAR(8));
b. 增加已有列的數(shù)據(jù)類型。
例如:
ALTER TABLE STUDENT MODIFY(NAME VARCHAR2(25));
表的刪除
將已經(jīng)存在的表刪除,語(yǔ)句句法:
DROP TABLE表名;
例如:
DROP TABLE EMP;
SELECT 命令的語(yǔ)法為:
SELECT [DISTINCT|ALL] {*|模式名.] {表名|視圖名|
快照名] .*…| {表達(dá)式[列別名]…} } [, [模式名. ] {表名|
視圖名|} .*…| 表達(dá)式[列別名] ]…
FROM [模式名.] {表名|視圖名|快照名} [@數(shù)據(jù)庫(kù)鏈名] [表別名]
[, [模式名.] {表名|視圖名|快照名} [@數(shù)據(jù)庫(kù)鏈名]
[表別名] ]…
[WHERE條件]
[START WITH條件 CONNECT BY 條件]
[GROUP BY表達(dá)式[,表達(dá)式] …[HAVING條件]
[UNION|UNION ALL |INTERSECT|MINUS]SELECT命令
[ORDER BY{表達(dá)式|位置} [ASC|DESC] [, {表達(dá)式|位置[ASC|DESC]}]…]
例如:對(duì)于STUDENT表:
| NO |
NAME |
AGE |
| 1001 |
AE |
12 |
| 1002 |
BT |
14 |
(1) 查詢年紀(jì)為12的學(xué)生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE=12;
(2) 查詢年紀(jì)在12至16歲之間的學(xué)生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE BETWEEN 12 AND 16;
(3) 查詢年紀(jì)不在12至16歲之間的學(xué)生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE NOT BETWEEN 12 AND 16;
(4) 查詢所有姓名以A開(kāi)頭的學(xué)生的姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE NAME LIKE ‘A%‘;
(5) 列出所有學(xué)生年紀(jì)的和,年紀(jì)的平均值,最大值,最小值,最大值與最小值之間的差值;
SELECT AVG(AGE), SUM(AGE), MAX(AGE), MIN(AGE), MAX(AGE)-MIN(AGE);
(6) 將所有學(xué)生按學(xué)號(hào)順序升序排列;
SELECT * FROM STUDENT ORDER BY NO DESC;
(7) 將所有學(xué)生按學(xué)號(hào)順序升序排列;
SELECT * FROM STUDENT ORDER BY NO ASC;
|