有意义的表创建
在前面的课程中,我们已经对创建表的查询有了一些了解,现在是时候深入研究一下了。
创建表与在 Java 中声明类非常相似,并且具有以下模式:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
例如,让我们编写一个查询来创建一个包含用户的表:
CREATE TABLE user (
id INT,
name VARCHAR(100),
level INT,
created_date DATE,
);
它看起来很简单,因为这里没有指出很多细微差别。
首先,表格可能有额外的设置。
其次,每一列都可以有额外的设置。
我们将从创建列的设置开始。
表中的键
除了名称和数据类型之外,表列还可以具有以下设置:
首要的关键 | 列是表的键 |
唯一键 | 所有列值必须是唯一的。 |
默认值 | 默认值 |
不为空 | 禁止接受值NULL |
自动递增 | 当新记录添加到表中时,SQL Server 将自动增加该值 |
生成的 | 计算字段 |
贮存 | 数据存储在哪里:在磁盘上还是在内存中 |
评论 | 列注释,例如当地语言的标题 |
下面我们将看看其中的一些。
首先,它是PRIMARY KEY。
大多数情况下,这是一个单独的列,名称为 id,类型为 INT。这就是所谓的表的“主键”,它的所有行都有这个键的唯一值。主要用来让其他表可以引用我们表的记录,指向它的具体记录。
其次是UNIQUE KEY。
在某些方面,它类似于 PRIMARY KEY,尽管它的语义负载完全不同。如果一列具有 UNIQUE 属性,那么该列中的所有值都必须是唯一的。UNIQUE KEY 和 PRIMARY KEY 之间区别的一个很好的例子是护照办公室的人员名单。
税号是一个 PRIMARY KEY,它用于方便地从其他表中引用合适的人。
护照号码是唯一的钥匙。没有两个人可以拥有相同的护照号码。但是,护照号码可以更改。比如改姓的时候。税号将永远留在您身边。这是PRIMARY KEY的主要任务。指定 PRIMARY KEY 的查询示例:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(100),
level INT,
created_date DATE,
);
数据类型设置
还有一些不太重要但有用的属性。
默认值
在向表中插入数据(添加新行)时,如果某些列有默认值,则可以省略它们的值。在这种情况下,SQL 服务器将简单地设置列本身的值。
从 MySQL 版本 8 开始,您可以将表达式指定为值。
不为空
如果在创建表时为一列指定了NOT NULL属性,那么SQL Server将确保不可能在该列中存储NULL值。默认情况下,任何列都可以有 NULL 值,即使是 INT 列。这对于 Java 程序员来说有点不明显。
自动递增
它通常用于列 ID。当您向表中添加新行时,您确实希望 SQL 服务器为该条目分配一个 ID。谁比服务器更清楚他在表中有多少行。特别是如果来自不同客户端的请求转到同一个 SQL 服务器。
这正是 AUTO_INCREMENT 属性的作用。添加新行时,我们不传递任何 id,SQL Server 将为该记录指定正确的 ID:它将简单地获取最后一个现有记录的 ID 并将其增加 1。该属性只能是与整数和实数类型一起使用。当然,让我们举一个创建这样一个表的例子:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
level INT DEFAULT 1,
created_date DATE NOT NULL,
);
GO TO FULL VERSION