MySQL 数据类型、SQL操作与约束详解
MySQL 是广泛使用的关系型数据库管理系统,其高效的数据存储依赖于合理的数据类型与严格的约束规则。本文从常见的数值与字符串类型入手,详细演示了 SQL 中创建、查询、修改和删除数据的标准操作流程,并重点解析了主键、外键、唯一性及默认值等核心约束机制,为数据库设计与应用开发提供基础指南。
常用数据类型
在定义数据库表结构时,选择合适的数据类型能显著提升存储效率与查询速度。MySQL 主要包含以下几种基础类型:
INT:整数类型,用于存储整数值。DOUBLE(m,d)与DECIMAL(m,d):浮点数类型。其中m指定总长度,d表示小数点后的位数。对于需要高精度计算的财务数据,推荐使用DECIMAL以避免浮点精度丢失。VARCHAR(size):可变长度字符串类型,size定义了最大字符数,相比固定长度的CHAR更节省空间。TIMESTAMP:日期时间类型,常用于记录数据创建或修改的时间戳。
数据库基本操作
在执行任何 SQL 语句时,必须确保语句末尾带有分号(;),这是标识语句结束的规范。以下是针对数据库实例与表的基础管理命令。
第1步:数据库实例管理
首先需要创建目标数据库并切换到该上下文中进行操作。
创建新数据库的语法为:
create database 数据库名;
查看所有已存在的数据库:
show databases;
切换至特定数据库使用:
use 数据库名;
删除不再需要的数据库需谨慎操作,执行后会永久清除数据:
drop database 数据库名;
第2步:表结构管理与数据插入
使用数据库后,下一步是创建数据表。建表时需预先定义列名及其对应的数据类型。
创建表的语法:
create table 表名 (列定义...);
查看当前表的字段结构与详细信息:
desc 表名;
向表中写入数据支持两种模式:一种是将所有列的值按顺序填入;另一种是指定特定列进行插入,未指定的列将自动填充为默认值或 NULL。
insert into 表名 values (值1, 值2...);
对于单列插入,示例如下:
insert into 表名(列名) values (值);
批量插入多行数据可通过括号逗号分隔实现:
insert into 表名 values (值1), (值2);
如果表中包含 DATETIME 类型的字段,可以使用标准的日期字符串格式直接录入。
insert into 表名 values ('YYYY-MM-DD HH:MM:SS');
第3步:数据查询(SELECT)
查询操作生成的是内存中的临时结果集,不会对原始硬盘数据产生任何影响。常用的查询技巧包括:
- 全列查找:使用通配符获取所有字段。
select * from 表名; - 指定列查询:仅提取必要的业务字段。
select 列名1, 列名2 from 表名; - 表达式运算:在查询时直接对数据进行加减乘除计算。
select 列名 + 常量 from 表名; - 别名设置:使用
AS关键字优化输出列头名称。select 列名 as 新列名 from 表名; - 去重处理:利用
DISTINCT剔除重复的行数据。select distinct 列名 from 表名;
排序与过滤:通过 ORDER BY 配合 ASC(升序)或 DESC(降序)排列结果。需注意的是,默认排序中 NULL 值通常被视为最小值排在最前。
select * from 表名 order by 列名 DESC;
条件查询(WHERE):精准定位数据是数据库操作的核心。MySQL 提供了丰富的逻辑运算符:
- 比较运算符:
=(相等)、<>(不等于)、>、<。 - 逻辑运算符:
AND、OR、NOT。 - 范围匹配:
BETWEEN ... AND ...(闭区间)与IN (...)。 - 空值判断:
IS NULL或IS NOT NULL。 - 模糊匹配:
LIKE。其中%代表任意数量字符,_代表单个字符。
分页限制(LIMIT):在处理大数据量时,限制返回行数可提升性能。语法支持偏移量控制:
select * from 表名 limit n offset s;
第4步:更新与删除(UPDATE & DELETE)
这两个操作会直接修改磁盘上的原始数据,属于高风险操作,务必先确认 WHERE 条件的准确性。
修改数据:
update 表名 set 列名=新值 where 条件;
删除数据:
delete from 表名 where 条件;
数据约束类型
为了保证数据的完整性与一致性,可以在建表时定义五种核心约束:
1. Not Null
强制某一列不允许存储 NULL 值。当插入数据未指定该字段且无默认值时,将触发报错。
column_name int not null;
2. Unique
确保列中每一行的值都是唯一的,防止重复录入。主键也是唯一的一种,但允许每表仅有一个主键,而唯一约束可有多个。
column_name int unique;
3. Default
规定在插入数据时,若未对该列赋值,则系统自动填入默认值。
column_name int default 0;
4. Primary Key
主键是实体的唯一标识,它同时隐含了 Not Null 和 Unique 的特性。一个表只能有一个主键列。
id int primary key auto_increment;
结合 AUTO_INCREMENT 使用时,无需手动插入 ID,数据库会自动分配递增序列。
5. Foreign Key
外键用于建立两张表之间的关联,确保“子表”中的引用值必须在“父表”中存在。这维护了参照完整性。
例如在学生表(子表)与班级表(父表)之间建立关联,学生表中的班级 ID 必须先在班级表中存在。否则无法插入或修改。
如果尝试插入父表中不存在的记录,或者试图删除被引用的父表记录,MySQL 均会拒绝操作以防数据孤岛产生。
以上就是关于 MySQL 常用数据类型、SQL 基础操作及约束机制的详细内容。熟练掌握这些指令与规则,是构建健壮后端应用的前提。更多关于数据库优化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













