学习使用CREATE TABLE语句创建数据表,包括定义列的数据类型(如整数型、字符型、日期型等)、约束条件(如主键、外键、唯一性约束、非空约束等)

本文章为 SQL Server 的详细学习大纲 里面的一个子章节的详细介绍,如果了解相关的其他内容,可以从这里面查看,或者查看SQL Server专栏,里面有些文章可能并不在 SQL Server 的详细学习大纲 里面,是一些补充内容。

以下是关于使用 SQL Server 中的 CREATE TABLE 语句创建数据表的详细介绍:

基本语法格式

CREATE TABLE [database_name].[schema_name].[table_name] (
    column1_name data_type [column_constraint],
    column2_name data_type [column_constraint],
   ...
    [table_constraint]
);

其中:

  • [database_name] 是数据库名称(如果不指定,则在当前数据库中创建)。
  • [schema_name] 为架构名称(若不写,通常使用默认架构,如 dbo)。
  • [table_name] 是要创建的表的名称。
  • column1_namecolumn2_name 等是表中各列的名称。
  • data_type 表示对应列的数据类型(如整数型、字符型、日期型等)。
  • [column_constraint] 是列级别的约束条件,[table_constraint] 是表级别的约束条件。

定义列的数据类型示例

  1. 整数型
CREATE TABLE Students (
    StudentID int,  -- int类型,用于存储普通范围的整数,如学生编号
    Age smallint  -- smallint类型,适合存储像年龄这种较小范围的整数
);

这里定义了 StudentID 列使用 int 数据类型,可存储类似学生编号这样的整数值;Age 列使用 smallint 类型来存储年龄信息。

  1. 字符型
CREATE TABLE Employees (
    EmployeeName varchar(50),  -- varchar类型,可变长度字符,最大长度50,存储员工姓名
    Department char(10)  -- char类型,固定长度10的字符,存储部门名称
);

EmployeeName 列使用 varchar 类型,因为员工姓名长度不一,使用可变长节省空间;而 Department 列用 char 类型,假设部门名称统一设定为固定长度的字符表示。

  1. 日期型
CREATE TABLE Orders (
    OrderDate date,  -- date类型,存储订单日期,只包含年月日信息
    DeliveryTime time  -- time类型,用于记录订单预计送达时间,只含时分秒信息
);

此例中,OrderDate 列通过 date 类型记录订单产生的日期,DeliveryTime 列使用 time 类型来存放预计送达时间。

定义约束条件示例

  1. 主键约束(Primary Key)
    • 列级定义主键
CREATE TABLE Products (
    ProductID int PRIMARY KEY,  -- 在列定义时直接指定为主键,确保ProductID列值唯一且非空
    ProductName varchar(100),
    Price money
);
- **表级定义主键(常用于复合主键情况)**:
CREATE TABLE OrderDetails (
    OrderID int,
    ProductID int,
    Quantity int,
    PRIMARY KEY (OrderID, ProductID)  -- 表级定义,说明OrderID和ProductID两个列组合起来作为主键,整体具有唯一性
);
  1. 外键约束(Foreign Key)
    假设存在 Customers 表(含 CustomerID 主键)和 Orders 表,要在 Orders 表中通过外键关联到 Customers 表的 CustomerID
CREATE TABLE Customers (
    CustomerID int PRIMARY KEY,
    CustomerName varchar(100)
);

CREATE TABLE Orders (
    OrderID int PRIMARY KEY,
    CustomerID int,
    OrderDate date,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)  -- 定义外键,指定Orders表中的CustomerID列参照Customers表的CustomerID主键列
);
  1. 唯一性约束(Unique)
CREATE TABLE Employees (
    EmployeeID int PRIMARY KEY,
    EmployeeEmail varchar(100) UNIQUE,  -- 定义EmployeeEmail列值在表内必须唯一,用于确保员工邮箱不重复
    EmployeeName varchar(100)
);
  1. 非空约束(Not Null)
CREATE TABLE Courses (
    CourseID int PRIMARY KEY,
    CourseName varchar(100) NOT NULL,  -- 规定CourseName列不能为空,必须有具体的课程名称
    Credit int
);

综合示例

以下创建一个相对复杂些的 Employees 表,包含多种数据类型和约束条件:

CREATE TABLE Employees (
    EmployeeID int PRIMARY KEY,
    EmployeeName varchar(100) NOT NULL,
    DepartmentID int,
    HireDate date NOT NULL,
    Email varchar(100) UNIQUE,
    Salary money,
    FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)  -- 假设存在Departments表,通过外键关联部门
);

这个表中,EmployeeID 作为主键确保每行记录的唯一性;EmployeeNameHireDate 列添加了非空约束;Email 列有唯一性约束;同时通过外键约束将 DepartmentID 列与其他 Departments 表中的对应主键列关联起来,保证数据的参照完整性。

总之,通过合理运用 CREATE TABLE 语句中数据类型和各类约束条件的定义,可以创建结构清晰、符合业务逻辑且数据完整性良好的数据库表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生命不息-学无止境

你的每一份支持都是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值