怎样使用 SQL CREATE TABLE 创建一个表?

打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

SQL 不但用于表数据的操作,还涵盖了数据库和表的所有管理使命,包括表的创建和处理。创建表通常有两种方法:

  • 使用交互式工具: 大多数数据库管理体系(DBMS)都提供了交互式工具,允许用户通过图形界面创建和管理数据库表。
  • 使用 SQL 语句: 表也可以直接通过 SQL 语句来创建和操作。
在使用程序创建表时,可以使用 SQL 的 CREATE TABLE 语句。需要留意的是,即使使用交互式工具,实际上也是在执行 SQL 语句。这些 SQL 语句由界面工具自动天生并执行,用户无需手动编写(例如,在修改现有表布局时也是云云)。
CREATE TABLE 语句允许我们定义数据库表的布局,包括列名、数据类型和束缚等。本文将详细介绍怎样使用 CREATE TABLE 语句创建一个表,并通过实际案例进行演示。
SQL CREATE TABLE语句的基本语法

CREATE TABLE语句的基本语法如下:
  1. CREATE TABLE table_name (
  2.     column1 datatype [constraint],
  3.     column2 datatype [constraint],
  4.    ...
  5. );
复制代码


  • table_name:要创建的表的名称。
  • column1、column2等:表中的列名。
  • datatype:列的数据类型,例如INT(整数)、VARCHAR(可变长度字符串)、DATE(日期)等。
  • constraint:可选的束缚条件,例如NOT NULL(非空束缚)、PRIMARY KEY(主键束缚)、FOREIGN KEY(外键束缚)等。
在创建新的表时,指定的表名必须不存在,否则会出错。
防止不测覆盖已有的表,SQL 要求起首手工删除该表,然后再重建它,而不是简单地用创建表语句覆盖它。
  1. DROP TABLE IF EXISTS user;
复制代码
数据类型介绍

在使用CREATE TABLE语句时,需要为每个列指定适当的数据类型。以下是一些常见的数据类型:
整数类型



  • INT:整数类型,通常占用 4 个字节的存储空间,可以存储从 -2147483648 到 2147483647 的整数。
  • BIGINT:大整数类型,占用 8 个字节的存储空间,可以存储更大范围的整数。
  • SMALLINT:小整数类型,占用 2 个字节的存储空间,范围通常是 -32768 到 32767。
字符串类型



  • VARCHAR(n):可变长度字符串类型,其中n表示最大长度。例如,VARCHAR(50)可以存储长度不超过 50 个字符的字符串。
  • CHAR(n):固定长度字符串类型,n表示字符串的长度。如果存储的字符串长度小于指定长度,会用空格填充。
  • TEXT:可以存储大量的文本数据。
日期和时间类型



  • DATE:用于存储日期,格式为 YYYY-MM-DD。
  • TIME:用于存储时间,格式为 HH:MM:SS。
  • DATETIME:用于存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS。
其他类型



  • BOOLEAN:布尔类型,存储TRUE或FALSE值。
  • DECIMAL(p,s):定点数类型,其中p表示总位数,s表示小数位数。例如,DECIMAL(10,2)可以存储最多 10 位数字,其中小数部门占 2 位。
束缚条件介绍

束缚条件用于限制表中数据的取值范围和完整性。以下是一些常见的束缚条件:
非空束缚(NOT NULL)

NULL 值是没有值或缺值,允许 NULL 值的列也允许在插入行时不给出该列的值。不允许 NULL 值的列不接受没有列值的行,换句话说,在插入或更新行时,该列必须有值。
每个表列要么是 NULL 列,要么是 NOT NULL 列,这种状态在创建时由表的定义规定。例如:

在上述例子中,customer_name列被定义为非空,这意味着在向表中插入数据时,必须为该列提供一个值。
如果不指定 NOT NULL,大多数 DBMS 会默认将该列指定的是 NULL 值。但并不是所有的 DBMS 都遵照这一规则。
另外,只有不允许 NULL 值的列才能作为主键。如果允许 NULL 值,则该列不能作为唯一标识,因为 NULL 表示未知或缺失的值,无法保证唯一性。
主键束缚(PRIMARY KEY)

用于唯一标识表中的每一行。一个表只能有一个主键,且主键列的值不能重复。例如:

在这个例子中,order_id列被定义为主键,确保每个订单都有一个唯一的标识符。
外键束缚(FOREIGN KEY)

用于建立两个表之间的关系。外键列的值必须在另一个表的主键列中存在。例如:

在这个例子中,orders表中的customer_id列是一个外键,它引用了customers表中的customer_id列。这确保了在orders表中插入的每个客户 ID 都在customers表中存在。
唯一束缚(UNIQUE)

确保列中的值是唯一的,但可以为空。例如:

在这个例子中,username列被定义为唯一,这意味着不能有两个用户具有相同的用户名。
查抄束缚(CHECK)

用于限制列中的值满意特定的条件。例如:

在这个例子中,age列被定义为必须大于等于 18,这是通过查抄束缚实现的。
指定默认值

SQL 允许指定默认值,在插入行时如果不给出值,DBMS 将自动采用默认值。默认值在 CREATE TABLE 语句的列定义中用关键字 DEFAULT 指定。例如:

这条语句创建 user 表,quantity 列为订单中每个物品的数量。在这个例子中,这一列的形貌增加了 DEFAULT 1,指示 DBMS,如果不给出数量则使用数量 1。默认值常常用于日期或时间戳列。
例如,通过指定引用体系日期的函数或变量,将体系日期用作默认日期。
MySQL 用户指定 DEFAULT CURRENT_DATE(),Oracle 用户指定 DEFAULT SYSDATE,而 SQL Server 用户指定 DEFAULT GETDATE()。
实际案例

假设我们要创建一个名为students的表,用于存储学生的信息。表的布局如下:
列名数据类型束缚条件idINTPRIMARY KEYnameVARCHAR(50)NOT NULLageINTCHECK (age >= 18)genderENUM(‘male’, ‘female’, ‘other’)NOT NULLmajorVARCHAR(50) 这里使用 Chat2DB AI 建表,用自然语言输入表名、列名,直接天生 SQL 语句:

点击运行,创建成功:

现在,我们可以向这个表中插入数据。例如:

如果我们实验插入一条不符合束缚条件的数据,例如年事小于 18 的学生信息,数据库将拒绝插入并返回错误信息。

执行上述插入语句时,数据库会返回错误,因为年事不符合束缚条件。
创建表时的留意事项

1. 选择合适的数据类型

根据实际需求选择合适的数据类型,避免浪费存储空间或导致数据存储禁绝确。例如,如果一个列只存储 0 或 1 两个值,可以使用BOOLEAN类型而不是INT类型。
2. 定义合理的束缚条件

束缚条件可以保证数据的完整性和划一性,但过多或不合理的束缚条件大概会影响数据的插入和更新性能。在定义束缚条件时,要考虑实际业务需求和数据的特点。
3. 考虑表的扩展性

在设计表布局时,要考虑未来大概的业务需求变革,以便表能够方便地进行扩展。例如,可以预留一些备用列,或者使用可扩展的数据类型。
4. 定名规范

为表和列选择故意义的名称,遵照一定的定名规范,以便进步代码的可读性和可维护性。例如,可以使用复数形式定名表名,使用名词定名列名。
总结

使用 SQL CREATE TABLE语句可以轻松地创建数据库表。在创建表时,需要选择合适的数据类型、定义合理的束缚条件,并考虑表的扩展性和定名规范。通过实际案例的演示,我们可以更好地理解怎样使用CREATE TABLE语句创建一个满意实际需求的表。掌握这些知识,将有助于我们更好地管理和操作数据库。

Chat2DB 文档:https://docs.chat2db.ai/zh-CN/docs/start-guide/getting-started
Chat2DB 官网:https://chat2db.ai/zh-CN
Chat2DB GitHub:https://github.com/codePhiliaX/Chat2DB

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表