创建表格
你可以使用 CREATE TABLE 来创建新的数据库表格
1 2 3 4 5
| CREATE TABLE IF NOT EXISTS mytable ( column DataType TableConstraint DEFAULT default_value, another_column DataType TableConstraint DEFAULT default_value, … );
|
每一行开始先是列名,然后是数据类型,表格的限制,最后是默认值。
如果已经存在了相同表名的表,那么SQL通常会抛出一个异常,所以为了避免这个我们最好使用 IF NOT EXIST 子句。
数据类型
不同的数据库支出不同的类型,但是常见的类型比如数字的,字符串,和比如时间,布尔值或者二进制数据,下面的表格里面写了一些常见的例子:
数据类型 |
描述 |
INTEGER, BOOLEAN |
整数和布尔值(0或者1) |
FLOAT, DOUBLE, REAL |
取决于这个值所需要的精度 |
CHARACTER(num_chars), VARCHAR(num_chars), TEXT |
CHAR和VARCHAR可以指定最大长度,所以在大表格查询中更为高效 |
DATE, DATETIME |
可以存储时间和时间戳来跟踪时间序列 |
BLOB |
这些二进制值通常对数据库不透明 |
表格限制
这些限制允许只有特定值才能被插入到该列中,下面列出了常用的限制:
限制 |
描述 |
PRIMARY KEY |
唯一,可以唯一确定一行 |
AUTOINCREMENT |
对于整数来说每一次插入一行就会自动增加1,不是所有数据库都支持 |
UNIQUE |
这一列的值唯一,不一定是key |
NOT NULL |
这列的值不能为空 |
FOREIGN KEY |
这个用来做一致性检查,确保这一列中每一个值都对应于另一个表格中的一行 |
下面举例:
1 2 3 4 5 6 7
| CREATE TABLE movies ( id INTEGER PRIMARY KEY, title TEXT, director TEXT, year INTEGER, length_minutes INTEGER );
|
修改表格
SQL 提供了一种通过 ALTER TABLE 来修改表格的列和限制的方法。
增加列
1 2 3
| ALTER TABLE mytable ADD column DataType OptionalTableConstraint DEFAULT default_value;
|
删除行
1 2
| ALTER TABLE mytable DROP column_to_be_deleted;
|
重命名表
1 2
| ALTER TABLE mytable RENAME TO new_table_name;
|
删除表
1
| DROP TABLE IF EXISTS mytable;
|
注意:与 DELETE 不同的是 DROP 会把表格结构也给删除了而不仅仅是清空数据
注意:和 CREATE TABLE 一样,如果删除的表不存在会抛出异常,所以最好加上 IF EXISTS
注意:当有些表格和你想删除的表格有依赖关系的时候,比如外键依赖,你必须要吗更新这所有的依赖关系或者把所有和它依赖的表全部删除。