文章目录
一、创建表
CREATE TABLE[<用户方案名>.]<表名>
(
<列名1> <数据类型> [DEFAULT<默认值>] [<列约束>],
<列名2> <数据类型> [DEFAULT<默认值>] [<列约束>],
...
<表约束>
);
说明:
1、<用户方案名>:用户方案是指该表所属的用户,如果省略则默认为当前登陆的用户。
2、DEFAULT:关键字DEFAULT指定某一列的默认值,
默认值的数据类型必须与该列的数据类型相匹配,
列的长度必须足以容纳这一表达式的值。
3、列约束:定义一个完整性约束作为列定义的一部分,该子句的语法为:
[NOT] NULL
[UNIQUE]
[PRIMARY KEY]
[REFERENCES [<用户方案名>.]<表名>(<列名>)]
[CHECK(<条件表达式>)]
NULL 表示列上的数据可以为空,NOT NULL 则相反
UNIQUE 表示该列上所有行中的数据必须是唯一的
PRIMARY KEY 表示添加该列为主键,注意一个表只能有一个主键
REFERENCES 定义外键
CHECK 关键字用于定义CHECK约束
4、表约束:定义一个完整性约束作为表定义的一部分。
二 、删除表
DROP TABLE [<用户方案名>.]<表名>
- 作为ALTER的子句
DROP
{
COLUMN <列名>
| PRIMARY [KEY]
| UNIQUE(<列名>,...)
| CONSTRAINT<约束名>
| [CASCADE]
}
- COLUMN:删除指定的列
- PRIMARY:删除表的主键
- UNIQUE:删除指定列上的UNIQUE约束
- CONSTRAINT:删除完整性约束
- CASCADE:删除其他所有的完整性约束,这些约束依赖于被删除的完整性约束
三、修改表
ALTER TABLE [<用户方案名>.]<表名>
[ADD (<新列名> <数据类型> [DEFAULT<默认值>] [列约束]);]
[MODIFY ([<列名>] [<数据类型>] [DEFAULT<默认值>] [列约束]);]
[DROP 子句]
1、ADD子句:
用于向表中增加一个新列,新的列定义和创建表时定义列的格式一样,
一次可添加多个列,中间用逗号隔开
2、MODIFY子句:
用于修改表中某列的属性(数据类型、默认值)
3)DROP子句:
该子句用于从表中删除指定的字段或约束,语法规则为
四、使用表(数据的增、删、改、查)
1、SELECT:查询数据
SELECT <列>
FROM <表或视图>
[WHERE <条件表达式>]
[GROUP BY <分组表达式>]
[HAVING <分组条件表达式>]
[ORDER BY <排序表达式>[ASC|DESC]]
- FROM子句,指定表或视图
- WHERE子句,指定查询条件
- GROUP BY子句,指定分组表达式
- HAVING子句,对分组进行筛选
- ORDER BY子句,指定排序表达式和顺序
WHERE子句
WHERE <条件表达式>
条件表达式:
- 表达式比较
<表达式1> op <表达式2>
op:=、<、<=、>、>=、<>(不等于)、!=(不等于)
- 模式匹配
<字符串1>[NOT] LIKE <字符串2>[ESCAPE'<转义字符>']
通配符 | 功能 |
---|---|
% | 匹配任意多个字符 |
_ | 匹配单个字符 |
- 比较范围:BETWEEN关键字
<表达式>[NOT] BETWEEN <表达式1> AND <表达式2>
当不使用NOT时,若表达式的值在表达式1与表达式2之间(包括这两个值),则返回TRUE,否则返回FALSE;使用NOT时,返回值刚好相反
- IN关键字
<表达式> IN (<表达式>[,..])
使用IN关键字可以指定一个值表,值表中列出所有可能的值,当表达式与值表中的任意一个匹配时返回TRUE,否则返回FALSE
- 空值比较
<表达式> IS [NOT] NULL
当需要判定一个表达式的值是否为空值时,使用IS NULL关键字
子查询
- IN子查询
<表达式>[NOT] IN (<子查询>)
用于进行一个给定值是否在子查询结果集中的判定。
当表达式与子查询的结果表中的某个值相等时,IN谓词返回TRUE,否则返回FALSE,
若使用了NOT则返回的值刚好相反。
- 比较子查询
<表达式>{<|<=|=|>|>=|<>|!=} {ALL|SOME|ANY}(<子查询>)
它是IN子查询的扩展,它使表达式的值与子查询的结果进行运算
其中ALL、SOME、ANY关键字说明对比较运算的限制,
ALL指定表达式要与子查询结果集中的每个值都要进行比较,
当表达式与每个值都满足比较的关系时,才返回TRUE,否则返回FALSE。
SOME或ANY指定表达式只要与子查询结果集中的某个值满足比较关系时,
就返回TRUE,否则返回FALSE。
- EXISTS子查询
[NOT] EXISTS(<子查询>)
EXISTS谓词用于测试子查询的结果是否为空表,若子查询的结果集不为空,
则EXISTS返回TRUE,否则返回FALSE。NOT EXISTS与此相反
GROUP BY子句
GROUP BY [ALL]<分组表达式>[,...]
GROUP BY子句用于对表或视图中的数据按字段分组
分组表达式通常包含字段名,指定ALL将显示所有组,
使用GROUP BY子句后,SELECT中的列表只能包含在GROUP BY中
指出的列或在统计函数中指定列。
HAVING子句
HAVING <条件表达式>
使用GROUP BY子句和统计函数后,还可以使用HAVING子句对分组数据做进一步的筛选。
ORDER BY子句
ORDER BY {<排序表达式>[ASC|DESC]}[,...]
ASC表示升序排列,DESC表示降序排列,系统默认值为ASC。
2、INSERT:插入记录
- 单条插入
INSERT INTO <表名>[<列名1>,<列名2>,...]
VALUES(<列值1>,<列值2>,...);
说明:
1、在插入时,列表值必须与列名表顺序和数据类型一致,
如果不指定表名后面的列名列表,则在VALUES子句中要给出每一列的值,
VALUES中的值要与原表中字段的顺序和数据类型一致,而且不能缺少字段项。
2、VALUES中描述的值可以是一个常量、变量或一个表达式。
字符串类型的字段必须用单引号括起来
3、如果列值为空,则值必须置为NULL,如果列值指定为该列的默认值,
则用DEFAULT,这要求定义表时必须指定该列的默认值
4、在对表进行插入操作时,若新插入的行中所有可取空值的列值均取空值,
则可以在INSERT语句中通过列表指出插入的行值中所包含非空的列,
而在VALUES中只要给出这些列的值即可。
- 结果集插入
INSERT INTO <表名>
<结果集>
3、UPDATE:修改表中记录
UPDATE <表名>
SET<列名>={<新值>|<表达式>}[,...]
[WHERE<条件表达式>]
功能:在指定表的满足条件的记录中,由SET指定的各列的列值设置为SET指定的新值,
若不使用WHERE子句,则更新所有记录的指定列值。
4、DELETE:删除表中数据
DELETE FROM <表名>
[WHERE<条件表达式>]
功能:从指定的表中删除满足条件的行,若省略WHERE子句,则表示删除所有行