1. 什么是数据表?

在数据库中,数据表就像一个Excel表格,用来存储结构化的数据。它由多个(字段)组成,每列定义了数据的类型(如整数、文本、日期等),而每一行代表一条具体的记录。比如,一个“学生表”可能包含“学号”“姓名”“年龄”“班级”等列,每行对应一个学生的信息。

2. 创建数据表(CREATE TABLE)

要创建数据表,需使用 CREATE TABLE 语句,语法结构如下:

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

关键要素说明
- 表名:自定义,建议见名知意(如 students)。
- 列名:自定义,避免与关键字冲突(如不要用 name 作为列名?不,name 是合法的,但需注意:MySQL 关键字需用反引号 ` 包裹,非关键字建议小写)。
- 数据类型:决定列能存储的数据类型(如整数 INT、字符串 VARCHAR、日期 DATE 等)。
- 约束条件:限制数据的规则(如主键 PRIMARY KEY、非空 NOT NULL、默认值 DEFAULT 等)。

常用数据类型示例:

数据类型 用途 示例
INT 整数 age INT(年龄)
VARCHAR(长度) 可变长度字符串(需指定长度) name VARCHAR(50)(姓名,最大长度50)
DATE 日期(格式:YYYY-MM-DD) birth_date DATE(出生日期)
DATETIME 日期时间(格式:YYYY-MM-DD HH:MM:SS) create_time DATETIME(创建时间)

约束条件示例:

  • 主键(PRIMARY KEY):唯一标识一条记录(不能重复,不能为空),通常用 INT AUTO_INCREMENT 实现自增(插入数据时无需手动指定,数据库自动分配唯一值)。
  • 非空(NOT NULL):列的值必须填写(如姓名不能为空)。
  • 默认值(DEFAULT):插入数据时若未指定该列,自动使用默认值(如年龄默认18岁)。

实战案例:创建“学生表”

-- 创建学生表,包含id(自增主键)、name(非空姓名)、age(默认18岁)、gender(默认男)、birth_date(日期)
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,         -- 主键,自增整数,唯一标识学生
    name VARCHAR(50) NOT NULL,                 -- 姓名,非空,最多50个字符
    age INT DEFAULT 18,                        -- 年龄,默认值18(若插入时不填age则用18)
    gender VARCHAR(10) DEFAULT '男',           -- 性别,默认值'男'
    birth_date DATE                            -- 出生日期,格式:YYYY-MM-DD
);

小贴士
- 自增列(AUTO_INCREMENT)只能用于整数类型,且必须是主键或唯一键。
- 字符串类型(VARCHAR)需指定长度(如 VARCHAR(50)),否则会报错。
- 列定义之间用逗号分隔,最后一列后无逗号。

3. 查看数据表结构

创建表后,可通过 DESCRIBESHOW COLUMNS 查看表的详细结构:

-- 查看students表结构
DESCRIBE students;
-- 或简写:
SHOW COLUMNS FROM students;

输出结果
会显示列名、数据类型、是否允许空(NULL/NO)、键类型(PRI 为主键)、默认值等信息。

4. 操作数据表(增删改查)

4.1 插入数据(INSERT INTO)

向表中添加新记录,语法:

INSERT INTO 表名 (列名1, 列名2, ...) VALUES (1, 2, ...);

示例:插入一条学生数据(仅指定部分列,其他列用默认值):

INSERT INTO students (name, birth_date) VALUES ('张三', '2003-05-10');
-- 注意:
-- 1. 字符串类型(如name、birth_date)需用单引号包裹,数值类型(如age)不需要。
-- 2. 因id是自增主键,插入时无需指定,数据库会自动生成id=1。
-- 3. 若省略列名列表(列顺序与表定义一致),需填写所有列的值:
INSERT INTO students VALUES (NULL, '李四', 19, '女', '2004-03-15');  -- 不推荐,易出错

4.2 查询数据(SELECT)

从表中获取数据,语法:

SELECT 列名1, 列名2, ... FROM 表名 [WHERE 条件];

示例
- 查询所有学生信息:

  SELECT * FROM students;  -- * 表示“所有列”
  • 查询年龄大于18岁的学生姓名和年龄:
  SELECT name, age FROM students WHERE age > 18;

4.3 更新数据(UPDATE)

修改表中已有记录,语法:

UPDATE 表名 SET 列名1=1, 列名2=2, ... [WHERE 条件];

关键:必须加 WHERE 条件,否则会修改表中所有记录
示例:将“张三”的年龄改为20岁:

UPDATE students SET age = 20 WHERE name = '张三';
-- 错误示例(无WHERE,危险!):UPDATE students SET age = 20; (会把所有学生的age都改为20)

4.4 删除数据(DELETE)

删除表中记录,语法:

DELETE FROM 表名 [WHERE 条件];

关键:必须加 WHERE 条件,否则会删除整个表的数据
示例:删除id=1的学生记录:

DELETE FROM students WHERE id = 1;
-- 错误示例(无WHERE,危险!):DELETE FROM students; (会清空整个表)

5. 注意事项

  1. 语法正确性
    - 字符串需用单引号(如 '张三'),数值/日期无需(如 20'2003-05-10')。
    - 列名和表名建议小写,避免与关键字冲突(如 name 合法,若用 date 需加反引号 `date`)。

  2. 数据类型匹配
    - 插入数据时,值的类型必须与列定义一致(如 VARCHAR 列不能插入数字,否则报错)。

  3. 主键唯一性
    - 自增主键(AUTO_INCREMENT)会自动生成唯一值,无需手动插入,但需避免手动插入重复主键。

  4. 避免误操作
    - UPDATEDELETE 务必加 WHERE 条件,否则后果严重!

总结

创建和操作数据表是 SQL 入门的核心技能,需掌握 CREATE TABLE 定义表结构、INSERT/SELECT/UPDATE/DELETE 增删改查,以及约束条件(主键、非空等)的使用。多练习简单示例,注意语法细节,就能快速上手!后续可进一步学习复杂查询、索引等进阶内容。

小夜