【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
  • 索引管理:创建表时未直接提及,适时为经常查询的列添加索引可以显著提升查询速度。
  • 数据迁移与版本控制:在修改表结构前,考虑数据迁移和兼容性问题,必要时备份数据。对于团队开发,使用数据库迁移工具和版本控制系统管理表结构变更。
  • 安全与权限:确保仅授权用户能执行表的创建、修改和删除操作,避免数据被恶意篡改或删除。
相关推荐
于樱花森上飞舞20 分钟前
【Redis】Redis的数据结构
数据结构·数据库·redis
城数派27 分钟前
谷歌18亿建筑足迹数据集 Google Open Buildings V3
数据库·arcgis·信息可视化·数据分析·excel
ldj202029 分钟前
解决Canal 连接数据库超时问题
数据库·canal
sunwenjian88634 分钟前
MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解
android·数据库·mysql
Dxy123931021636 分钟前
Python如何使用正则判断是否是姓名
数据库·python·mysql
1688red38 分钟前
MySQL Redo Log 和 Undo Log 迁移实践文档
数据库·mysql
天若有情6731 小时前
Python精神折磨系列(完整11集·无断层版)
数据库·python·算法
ictI CABL1 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
贺小涛1 小时前
VictoriaMetrics深度解析
java·网络·数据库
lingggggaaaa1 小时前
PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
数据库·sql·安全·web安全·php