SQL基础随记 (Tobe Continued) – G「终于解决」

SQL基础随记 (Tobe Continued) – G「终于解决」SQL基础随记 (Tobe Continued) 其实这里的随记,要是好久不接触突然被问的话有时还真的一时答不上,自己写一遍胜过盲扫。当然,也有些常读常新的地方会记录下来。 对SQL语言进行划分 DD

SQL基础随记 (Tobe Continued) - G

SQL基础随记 (Tobe Continued)

 

其实这里的随记,要是好久不接触突然被问的话有时还真的一时答不上,自己写一遍胜过盲扫。当然,也有些常读常新的地方会记录下来。

 

对SQL语言进行划分

DDL — Data Definition Language — 定义 — 增删改数据库和表的结构

DML — Data Manipulation Language — 操作 — 对记录增删改

DQL — Data Quary Language — 查询 — 对记录进行查询

DCL — Data Control Language — 控制 — 访问权限和安全规则

要是要突然问的话有时还真的一时回答不上,记住单词胜过记缩写

 

DBMS的分类

  • 关系型
    • 行存储 — MySQL
  • NosQL
    • 键值型 — Redis
    • 文档型 — MongoDB
    • 搜索引擎 — Elasticsearch
    • 列存储(列族数据库)
    • 图形数据库

 

  • 列存储数据库说是“可以降低系统的I/O,但功能相对有限”,不过我看到了一段有意思的话觉得很有道理

    SQL基础随记 (Tobe Continued) - G「终于解决」

    列存储常见于分布式文件系统,如Hbase

  • 图(这种数据结构)存储了实体(对象)之间的关系。以最典型的人与人社交关系为例,其数据模型主要是以节点和边来实现。特点在于可以有效解决复杂的关系问题。

 

DDL

  • 创建表时可以在create table tableName (...)后面追加参数,可以追加的有

    • engine = InnoDB

    • CHARACTER SET = utf8 COLLATE = utf8_general_ci
      

      代码100分

      其中CHARACTER SET是指定字符编码,COLLATE是指定排序规则。且utf8_general_ci是对大小写不敏感,对大小写敏感是utf8_bin

      在定义varchar()类型字段的时候也可以后缀CHARACTER SET = xxx COLLATE = yyy

       

  • 在创建索引的时候我们可以选择不同类型的索引(UNIQUE INDEX — 唯一索引 或 NORMAL INDEX — 普通索引)以及不同的索引方式(BTREE 或 HASH),如

    代码100分CREATE TABLE XXX(
    ...
    UNNIQUE INDEX indexName (字段名) USING BTREE
    ...
    )
    

    索引分为单列索引和组合索引,组合即一个索引可以包含多个列

     

  • 约束

    • 主键,可以是一个字段也可以是多个字段
    • 外键
    • UNIQUE (唯一性)约束,
    • NOT NULL 约束
    • DEFAULT 约束,在插入记录时如果该字段为空,那么就会设置为默认值。(而不是“不变量”的意思,它仍然可变)
    • CHECK 约束 (MySQL8.0.16后版本支持)

     

  • 理论上设计数据表的“三少一多”原则

    • 表个数少

    • 表中字段少

    • 联合主键字段少

    • 主键和外键多

      表的设计核心就是简单可复用,主键是一张表的代表,因此主键外键越多,说明表之间的利用率最高。
       

      但这个原则不是绝对的,因为有时我们需要牺牲数据的冗余度来换取处理数据的效率,毕竟join总是会造成复杂。

      另外在大型项目中,大量的更新以及高并发的情况下,外键会造成额外的开销,也容易造成死锁。因此在业务量较大时,可以采用在业务层实现,取消外键来提高效率。因此在实际生产中为了方便维护基本不使用外键

      另外也不推荐使用自增长主键,不利于维护。例如银行一般使用唯一表示字段uuid+日期+渠道流水(unique index)来保证数据唯一性。

       

    • 修改字段类型不要忘记COLUMN

      ALTER TABLE tableName MODIFY COLUMN newName type;
      

      修改字段名

      代码100分ALTER TABLE tableName CHANGE oldName newName type;
      

      修改大表字段需要谨慎 容易引发表结构写锁。(0623)

       

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7732.html

(0)
上一篇 2023-03-15
下一篇 2023-03-15

相关推荐

  • 以PyCharm设置解释器为中心的使用方法

    以PyCharm设置解释器为中心的使用方法PyCharm是在Python开发者中非常受欢迎的IDE,它具有许多功能强大的工具,使得开发者可以在其中更加高效地进行编码。而在PyCharm中设置解释器非常重要,因为解释器是用于执行Python代码的程序,PyCharm可以帮助用户创建和管理解释器,同时也支持多个解释器的配置。本文将介绍在PyCharm中如何设置解释器,以及如何为不同的项目设置不同的解释器。

    2024-05-20
    72
  • b+树原理_B+树的特点

    b+树原理_B+树的特点作为目前数据库引擎的两种主要数据结构,LSM-tree和B+-tree在业界已经有非常广泛的研究。相比B+-tree,LSM-tree牺牲一定的读性能以换取更小的写放大以及更低的存储成本,但这必须建立

    2023-05-21
    147
  • 使用Python的Tkinter创建丰富的用户界面

    使用Python的Tkinter创建丰富的用户界面在Python中,Tkinter是最流行的GUI库之一。Tkinter使得在Python中创建图形化用户界面变得非常简单。它使用Tk GUI工具包,该工具包最初是为Tcl语言编写的,但现在也可用于其他编程语言。Tkinter除了可以用于创建基本的GUI组件之外,还可以创建复杂的、高度可定制的GUI组件,如表格、treeview和编辑器。在本文中,我们将介绍如何使用Tkinter创建具有丰富用户界面的Python应用程序。

    2023-12-20
    111
  • python游戏窗口(python游戏界面)

    python游戏窗口(python游戏界面)使用Python开发游戏可以吗?用Python开发游戏完全没有问题,游戏里面要用到一些全局变量、加载资源、创建开始界面、开始游

    2023-11-02
    145
  • MongoDB 更新/删除/索引「建议收藏」

    MongoDB 更新/删除/索引「建议收藏」一、更新 语法 db.collection.update( , , { upsert: , multi: , writeConcer…

    2023-02-14
    159
  • Python中的迭代器

    Python中的迭代器迭代器是Python编程语言中最受欢迎的特性之一,它可以让我们在处理数据集合时以一种非常优雅和简单的方式遍历数据。在本文中,我们将深入探讨Python中迭代器的工作原理、如何创建和使用迭代器,以及一些常用的迭代器工具。

    2024-04-29
    103
  • 高质量SQL书写的30条建议

    高质量SQL书写的30条建议 前言 本文将结合实例demo,阐述30条有关于优化SQL的建议,多数是实际开发中总结出来的,希望对大家有帮助。 1、查询SQL尽量不要使用select *,而是select具体字段。 反例子…

    2023-03-20
    155
  • 大数据分析用自助式BI工具就能轻松解决,so easy!

    大数据分析用自助式BI工具就能轻松解决,so easy!相比于传统大数据分析工具,用自助式BI工具做大数据分析更加全面,易于上手。而且BI工具还可以可以进行多层次多深度的大数据分析,实现对大数据的横向联动和纵深挖掘。今天就来把我之前学习到的,如何用BI工具

    2023-04-18
    171

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注