学习MySQL+Navicat
发布日期:2021-05-10 23:24:17 浏览次数:15 分类:精选文章

本文共 2511 字,大约阅读时间需要 8 分钟。

关系型数据库与非关系型数据库的区别

关系型数据库之间有严格的约束,数据之间呈强类型关系,必须遵守数据库的规范。例如,SQlite、DB2、MySQL等数据库系统都支持关系型数据模型,具有以下特点:

关系型数据库特点:

  • 强类型关系:数据间必须符合预设规则,违反约束时会报错。
  • 严格约束:字段必须唯一且不为空(通过主键约束实现)。
  • 支持复杂操作:能够进行复杂查询和事务处理,如InnoDB引擎支持事务,保证原子性操作。
  • 非关系型数据库主要用于处理难以体现为关系的数据类型,约束较少,存储和查询效率更高,适合处理非结构化数据。如MongoDB、Redis等数据库系统:

    非关系型数据库特点:

  • 灵活性:存储更宽松,无需遵守复杂约束。
  • 可扩展性:容易处理高并发和海量数据。
  • 更高效:处理复杂查询和事务较为简单。
  • 数据类型与数据库设计

    数据库设计的核心在于合理选择数据类型和字段长度,以下是常见数据库类型说明:

    数据类型分类:

  • 数字类型

    • tinyintintbigint:整数类型,根据存储需求选择。
    • floatdouble:浮点数类型,精度不同。
    • 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数据库有更深入的理解,包括数据库选择、数据类型设计、表结构优化及常用操作。

    上一篇:学习MySQL+Navicat 02
    下一篇:MySQL 学习

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月12日 10时24分02秒