sql如何创建表

在SQL中,表是最常用的对象之一,其可以存储数据,也可以作为其他对象的基础。本文将介绍如何在SQL中创建表。

1. 创建表的基本格式

在SQL中,创建表的基本格式如下所示:

CREATE TABLE table_name (

column_name1 data_type1 column_constraint1,

column_name2 data_type2 column_constraint2,

column_name3 data_type3 column_constraint3,

...

Table_constraint

);

其中,CREATE TABLE是创建表的关键字;table_name是要创建的表的名称;括号内的部分是表的列定义,每个列都由列名称、数据类型和列约束组成;最后的Table_constraint是可选的表级约束。

1.1 列定义

列定义是创建表的核心部分,定义了表的结构和字段限制。每列都有一个名称、一个数据类型和一些可选的列级约束。

1.2 列级约束

列级约束是可以应用于单个列的限制,包括NOT NULL、PRIMARY KEY、UNIQUE、CHECK和DEFAULT等。

1.3 表级约束

表级约束是可以应用于表的限制,而不是单个列。常用的表级约束有PRIMARY KEY、UNIQUE和FOREIGN KEY等。

2. 创建表示例

下面是一个简单的创建表的示例:

CREATE TABLE employees (

emp_id INT PRIMARY KEY,

emp_name VARCHAR(50) NOT NULL,

emp_salary INT,

emp_dept VARCHAR(50),

hire_date DATE,

);

以上SQL语句创建了一个名为employees的表。该表包括了五个列,其中emp_id是主键,emp_name是非空列。

3. 数据类型

在SQL中,数据类型用于指定表中列所包含数据的类型。以下是一些常见的SQL数据类型:

CHAR: 固定长度字符串

VARCHAR: 可变长度字符串

INT: 整数

BIGINT: 大整数

DECIMAL: 定点数

FLOAT: 浮点数

DOUBLE: 高精度浮点数

DATE: 日期

TIME: 时间

DATETIME: 日期时间

3.1 字符串类型

在SQL中,字符串类型包括CHAR和VARCHAR两种。它们都用于表示文本数据,但它们的处理方式略有不同。

CHAR是一种固定长度的字符串类型,它的长度必须在创建列时指定。如果CHAR中包含较少字符,那么它的右侧将被填充空格,而较多的字符则会被截断。

与CHAR不同,VARCHAR是一种可变长度的字符串类型,其长度可以在创建列时指定,但该长度仅表示该列所能容纳的最大字符数,不需要使用整个长度。如果VARCHAR中包含较少的字符,那么它将只占用实际字符数的空间,没有填充。如果包含了较多的字符,那么VARCHAR将会被截断。

3.2 数字类型

数字类型用于存储数字数据。在SQL中,最常用的数字类型是INT和DECIMAL。

INT用于存储整数。它可以被指定为有符号或无符号。默认情况下,INT是有符号的,并且长度为4个字节。

DECIMAL是一种定点数类型,它用于存储精确小数。DECIMAL的长度由精度和标度组成。精度定义了总数字位数,而标度定义了小数点右侧的数字位数。

3.3 日期和时间类型

日期和时间类型用于存储日期和时间的值。在SQL中,最常用的日期和时间类型是DATE、TIME和DATETIME。

DATE用于存储日期,格式为YYYY-MM-DD。TIME用于存储时间,格式为HH:MM:SS。DATETIME用于存储日期时间,格式为YYYY-MM-DD HH:MM:SS。

4. 约束

在SQL中,约束用于强制表的规则。常见的约束包括PRIMARY KEY、FOREIGN KEY、CHECK和UNIQUE等。

4.1 PRIMARY KEY

PRIMARY KEY是一种唯一性约束。在表中,PRIMARY KEY用于标识唯一的记录。每个表只能有一个PRIMARY KEY。

4.2 FOREIGN KEY

FOREIGN KEY是一种引用完整性约束。它用于在两个表之间建立关系。FOREIGN KEY有两个目的:确保参照表中存在对应的值,以及保证参照表中的值必须和引用表中的值匹配。

4.3 CHECK

CHECK约束用于强制列中的值必须满足一定的逻辑条件。例如,可以使用CHECK约束确保一个货物的价格必须大于0。

4.4 UNIQUE

UNIQUE约束用于确保列中的每个值都是唯一的。与PRIMARY KEY不同,UNIQUE约束不保证该列是表中的唯一标识。

5. 示例

在下面的示例中,我们将创建两个表:一个是学生表(students),另一个是课程表(courses)。学生表包含学生ID、姓名和年龄等信息。课程表包含课程ID、课程名称和学分。

5.1 创建学生表

CREATE TABLE students(

student_id INT PRIMARY KEY,

student_name VARCHAR(50) NOT NULL,

age INT,

gender CHAR(1),

address VARCHAR(200),

create_time DATE DEFAULT CURRENT_DATE

);

以上SQL语句创建了一个名为students的表。该表包括了六个列,其中student_id是主键,student_name是非空列,create_time列设置了默认值为当前日期。

5.2 创建课程表

CREATE TABLE courses(

course_id INT PRIMARY KEY,

course_name VARCHAR(50) NOT NULL,

credit INT,

create_time DATE DEFAULT CURRENT_DATE

);

以上SQL语句创建了一个名为courses的表。该表包括了四个列,其中course_id是主键,course_name是非空列,create_time列设置了默认值为当前日期。

5.3 创建成绩表并建立关系

成绩表(score)将学生表和课程表关联起来,它包含了学生ID、课程ID和成绩等信息。我们将使用FOREIGN KEY约束建立这两个表之间的关系。

CREATE TABLE score(

student_id INT,

course_id INT,

score INTEGER,

PRIMARY KEY(student_id, course_id),

FOREIGN KEY(student_id) REFERENCES students(student_id),

FOREIGN KEY(course_id) REFERENCES courses(course_id)

);

以上SQL语句创建了一个名为score的表。该表包括了三个列,其中student_idcourse_id两列联合构成主键,两个FOREIGN KEY约束分别用于与学生表和课程表建立关系。

6. 总结

在SQL中,创建表是最常用的命令之一。创建表需要指定表名、列名和列约束等信息。表的列约束包括NOT NULL、PRIMARY KEY、UNIQUE、CHECK和DEFAULT等。对表进行约束可以帮助你确保数据的完整性,防止不必要的异常问题。

上一篇:sql如何去重查询

下一篇:sql好学吗?

数据库标签