登录 |  注册
首页 >  数据库 >  SQL >  SQL CREATE TABLE 语句:表的创建

SQL CREATE TABLE 语句:表的创建

CREATE TABLE 语句解释

一般来说,创建表的方式有两种:

  • 使用具有交互式创建和管理表的工具。

  • 直接使用 SQL 语法创建。

在使用交互式工具创建表时,实际上也是交互工具在执行自动生成的 SQL 语句,只不过这些语句不是用户编写的。

本文介绍使用 CREATE TABLE 语句创建表。

CREATE TABLE 语法

CREATE TABLE <表名>
 (
     <列名1> <数据类型> <该列所需约束>,
     <列名2> <数据类型> <该列所需约束>,
     <列名3> <数据类型> <该列所需约束>,
     <列名4> <数据类型> <该列所需约束>,
     <列名5> <数据类型> <该列所需约束>,
     ...
     <该表的约束1>,<该表的约束2>,...
 );
  • 每一列的数据类型是必须要指定的。

  • 列的约束可以在定义列时进行设置,也可以在语句末尾进行设置(但 NOT NULL 约束只能以列为单位设置)。

  • 只能使用半角英文、数字、下划线来命名表和列。且必须是半角英文开头。

  • 同一个数据库中不能有两个相同名称的表,同一个表中不能有两个相同名称的列。

SQL列数据类型

数据类型的作用:

  • 数据类型允许限制可存储在列中的数据。例如,数值数据类型列只能接受数值。

  • 数据类型允许在内部更有效地存储数据。可以用一种比文本串更简洁的格式存储数值和日期时间值。

  • 数据类型允许变换排序顺序。如果所有数据都作为串处理,则1位于10之前,而10又位于2之前(串以字典顺序排序,从左边开始比较,一次一个字符)。作为数值数据类型,数值才能正确排序。

  • 数据类型的种类很多,各个RDBMS 之间也存在很大差异。此处列举几个常用的数据类型:

INT

数值型(整数),取值范围为 -2147483648 ~ 2147483647(最大10位数)。

DECIMAL(p,s)

固定精度和小数位数的数值数据类型。p 代表精度,即小数点左右两侧数字总的位数,该精度必须是从 1 ~ 38之间的数;s 表示小数位数,小数位数必须介于 0 ~ p 之间。

CHAR(n)

字符串,取值范围 0 ~ 255 个字符。n(长度)必须在创建字段时给出。

VARCHAR(n)

可变长字符串。与 char 同为字符串类型,与 char 不同的是 char 是定长字符串类型,定长的意思就是当值的字符数未达到指定的最大长度时会用空格补齐。而 varchar 则不会,这就是可变长的意思。

DATE

日期型,格式为 yyyy-mm-dd。

DATETIME

日期型,格式为 yyyy-mm-dd hh:mm:ss。

SQL列定义常用约束

约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能。以下是几个常用约束:

NOT NULL

not null 约束强制不接受 null 值。

PRIMARY KEY

主键约束,主键必须包含唯一的值,且不能为 null 值。

FOREIGN KEY

外键约束,一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。这意味着 FOREIGN KEY 字段的值只能来至于 PRIMARY KEY 字段中的值。

UNIQUE

UNIQUE 约束确保在非主键列中不输入重复值。UNIQUE 允许 NULL 的列。

CHECK

CHECK 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

DEFAULT

DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。

IDENTITY(1,1)

自增约束,通常用作流水编号。前面的 1 表示从哪个值开始,后面的 1 表示每次自增多少。

CREATE TABLE 示例

create table `account`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) default null,
`balance` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB default charset =utf8;

本文只是介绍了 CREATE TABLE 语句创建表的基本语法,至于对数据类型、约束等内容更为详细的介绍,请关注后续文章。

上一篇: SQLCREATEDATABASE语句
下一篇: SQLALTERTABLE语句
推荐文章
  • mysql只支持一种join算法:Nested-LoopJoin(嵌套循环连接),但Nested-LoopJoin有三种变种:SimpleNested-LoopJoin,IndexNested-LoopJoin,BlockNested-LoopJoin(简单-索引-缓冲区)原理:1.SimpleNe
  • redis是一个内存数据库,一旦断电或服务器进程退出,内存数据库中的数据将全部丢失,所以需要redis持久化 redis持久化就是把数据保存在磁盘上,利用永久性存储介质将数据保存,在特定的时间将保存的数据进行恢复的工作机制redis提供两种持久化机制RDB:存储数据结果,关注点在数据AOF:存储操作
  • 通过SQL的执行过程来介绍MySQL的基础结构.     首先有一个user_info表,表里有一个id字段,执行下面这条查询语句:Select * form user_info where i
  • 索引(Index)是帮助MySQL高效获取数据的数据结构,索引的目的在于提高查询效率,就像字典和书籍的目录一样,有了目录,可以帮助你快速查找你需要的内容。可以理解为一个排好序的快速查找数据结构。也就是
  • 说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。今天我们就先来聊聊MySQL中事务的隔离性的实现原理,后续还会继续出文章分析其他特性的
  • 前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句
学习大纲