创建、更改和删除表
本文目录
创建表
约束
使用DEFAULT确定默认值
使用PRIMARY KEY指定主键
使用FOREIGN KEY指定外键
使用UNIQUE确保值唯一
使用CHECK创建检查约束
使用CREATE TEMPORARY TABLE创建临时表
使用CREATE TABLE AS利用已存在表创建新表
使用ALTER TABLE修改表
使用DROP TABLE删除表
创建表
要创建表,需要定义如下内容:
1.表名
2.列名
3.列的数据类型
4.列的默认值
5.约束
表名在数据库中必须唯一,列名在表中必须唯一。
可以用CREATE TABLE语句创建新表,一般的语法如下:
CREATE TABLE table ( column1 data_type1 [col_constraints1], column2 data_type2 [col_constraints2], … columnN data_typeN [col_constraintsN], [, table_constraint1] [, table_constraint2] … [, table_constraintN] );
每个列包含列名、数据类型,以及可选的一个或多个列约束的列表。
可选的表约束列表放在最后的列定义之后。
约束
约束定义了列允许的值的规则。DBMS使用这些规则自动强制性地保证数据库信息的完整性。
NOT NULL 阻止向列中插入空值
PRIMARY KEY 设置表的主键列
FOREIGN KEY 设置表的外键列
UNIQUE 阻止向列中插入重复的值
CHECK 使用逻辑(布尔)表达式限制插入列中的值
依据使用环境,约束分为列约束和表约束。
如果不显示命名约束,DBMS将自动产生并分配约束的名称。
系统分配的名称经常包含随机的字符串并且使用起来很麻烦,所以应该用CONSTRAINT子句分配自定义的约束名。
使用DEFAULT确定默认值
在CREATE TABLE列定义中使用关键字DEFAULT定义默认值。
如果插入行时没有给出列的值,应用列的默认值。
如果没有指定默认值,就认为是NULL。
使用PRIMARY KEY指定主键
主键唯一标识出表的每一行。
没有两行拥有相同主键。
主键不允许为空值。
每个表只能有一个主键。
单列键是简单键,多列键是组合键。
在CREATE TABLE的定义中使用关键字PRIMARY KEY定义主键约束。
主键值通常在插入后不再改变。
使用FOREIGN KEY指定外键
外键是表的一列(或一组列),它的值联系或引用其他表的值。
外键确保表中的行,在另外被称作引用表或父表的表中有相对应的行。
外键不像主键,允许空值。
外键值通常不是唯一的。
不同表的外键列可以引用父表的同一列。
在CREAT TABLE中使用关键字FOREIGN KEY或REFERENCES来定义外键约束。
外键和它的父键可以有不同的列名,但是必须有相同的数据类型。
FOREIGN KEY列不一定非要引用另一个表的PRIMARY KEY列,它也可以引用另一个表的UNIQUE列。
使用UNIQUE确保值唯一
唯一约束确保列(列集)没有重复的值。
除了唯一列可以包含空值和表可以包含多个唯一列,唯一约束和主键约束没有别的区别。
单键列是简单约束,多键列是唯一约束。
使用CHECK创建检查约束
前面对插入值的约束仅是它所在列的数据类型、长度、范围。
可以加入检查约束来进一步限制列(列集)可以接受的值。
在CREAT TABLE中使用关键字CHECK创建检查约束。
使用CREATE TEMPORARY TABLE创建临时表
非临时表称作基础表,它们持久保存数据直到显式删除(DROP)表为止。
SQL允许创建临时表来存储中间结果。
临时表将复杂耗时的查询结果存储起来,在随后的查询中重复使用这个结果。在会话或事物结束时,DBMS能够自动清空临时表。
使用标准的CREATE TABLE,在关键字TABLE之前加上关键字GLOBAL TEMPORARY或LOCAL TEMPORARY就可以创建临时表。
临时表也可以自己删除而不是等DBMS来释放内存。
使用CREATE TABLE AS利用已存在表创建新表
CREATE TABLE AS语句创建新表且向其中填充SELECT的结果。
它类似于使用CREATE TABLE创建空表,然后使用INSERT SELECT填充表。
CREATE TABLE AS通常被用于如下操作:存档、备份、创建快照、快速复制表结构但不包含数据、创建测试数据。
语法是:
CREATE TABLE new_table AS subquery;
new_table是要创建的表的名称,subquery是一个返回插入到new_table表行的SELECT语句。
使用ALTER TABLE修改表
使用ALTER TABLE语句来增加、修改、删除列和约束,可以修改表。
ALTER TABLE table alter_table_action
table是要修改的表名,alter_table_action是以ADD、ALTER或DROP开始表明要采取行动的子句。
使用DROP TABLE删除表
使用DROP TABLE语句从数据库删除表。
DELETE FROM table是清空表,删除表和删除表中的所有行的内容不同。
PS:
不同的数据库可能会有细节差异,到时候针对具体情况再看相关文档吧。
推荐sql软件:http://www.sqliteexpert.com/