【SQL】SQL表构建实战:从零开始打造数据基石

目录

[SQL入门教程 - 表的创建与管理](#SQL入门教程 - 表的创建与管理)

[1. 创建表及定义字段](#1. 创建表及定义字段)

[2. 描述字段的数据类型与约束](#2. 描述字段的数据类型与约束)

[3. 查看表结构](#3. 查看表结构)

[4. 修改与删除表](#4. 修改与删除表)

注意


SQL入门教程 - 表的创建与管理

数据库中的表是数据存储和组织的基本单元,每一行代表一条记录,每一列代表一个字段(属性)。SQL提供了强大的语句来创建、查看、修改和删除表,这些操作是数据库管理的基石。本节将深入解析如何使用SQL语言来高效地管理表结构,通过理论与实例结合的方式,帮助初学者熟练掌握这些核心技能。

1. 创建表及定义字段

创建表是通过CREATE TABLE命令完成的,该命令允许你定义表名、列名、数据类型以及字段上的约束条件。

基本语法:

sql 复制代码
CREATE TABLE 表名 (
    列名1 数据类型 [约束条件],
    列名2 数据类型 [约束条件],
    ...
);

示例:

sql 复制代码
CREATE TABLE Students (
    StudentID INT PRIMARY KEY,
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Age INT CHECK (Age >= 0 AND Age <= 150),
    EnrollmentDate DATE
);

Students表包含了五个字段,其中StudentID设为主键,确保了唯一性;FirstNameLastName被设定为非空(NOT NULL);Age字段使用CHECK约束来限制年龄范围。

2. 描述字段的数据类型与约束

数据类型定义了列可以存储的数据种类,约束则用来限制数据的输入值,保证数据的完整性和一致性。

  • 数据类型:

    • INT: 整数类型,常用于存储整数数据。
    • VARCHAR(n): 变长字符串类型,n表示最大字符数。
    • DATE: 日期类型,存储日期值。
    • DECIMAL(p,s): 浮点数类型,p是总位数,s是小数位数。
    • BOOLEAN: 布尔类型,存储真或假值。
  • 约束:

    • PRIMARY KEY: 主键约束,确保列的唯一性,且不能为NULL。
    • NOT NULL: 非空约束,指定列的值不能为空。
    • UNIQUE: 唯一约束,保证列中所有值都是唯一的。
    • CHECK: 检查约束,用于限制列中的值必须满足特定条件。
    • FOREIGN KEY: 外键约束,用于建立表之间的关联。
3. 查看表结构

了解表的结构,包括字段名、数据类型和约束,对于管理和维护数据库至关重要。这可以通过DESCRIBEINFORMATION_SCHEMA来实现。

示例:

sql 复制代码
DESCRIBE Students;  -- MySQL, MariaDB, SQLite
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Students';  -- SQL Server, PostgreSQL, Oracle
4. 修改与删除表

随着业务需求的变化,有时需要修改表结构或彻底删除不再需要的表。

  • 修改表 :
    • 添加列: ALTER TABLE 表名 ADD 列名 数据类型 [约束]
    • 修改列: ALTER TABLE 表名 MODIFY 列名 新数据类型 [新约束]
    • 删除列: ALTER TABLE 表名 DROP COLUMN 列名
    • 更改列名或类型: ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新约束]

示例:

sql 复制代码
ALTER TABLE Students ADD Email VARCHAR(100);
  • 删除表 : 删除表操作通过DROP TABLE命令执行,此操作不可逆,需谨慎操作。
注意
  • 数据类型选择 :合理选择数据类型可以节省空间、提高效率。例如,对于大量文本数据使用TEXT而不是VARCHAR
  • 索引管理:创建表时未直接提及,适时为经常查询的列添加索引可以显著提升查询速度。
  • 数据迁移与版本控制:在修改表结构前,考虑数据迁移和兼容性问题,必要时备份数据。对于团队开发,使用数据库迁移工具和版本控制系统管理表结构变更。
  • 安全与权限:确保仅授权用户能执行表的创建、修改和删除操作,避免数据被恶意篡改或删除。
相关推荐
爱可生开源社区18 小时前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1771 天前
《从零搭建NestJS项目》
数据库·typescript
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest2 天前
数据库SQL学习
数据库·sql
jnrjian2 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
十月南城2 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
Henry Zhu1232 天前
数据库:并发控制基本概念
服务器·数据库