SQL数据库的建库建表基础操作
在关系型数据库管理系统中,SQL(Structured Query Language)是核心操作语言,用于管理数据库和表结构,建库建表是数据库开发的起点,合理的数据库设计能提升数据存储效率和查询性能,本文将详细介绍SQL数据库的建库建表流程,包括基本语法、常见参数及注意事项。

创建数据库
创建数据库是使用SQL的第一步,其基本语法为:
CREATE DATABASE database_name;
database_name为自定义的数据库名称,需遵循标识符命名规则(如不能包含空格、避免保留字等),创建一个名为company_db的数据库:
CREATE DATABASE company_db;
在实际应用中,创建数据库时可指定字符集和排序规则,以确保数据兼容性。
CREATE DATABASE company_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
utf8mb4支持完整的Unicode字符,包括Emoji表情,适合多语言场景;utf8mb4_unicode_ci是常用的排序规则,区分大小写且支持多语言排序。
若需判断数据库是否存在再创建,可使用IF NOT EXISTS避免报错:
CREATE DATABASE IF NOT EXISTS company_db;
选择数据库
创建数据库后,需通过USE语句指定当前操作的数据库:

USE company_db;
后续的建表、插入数据等操作均在此数据库上下文中执行,若需切换数据库,可重复执行USE语句。
创建表
表是数据库中存储数据的基本结构,创建表需定义列名、数据类型、约束等,基本语法为:
CREATE TABLE table_name (
column1_name data_type constraint,
column2_name data_type constraint,
...
);
列定义与数据类型
列名需唯一,数据类型决定了存储值的格式,常见数据类型包括:
- 数值类型:
INT(整数)、DECIMAL(精确小数,如DECIMAL(10,2)表示10位总长,2位小数)、FLOAT(浮点数)。 - 字符串类型:
VARCHAR(可变长度字符串,如VARCHAR(50)存储最多50字符)、TEXT(长文本)。 - 日期时间类型:
DATE(日期)、DATETIME(日期时间)。
创建员工表employees:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
hire_date DATE,
salary DECIMAL(10,2)
);
约束条件
约束用于限制数据的有效性,常见约束包括:
PRIMARY KEY:主键,唯一标识表中的每一行,通常为自增整数。NOT NULL:列不能为空。UNIQUE:列值必须唯一。DEFAULT:默认值,如gender CHAR(1) DEFAULT 'M'。FOREIGN KEY:外键,用于关联其他表。
添加外键约束关联部门表:

CREATE TABLE departments (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(id)
);
查看与修改表结构
创建表后,可通过以下语句查看或修改结构:
- 查看表结构:
DESCRIBE table_name; - 添加列:
ALTER TABLE table_name ADD COLUMN column_name data_type; - 删除列:
ALTER TABLE table_name DROP COLUMN column_name; - 修改列类型:
ALTER TABLE table_name MODIFY COLUMN column_name new_data_type;
删除数据库或表
若需删除数据库或表,可使用DROP语句,但需注意数据不可恢复:
DROP TABLE table_name; DROP DATABASE database_name;
建议执行前确认数据备份,避免误操作。
建库建表的注意事项
- 命名规范:数据库、表、列名应简洁且具有描述性,避免使用特殊字符。
- 数据类型选择:根据业务需求选择合适的数据类型,如优先使用
INT而非VARCHAR存储数字。 - 索引优化:对频繁查询的列(如外键、条件列)添加索引,提升查询效率。
- 范式设计:遵循数据库范式(如第一范式、第二范式),避免数据冗余。
相关问答FAQs
Q1: 如何在建表时设置自增主键?
A1: 使用AUTO_INCREMENT属性定义自增主键,id INT AUTO_INCREMENT PRIMARY KEY,自增主键会从1开始自动递增,无需手动赋值,适合唯一标识每行记录。
Q2: 修改已存在表的结构会丢失数据吗?
A2: 通常不会丢失数据,但需谨慎操作。ALTER TABLE添加或删除列时,若列包含默认值或约束,可能影响现有数据,建议修改前备份数据,并在测试环境中验证操作。