SQL语言(二)表

一、创建表

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子句,则表示删除所有行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值