
学习MySQL+Navicat
强类型关系:数据间必须符合预设规则,违反约束时会报错。 严格约束:字段必须唯一且不为空(通过主键约束实现)。 支持复杂操作:能够进行复杂查询和事务处理,如InnoDB引擎支持事务,保证原子性操作。 灵活性:存储更宽松,无需遵守复杂约束。 可扩展性:容易处理高并发和海量数据。 更高效:处理复杂查询和事务较为简单。 字段顺序:固定长度字段优先,变长字段放后。 数据类型选择:数值类型优先于字符串,避免转换。 索引优化:定期更新索引,提升查询效率。
发布日期:2021-05-10 23:24:17
浏览次数:15
分类:精选文章
本文共 2511 字,大约阅读时间需要 8 分钟。
关系型数据库与非关系型数据库的区别
关系型数据库之间有严格的约束,数据之间呈强类型关系,必须遵守数据库的规范。例如,SQlite、DB2、MySQL等数据库系统都支持关系型数据模型,具有以下特点:
关系型数据库特点:
非关系型数据库主要用于处理难以体现为关系的数据类型,约束较少,存储和查询效率更高,适合处理非结构化数据。如MongoDB、Redis等数据库系统:
非关系型数据库特点:
数据类型与数据库设计
数据库设计的核心在于合理选择数据类型和字段长度,以下是常见数据库类型说明:
数据类型分类:
数字类型:
tinyint
、int
、bigint
:整数类型,根据存储需求选择。float
、double
:浮点数类型,精度不同。decimal
:精确的货币计算类型。
字符串类型:
char(n)
:固定长度字符串,n
为字符数。varchar(n)
:可变长字符串,但性能略逊于char
。text
:存储大量文本或文件内容。
日期时间类型:
DATE
:存储年月日。TIME
:存储小时分钟秒。DATETIME
:常用日期时间类型。
枚举类型:
- 使用
enum
定义单选值域,支持快速筛选。 - 使用
set
定义多选值域。
外键约束:
- 用于建立表间关系,可减少冗余存储,但需正确管理关联。
数据库设计示例
以userinfo
表为例,外键约束到department
表中:
create table userinfo ( uid bigint auto_increment primary key, name varchar(32), department_id int, constraint fk_user_depart foreign key (department_id) references department('id')) engine=innodb default charset=utf8;
SQL操作实例
-- 清空表delete from t1;truncate table t1; --delete速度快的替代-- 创建表create table t1 ( id int not null auto_increment primary key, num decimal(10), name char(10)) engine=innodb default charset=utf8;-- 字符串类型选择建议char(10):固定长度,节省空间。varchar(10):可变长,适合超过固定长度。-- 查询优化建议定长字段(如char(10))应放在最前,减少索引查找时间。-- 数据插入insert into t1 (id, name) values(1, 'alex');-- 数据删除delete from t1 where id <6;-- 数据修改update t1 set age=18;update t1 set age=18 where age=17;
外键关联与数据库优化
避免冗余存储,正确设置外键约束。例如:
create table shirts ( name varchar(40), size enum('x-small', 'small', 'medium', 'large'));
插入操作:
insert into shirts (name, size) values('asddsa', 'large');
或使用多选集合类型:
create table shirts ( name varchar(40), size set('a', 'b', 'c', 'd'));insert into shirts (name, set) values('sdfsdf', 'a,b');insert into shirts (name, set) values('sdfsdf', 'a,c,d');
数据库创建与管理
-- 创建新数据库create database db1;-- 删除数据库drop database da1;-- 创建表create table t1 ( id int auto_increment primary key, name char(10), department_id int, foreign key (department_id) references department(id)) engine=innodb default charset=utf8;create table department ( id bigint auto_increment primary key, title char(15)) engine=innodb default charset=utf8;
SQL语句执行
SQL命令执行要注意:
truncate table
用于快速清空表。drop table
删除数据库对象及其数据。delete from table where condition
按条件删除数据。update table set column = value
用于字段更新。
数据存储优化
总结
通过以上内容,可以对SQL数据库有更深入的理解,包括数据库选择、数据类型设计、表结构优化及常用操作。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月12日 10时24分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
rnn-循环神经网络(序列问题)
2019-03-17
Finger.01 - ESP8266模块STA模式调试
2019-03-17
三维点云处理
2019-03-17
source insight V4 下载方法
2019-03-17
UART\串口\TTL\RS-232\RS-485的区别
2019-03-17
springboot security 基于redis的session共享(7)
2019-03-17
vue 权限管理 菜单按钮权限控制(7)
2019-03-17
vue 权限管理 主题切换(8)
2019-03-17
springboot 文件上传下载(简洁明了)
2019-03-17
spring
2019-03-17
inno setup 一些技巧
2019-03-17
Qt 在Excel文件中Chart绘图
2019-03-17
TCP 详解
2019-03-17
U3D时间
2019-03-17
U3D资源加载
2019-03-17
音频优化(简短版本)
2019-03-17
01-webpack5理解及配置
2019-03-17
JavaScript作用域和作用域链
2019-03-17