数据库与表基础
掌握数据库的创建、修改、删除
掌握表的定义与数据类型
能独立设计基础表结构
核心讲解
(1)数据库操作
创建:
CREATE DATABASE 库名;修改:
ALTER DATABASE 库名 选项;(改名字、改所有者)删除:
DROP DATABASE 库名;注意:不能在当前数据库里删自己,要切换到其他库再删
(2)模式 Schema
数据库下的命名空间,用来分类管理数据库对象,默认 public 模式。
创建:
CREATE SCHEMA 模式名;作用:分模块管理、权限控制、避免同名冲突
(3)常用数据类型
表格
分类 | 类型 | 说明 |
|---|---|---|
整数 |
| 2/4/8 字节整数,最常用 int |
自增 |
| 自增整数,主键常用 |
小数 |
| 精确小数,金融用,对应 decimal |
浮点 |
| 单 / 双精度浮点数 |
字符串 |
| 变长 / 定长字符串 |
文本 |
| 不限长度文本 |
布尔 |
| true/false |
日期时间 |
| 日期 / 时间 / 日期时间 |
二进制 |
| 二进制数据 |
JSON |
| JSON 文本 / 二进制 JSON,推荐 jsonb |
数组 |
| 比如 int []、text [] |
(4)表操作
创建:
CREATE TABLE 表名 (字段 类型 约束, ...);修改:
ALTER TABLE 表名 ADD/DROP/ALTER 字段...;删除:
DROP TABLE 表名;清空:
TRUNCATE TABLE 表名;
代码示例
-- 1. 创建数据库
CREATE DATABASE school_db;
-- 切换数据库
\c school_db
-- 2. 创建学生表
CREATE TABLE student (
id serial PRIMARY KEY, -- 自增主键
stu_no varchar(20) UNIQUE NOT NULL, -- 学号,唯一非空
name varchar(50) NOT NULL, -- 姓名,非空
age int CHECK (age > 0 AND age < 120), -- 年龄,检查约束
gender char(1),
create_time timestamp DEFAULT CURRENT_TIMESTAMP -- 创建时间,默认当前时间
);
-- 3. 查看表结构
\d student
-- 4. 修改表:添加字段
ALTER TABLE student ADD COLUMN address varchar(200);
-- 修改字段类型
ALTER TABLE student ALTER COLUMN address TYPE varchar(300);
-- 删除字段
ALTER TABLE student DROP COLUMN address;
-- 5. 清空表
-- TRUNCATE TABLE student;
-- 6. 删除表
-- DROP TABLE student;
常见误区
自增用 auto_increment:那是 MySQL 的语法,PG 用
serial或者GENERATED AS IDENTITY字符串用双引号:字符串值用单引号,双引号是用来引用标识符的
删库直接执行:生产环境删库删表要极度谨慎,先备份再操作
varchar 必须加长度:PG 的 varchar 可以不加长度,就是不限长度,但建议规范长度
课后练习
创建一个商品数据库
设计商品表:id、名称、价格、库存、描述、创建时间
添加一个分类字段,然后修改类型
思考:为什么推荐用 serial 或者 identity 做自增主键?

