它可以存储64KB的数据
发布时间:2025-06-24 17:27:52 作者:北方职教升学中心 阅读量:531
若数据需要长期保存,DATETIME
更合适。比如,学生选课表里就会引用学生表的主键,确保选课记录是符合逻辑的。这样我们可以快速锁定唯一一条数据,不会出现混淆。
TEXT:大段文本数据类型,适合描述性内容,比如“文章内容”或“评论”。字符串类型
students
和courses
表,以确保每条选课记录都是有效的。ALTER TABLE
命令添加、数据类型- 一、数字类型
- 二、
YEAR:存储年份,格式为
YYYY
,比如2024
,适合只需要年份的场景,如“入学年份”。
小贴士:如果不确定表是否存在,可以加上IF EXISTS
,避免报错:DROPTABLEIFEXISTSstudents;
4. 修改表结构:ALTER TABLE
有时我们可能需要调整表的结构,比如加列、查看已经盖好的房子,以及“拆掉”不需要的房子!
1. 创建数据库:CREATE DATABASE
我们要“盖”一间新房子(数据库),在MySQL里使用
CREATE DATABASE
这个命令来实现。4.3 修改列的数据类型
如果我们发现
age
这列使用INT
类型不太合适,想改成TINYINT
(占用更少存储空间),可以这样写:ALTERTABLEstudentsMODIFYage TINYINT;
这样
age
列的数据类型就从INT
改成了TINYINT
,在节省存储的同时,更符合年龄数据的大小范围。- DATE:专门用来存日期,适合入学日期等字段。
CHAR(n):固定长度的字符串,
n
为最大长度。为了把每个“格子”设计得恰到好处,我们要了解MySQL支持的数据类型。
- VARCHAR(50):适合不定长的文本。
小贴士:
ENUM
适合单选选项,SET
适合多选选项,特别适合数据有固定取值的情况。 - 外键:用于建立表之间的关联,确保数据的引用完整性,可以设置级联操作。二进制类型
存储二进制数据,如图片或文件内容,可以选择Blob类型。学生姓名长度不固定,但设置成50足够大且节省空间。数据库的创建和管理
- 1. 创建数据库:CREATE DATABASE
- 注意事项:
- 2. 查看已有数据库:SHOW DATABASES
- 3. 删除数据库:DROP DATABASE
- 防止误删
- 4. 总结
- 2、
TIMESTAMP
用于带时间的日期,TIMESTAMP
还能自动记录更新。 TIME:用于存储时间,格式为
HH:MM:SS
,比如14:30:00
。合理选择数据类型不仅能提高效率,还能减少空间占用。最后,主键和外键就像是每本书的ISBN码和分类标签。用于科学计算、
例子:
DESCRIBEstudents;
执行后会看到表的结构,每一列的名字、主键(Primary Key)让每条数据都能被唯一识别,而外键(Foreign Key)让表之间形成关联关系,比如学生和选课数据的匹配。
定义主键
在创建表时,我们可以通过PRIMARY KEY
关键字来定义主键:
例子:
假设我们有一个学生表students
,想让每个学生都拥有独一无二的学号student_id
作为主键:
CREATETABLEstudents (student_id INTPRIMARYKEY,-- 学号,主键name VARCHAR(50),-- 姓名age INT-- 年龄);
这里,student_id
就是主键,这样即使有重名的学生,我们也能通过学号准确找到唯一的学生记录。删除或修改列。
通过选择合适的数据类型,我们不仅能优化存储,还能加速查询速度,提升数据库整体性能!
4、BLOB、我们现在把这些数据加进来:-- 向students表插入一条学生记录INSERTINTOstudents (student_id,name,age,enrollment_date)VALUES(1,'张三',20,'2024-10-26');-- 向courses表插入一条课程记录INSERTINTOcourses (course_id,course_name)VALUES(101,'数据库基础');-- 在enrollments表中插入张三的选课记录INSERTINTOenrollments (enrollment_id,student_id,course_id,enrollment_date)VALUES(1,1,101,'2024-10-27');
-- 向students表插入一条学生记录INSERTINTOstudents (student_id,name,age,enrollment_date)VALUES(1,'张三',20,'2024-10-26');-- 向courses表插入一条课程记录INSERTINTOcourses (course_id,course_name)VALUES(101,'数据库基础');-- 在enrollments表中插入张三的选课记录INSERTINTOenrollments (enrollment_id,student_id,course_id,enrollment_date)VALUES(1,1,101,'2024-10-27');
因为enrollments
表的student_id
和course_id
字段分别引用了students
和courses
表,所以只有当students
和courses
表里有匹配的student_id
和course_id
时,选课记录才会插入成功。
2. 表的创建与管理
接下来,在student_management
数据库里创建几个表,比如students
(学生基本信息)和courses
(课程信息)。LONGBLOB:分别对应不同大小的二进制数据存储,适合存储图片、这些约束条件帮助我们建立数据的唯一性和一致性,让整个数据库结构更加清晰、可以这样写:
CREATETABLEstudents (student_id INTPRIMARYKEY,-- 学号,主键name VARCHAR(50)NOTNULL,-- 姓名,不能为空age INT,-- 年龄class VARCHAR(10)-- 班级);
解释一下:
students
是表的名字。定义语法为ENUM('男', '女')
。创建后,我们就可以在这个数据库里建各种数据表,存放我们想要的内容。数字类型数字类型专门用来存放整数、
- TINYINT:适合小范围整数,比如学生的年龄,因为年龄通常小于128。
student_id
是学号,用INT
表示整数,并设为主键(PRIMARY KEY
),这样学号在表里不会重复。适合固定长度的内容,比如“状态代码”。“姓名”、文章目录
- 写在前面:
- 1、
注意:如果要处理金额或财务数据,推荐用
DECIMAL
,这样可以避免精度问题。例子:
比如在“学生选课”表enrollments
里,可能用“学号”和“课程编号”组合来唯一标识一个选课记录:CREATETABLEenrollments (student_id INT,course_id INT,PRIMARYKEY(student_id,course_id));
这里,
student_id
和course_id
组合成主键,确保一个学生在同一课程只能选一次。1. 创建数据表:CREATE TABLE
创建表时,我们需要指定表的名字和它的结构,包括列的名字、表就像Excel里的工作表,不同表用来放不同类型的数据。适合仅需日期的场景,如“出生日期”。
2. 外键(Foreign Key):建立表与表之间的关联
外键可以理解为一张表里某个字段“引用”了另一张表的主键,目的是建立起表与表之间的关联关系,确保数据的完整性。
- 字符串:
CHAR
和VARCHAR
区别在于存储长度是否固定,TEXT
用于较长的文本。 - 用
SHOW DATABASES;
来查看当前所有的数据库。日期和时间类型 - 四、
定义外键
在创建表时,用
FOREIGN KEY
来定义外键,并用REFERENCES
指定要引用的表和字段。如果设置CHAR(5)
,那么每个值都会占用5个字符的空间,不足的地方用空格填充。小贴士:
TIMESTAMP
非常适合自动记录数据更新时间,但有2038年限制(超出将无法使用)。需要高精度的场景。小贴士:尽量用合适长度的字符串类型,过长的数据会影响性能,
CHAR
和VARCHAR
要特别注意设定合理的最大长度。- 用
DROP DATABASE 数据库名;
来删除不需要的数据库,但要小心,这个操作是不可逆的!2、
- 删除表:用
DROP TABLE 表名
命令删除整个表和表中的数据。数据库的创建和管理在MySQL里,数据库就像一间房子,里面存放着各种数据表,表里放的则是具体的数据。主键和外键
在数据库的世界里,主键(Primary Key)和外键(Foreign Key)就像一个人的身份证和亲属关系。接下来我们就一步步地创建数据库、枚举与集合类型
- 五、
4.4 重命名列
假如我们想把“student_id”重命名为“id”,可以用下面的语法:
ALTERTABLEstudentsCHANGE student_id id INT;
这里不仅重命名了,还得重新指定数据类型(
INT
)。合理。name
和course_name
选用VARCHAR
,是因为这些字段长度不固定,VARCHAR
会根据内容长度动态分配空间。文本用VARCHAR
、例子:
给enrollments
表设置级联删除,当students
表中的学生被删除时,自动删除该学生的所有选课记录:CREATETABLEenrollments (enrollment_id INTPRIMARYKEY,student_id INT,course_id INT,FOREIGNKEY(student_id)REFERENCESstudents(student_id)ONDELETECASCADE);
这样,当
students
表里的某个学生记录被删除,enrollments
表中该学生的选课记录也会自动删除,保持数据一致性。看一下我们在上面选择的数据类型:- INT:适合数字,但范围较大。字符串类型
字符串类型用来存储文本数据,从单个字符到段落都可以。
语法:
DROPDATABASE数据库名;
举个例子:
假设我们不再需要my_school
数据库了,可以这样删除它:DROPDATABASEmy_school;
这样,MySQL会彻底删除
my_school
数据库以及其中所有的数据表和数据!
要注意:删除的数据库无法恢复,因此在执行前,一定要确认!防止误删
为了防止手误删除已有的数据库,可以加个
IF EXISTS
,如果数据库不存在就不会报错:DROPDATABASEIFEXISTSmy_school;
4. 总结
- 用
CREATE DATABASE 数据库名;
来创建数据库。 名字不能重复!如果数据库里已经有同名的数据库,再次创建时就会报错。
1、
2. 查看表结构:DESCRIBE 表名
创建好表后,我们可以用
DESCRIBE
命令看看表的结构,确保它和我们预想的一样。枚举与集合类型有时我们有固定的几个选项,比如性别(男、命令是这样的:
CREATEDATABASEmy_school;
输入这条命令,MySQL就会帮我们创建一个名为
my_school
的新数据库。TINYBLOB、修改表结构,以及删除不需要的表。
小贴士:如果表里的二进制数据多且较大,可能会影响性能,建议只存放关键数据,把文件链接存在外部存储更合适。
注意事项:
数据库名字要简洁、主键帮助每一行数据都有唯一“身份”,外键则帮助我们建立起表与表之间的“亲戚”关系。
VARCHAR(n):可变长度字符串,适合一般的文本数据,比如“姓名”和“地址”,可以设置最大长度
n
。4.1 添加新列
假设
students
表里我们还想加一列“邮箱地址”,可以这样做:ALTERTABLEstudentsADDemail VARCHAR(100);
这样
students
表里就多了一列email
,可以用来存每位学生的邮箱地址。二进制类型- 数据类型选择小总结
- 4、
- SMALLINT:存放范围为-32,768到32,767,适合不太大的数值,比如“库存数量”。
- MEDIUMINT:存放范围为-8,388,608到8,388,607,可以用来存稍大一点的数据,比如“ID编号”。
- 用
3. 数据类型的选择
给每个字段选择合适的数据类型非常重要。
小贴士:用整数时尽量选小一点的类型,减少存储空间,比如
TINYINT
比INT
更省空间。我们可以这样设置外键:CREATETABLEenrollments (enrollment_id INTPRIMARYKEY,-- 选课记录IDstudent_id INT,-- 学生IDcourse_id INT,-- 课程IDFOREIGNKEY(student_id)REFERENCESstudents(student_id));
这里,
student_id
是enrollments
表的外键,它引用了students
表里的student_id
。复合主键
如果一个字段不够区分数据,也可以用多个字段组合成主键,这叫复合主键。
例子:
假设我们有一个学生选课表enrollments
,它里头的student_id
应该来自学生表的students
表中。所以,选择正确的数据类型非常重要,不仅关系到存储效率,还影响查询速度!下面我们一起来认识MySQL中常用的数据类型,并了解它们的“性格特点”,好让每个字段都挑到合适的“衣服”。表的创建与管理在数据库中,数据是按“表”来存放的,每个表像是一张电子表格,有列(字段)和行(数据条目)。另外,MySQL默认还会有一些系统数据库,比如
information_schema
和mysql
,这些是MySQL系统自己用的,通常不要删除它们。student_id
和course_id
是外键,分别引用students
和courses
表,确保选课记录里的学生和课程必须是有效的。外键的作用
- 保证数据的引用完整性:外键确保表与表之间的“关系”是正确的。
- INT:存放范围为-2,147,483,648到2,147,483,647,常用类型,适合大多数的整数场景。特别适合记录“最后更新时间”。
3. 总结
- 主键:唯一标识表中每一行数据,不能重复或为空。接下来,我们学习如何“盖房子”、用
CREATE TABLE
新建表结构,比如定义表里有哪些“格子”(字段)来放数据,DROP TABLE
用于删除表,ALTER TABLE
则可以灵活调整表的结构,让数据更符合需求。语法:
CREATETABLE表名 (列名1数据类型 [约束条件],列名2数据类型 [约束条件],...);
举个例子:
假设我们要建一个叫“students”的表,用来记录学生信息,包括学号、-- 创建一个叫“student_management”的数据库CREATEDATABASEstudent_management;-- 显示所有数据库,确认我们的数据库创建成功SHOWDATABASES;-- 如果哪天我们不需要这个数据库了,可以删除它DROPDATABASEstudent_management;
这样我们就创建了一个叫
student_management
的数据库,并可以用它来存放所有学生管理相关的数据。今天我们来学习如何用MySQL创建这些表、 想避免重复创建?我们可以加个
IF NOT EXISTS
条件,这样在已经存在时就不会重复创建了:CREATEDATABASEIFNOTEXISTSmy_school;
2. 查看已有数据库:SHOW DATABASES
当我们在MySQL里存了很多数据库后,可能会忘记某些数据库的名字。
- 主键:唯一标识表中每一行数据,不能重复或为空。接下来,我们学习如何“盖房子”、用
MEDIUMTEXT和LONGTEXT:分别可以存放16MB和4GB的数据,非常适合超长文本,比如“产品描述”或“日志”。
四、
student_id
和course_id
需要保持唯一性,用INT
既通用也方便。姓名、用好主键和外键,不仅让数据库的结构更清晰,还能保障数据的准确性和完整性!
5 举个栗子
假设我们要建立一个小型“学生管理系统”,包含学生的基本信息、
语法:
DROPTABLE表名;
举个例子:
假设我们不再需要“students”表了,可以这样删除:DROPTABLEstudents;
MySQL会删除
students
表以及它存放的所有数据,所以这个操作要慎重。4. 主键和外键的设置
现在,我们还可以扩展,假如有一张
enrollments
表记录学生选修的课程信息。数据类型在MySQL中,我们的表就像装东西的“架子”,每一列(字段)都是用来装特定类型的数据。
- 表的主键只能有一个,可以是单个字段,也可以是多个字段组合。
- 时间:
DATE
用于单独日期,DATETIME
、好记,可以使用下划线(_
)来连接多个单词,比如my_company
。这是一个绝佳的例子,能让我们了解数据库和表的创建管理,掌握数据类型的选择,还能了解主键和外键的用法。适合只记录时间的场景,如“电影时长”。掌握这两者的定义和作用后,不仅能提高数据的完整性,还能让查询更高效!1. 主键(Primary Key):唯一标识每一行数据
主键的作用是确保表中每一行数据的唯一性,就像身份证一样,主键不能重复,也不能为空。
接下来,在数据库中创建存放具体数据的“架子”,也就是表的创建与管理。
一、
- DOUBLE:精度比
FLOAT
高,可以表示非常精确的小数(约15位有效数字)。年龄和班级。主键的特点:
- 唯一性:每个主键的值都要独一无二。
3. 删除数据库:DROP DATABASE
当一个数据库已经没有用处了,我们可以把这个“房子”拆掉。
student_id
和course_id
作为主键,确保每条记录都能被唯一识别。-- 创建学生选课表CREATETABLEenrollments (enrollment_id INTPRIMARYKEY,-- 选课记录ID,主键student_id INT,-- 学生ID,外键,链接到students表course_id INT,-- 课程ID,外键,链接到courses表enrollment_date DATE,-- 选课日期FOREIGNKEY(student_id)REFERENCESstudents(student_id),FOREIGNKEY(course_id)REFERENCEScourses(course_id));
enrollment_id
是enrollments
表的主键,保证每条选课记录都是唯一的。age
和class
分别表示年龄和班级,直接用INT
和VARCHAR(10)
来表示。语法:
CREATEDATABASE数据库名;
举个例子:
假设我们要创建一个叫“my_school”的数据库,用来放学校的各种数据,比如学生信息、
三、
5. 一个例子说明它们如何协作
(提前用一下插入语句,要不然没法写了~)
举个例子,假设某学生“张三”入学了,他的学生ID是
1
,课程表里有一个“数据库基础”的课程,课程ID是101
。4.2 删除列
假如我们不再需要
class
(班级)这列了,可以用下面的命令来删除它:ALTERTABLEstudentsDROPCOLUMNclass;
注意:删除列后所有数据都会一并消失,操作前要确认。
-- 选择要操作的数据库USEstudent_management;-- 创建学生信息表CREATETABLEstudents (student_id INTPRIMARYKEY,-- 学生ID,主键,独一无二name VARCHAR(50),-- 学生姓名,最多50字符age TINYINT,-- 年龄,范围足够小,用TINYINTenrollment_date DATE-- 入学日期,使用DATE类型);-- 创建课程表CREATETABLEcourses (course_id INTPRIMARYKEY,-- 课程ID,主键course_name VARCHAR(100)-- 课程名称);
- 这里我们使用了
CREATE TABLE
创建表,并为每个字段指定了合适的数据类型。它可以存储64KB的数据。 浮点数类型
- FLOAT:适合存储带小数的数据,精度一般。
这些类型让我们既节省了存储空间,又能保证数据的准确性。我们需要先建立存放数据的“库”,这就是数据库的创建和管理,通过
CREATE DATABASE
来新建一个库,并用SHOW DATABASES
查看已经存在的库,必要时还能用DROP DATABASE
清理不再需要的库。- 非空:主键字段不能有空值,这样才能确保每条数据都能被唯一识别。表的创建与管理
- 1. 创建数据表:CREATE TABLE
- 2. 查看表结构:DESCRIBE 表名
- 3. 删除数据表:DROP TABLE
- 4. 修改表结构:ALTER TABLE
- 4.1 添加新列
- 4.2 删除列
- 4.3 修改列的数据类型
- 4.4 重命名列
- 5. 总结
- 3、删列或修改某列的数据类型,这时就用
ALTER TABLE
命令。1. 数据库的创建和管理
首先,我们需要一个数据库来存放所有的表和数据。这时,可以使用
SHOW DATABASES
命令来看看有哪些“房子”已经盖好。
3、
5. 总结
- 创建表:用
CREATE TABLE 表名
命令,定义每一列的结构和约束。 - ON UPDATE CASCADE:当父表的主键被修改时,自动更新子表中的外键值。
TIMESTAMP:和
DATETIME
类似,但带有时区转换功能,自动记录UTC时间。表,挑选合适的数据类型,设置主键和外键。这种外键约束能确保所有数据之间的关系是符合逻辑的。这样,如果学生表没有这个student_id
,就不能插入对应的选课记录。不像CHAR
,VARCHAR
只占用实际存储的字符数。DATE:用于存储日期,格式为
YYYY-MM-DD
,比如2024-10-26
。女),用枚举或集合会非常方便。
五、
name
是姓名,VARCHAR(50)
表示最长50个字符,并且NOT NULL
代表这个字段不能为空。主键和外键- 1. 主键(Primary Key):唯一标识每一行数据
- 主键的特点:
- 定义主键
- 复合主键
- 2. 外键(Foreign Key):建立表与表之间的关联
- 外键的作用
- 定义外键
- 级联操作(CASCADE)
- 3. 总结
- 5 举个栗子
- 1. 数据库的创建和管理
- 2. 表的创建与管理
- 3. 数据类型的选择
- 4. 主键和外键的设置
- 5. 一个例子说明它们如何协作
写在前面:
先扔个导图
学习MySQL的基本操作,就像是搭建一个井然有序的图书馆。比例等。可用于表示一般的分数、类型,以及可能的限制条件(比如主键)。
- BIGINT:存放范围非常大(正负数范围为约±9亿亿),适合极大数值,比如“银行账户的余额”。
- 枚举:
ENUM
适合选项少且固定的单选项,SET
适合多选。 DATETIME:存储日期和时间,格式为
YYYY-MM-DD HH:MM:SS
,适合存储具体事件发生的时间点,比如“订单创建时间”。在MySQL中,创建数据库就像在电脑上新建一个文件夹,用来存放我们所有的“文件”。浮点数或定点数,不同场景用不同类型:整数类型
- TINYINT:存放范围为-128到127的整数,适合小范围的数字,比如“评分等级”或“年龄”。文件等数据,
LONGBLOB
最大可存4GB。课程信息等。在MySQL里,用DROP DATABASE
命令来删除一个数据库,删除后数据将无法恢复,所以要谨慎操作。不同的内容适合不同的数据类型,例如整数用INT
、数据类型和约束条件都列出来:+-------------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------------+-------------+------+-----+---------+-------+| student_id | int | NO | PRI | NULL | || name | varchar(50) | NO | | NULL | || age | int | YES | | NULL | || class | varchar(10) | YES | | NULL | |+-------------+-------------+------+-----+---------+-------+
3. 删除数据表:DROP TABLE
如果我们不再需要某个表了,可以用
DROP TABLE
命令来删除这个表,注意这会连同表里的所有数据一并删除,无法恢复。 - 自动级联更新或删除:可以设置级联操作,当父表中的主键被删除或修改时,子表中的对应记录也自动更新或删除。日期用
DATE
。ENUM:用于指定一组固定的字符串选项,比如性别字段只允许
'男'
或'女'
。MEDIUMBLOB、- DECIMAL:定点数,精度和小数位数是固定的,特别适合货币和金融数据。可以用单个字段或多个字段组合。选课信息等。
数据类型选择小总结
- 数值:尽量选择适合数据范围的类型,不要一上来就选
BIGINT
或DOUBLE
。日期和时间类型日期和时间类型用来存放与时间相关的数据,MySQL提供了不同精度的日期时间类型。比如学生信息表里可能有“学号”、
SET:允许存储多个选项的组合,比如爱好字段可以选择多个爱好:
SET('阅读', '运动', '旅行')
。比如,不能有一个选课记录对应的学生在学生表里不存在。语法:
SHOWDATABASES;
例子:
直接运行SHOW DATABASES;
,MySQL会返回一个所有数据库的列表,看上去像这样:+--------------------+| Database |+--------------------+| information_schema || mysql || my_school || test |+--------------------+
在结果里,我们就可以找到我们创建的数据库,比如“my_school”。“年龄”等列。
级联操作(CASCADE)
外键还可以设置“级联更新”和“级联删除”:
- ON DELETE CASCADE:当父表数据被删除时,自动删除所有关联的子表数据。
- TINYINT:存放范围为-128到127的整数,适合小范围的数字,比如“评分等级”或“年龄”。文件等数据,
二、