关系数据库的主要特点之一就是用表的方式组织数据。表是
SQL
语言存放数据、查找数据以及更新数据的基本数据结构。在
SQL
语言中,表有严格的定义,它是一种二维表,对于这种表有如下规定:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1)
每一张表都有一个名字,通常称为表名或关系名。表名必须以字母开头,最大长度为
30
个字符。
2) 一张表可以由若干列组成,列名唯一,列名也称作属性名。
3) 表中的一行称为一个元组,它相当于一条记录。
4) 同一列的数据必须具有相同的数据类型。
5) 表中的每一个列值必须是不可分割的基本数据项。
2) 一张表可以由若干列组成,列名唯一,列名也称作属性名。
3) 表中的一行称为一个元组,它相当于一条记录。
4) 同一列的数据必须具有相同的数据类型。
5) 表中的每一个列值必须是不可分割的基本数据项。
注意
:当用户需要新的数据结构或表存放数据时,首先要生成一个表。
语法:
CREATE TABLE
表名
[
表约束
]
(
列名
1
数据类型
[
缺省值1,列约束
1]
(
列名
2
数据类型
[
缺省值2,列约束
2]
…
列名
n
数据类型
[
缺省值n,列约束
n]
[TABLESPACE
表空间名
称]
[STORAGE (
存贮的子句)
]
[ENABLE
约束名
]
[DISABLE
约束名
]
·
插入数据
当一个表新建成时,它里面没有数据,通过向表中扦入数据,建成表的实例。
语句句法:
INSERT INTO
表名
[(
列名
1,
…
)]
VALUES(
值
1
,值
2
,…
,值n)
[
子查询
]
;
假设有一张表Student如下所示:
NO
|
NAME
|
AGE
|
1001
|
A
|
12
|
1002
|
B
|
14
|
将新学生
E
增加到
上
表中,并按照表的结构将信息添加完整,需要如下语句:
INSERT INTO STUDENT VALUSE(1003, 'E',12);
·
修改数据
对表中已有数据进行修改,语句句法:
UPDATE
表名
SET
列名
1
=表达式
1
,列名
2
=表达式
2
,…
WHERE
条件;
例如:
对下表Student
NO
|
NAME
|
AGE
|
1001
|
A
|
12
|
1002
|
B
|
14
|
将
B的年纪改为18;应该执行以下语句:
UPDATE STUDENT SET AGE=18 WHERE NAME='B';
·
删除数据
删除表中已有数据,不能删除不存在的数据。
语句句法:
DELETE FROM
表名
WHERE
条件;
例如:
对下面Student表进行删除,要删除其中年纪为12的学生;
NO
|
NAME
|
AGE
|
1001
|
A
|
12
|
1002
|
B
|
14
|
DELETE FROM STUDENT WHERE AGE
=
12
;
·
表结构的修改
在已存在的表中增加新列,
语句句法:
ALTER TABLE
表名
ADD(
新列名 数据类型
(
长度
))
;
例如:
ALTER TABLE STUDENT ADD (DEPARTMENT CHAR(8));
b.
增加已有列的数据类型。
例如:
ALTER TABLE STUDENT MODIFY(NAME VARCHAR2(25));
·
表的删除
将已经存在的表删除,语句句法:
DROP TABLE
表名;
例如:
DROP TABLE EMP
;
·
查询语句
SELECT
命令的语法为:
SELECT [DISTINCT|ALL] {*|
模式名
.] {
表名
|
视图名
|
快照名
] .*
…
| {
表达式
[
列别名
]
…}
} [, [
模式名
. ] {
表名
|
视图名
|} .*
…
|
表达式
[
列别名
] ]
…
FROM [模式名.] {表名|视图名|快照名} [@数据库链名] [表别名]
[, [
模式名
.] {
表名
|
视图名
|
快照名}
[@
数据库链名
]
[
表别名
] ]
…
[WHERE
条件
]
[START WITH
条件
CONNECT BY
条件
]
[GROUP BY
表达式
[
,表达式
]
…
[HAVING
条件
]
[UNION|UNION ALL |INTERSECT|MINUS]SELECT
命令
[ORDER BY{
表达式
|
位置}
[ASC|DESC] [, {
表达式
|
位置
[ASC|DESC]}]
…
]
例如:对于STUDENT表:
NO
|
NAME
|
AGE
|
1001
|
AE
|
12
|
1002
|
BT
|
14
|
(1) 查询年纪为12的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE=12;
(2) 查询年纪在12至16岁之间的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE BETWEEN 12 AND 16;
(3) 查询年纪
不
在12至16岁之间的学生姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE AGE NOT BETWEEN 12 AND 16;
(4) 查询所有姓名以A开头的学生的姓名;
SELECT STUDENT.NAME FROM STUDENT WHERE NAME LIKE 'A%';
(5) 列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值;
SELECT AVG(AGE), SUM(AGE), MAX(AGE), MIN(AGE), MAX(AGE)-MIN(AGE);
(6) 将所有学生按学号顺序升序排列;
SELECT * FROM STUDENT ORDER BY NO DESC;
(7) 将所有学生按学号顺序升序排列;
SELECT * FROM STUDENT ORDER BY NO ASC;
转载于:https://blog.51cto.com/shihonglei/116433