数据库SQL--数据表与索引(二)

2023-05-16

一.数据表( )

  1. 数据表是数据库中最基本的用于存储数据的对象,可以认为数据表是以行和列组成的二维表格,通常把行称为记录,列称为字段。
  2. SQL中的常用数据类型
  • 字符型数据:大小写字母,数字,空白符(空格符,制表符,换行符),
                          标点,特殊字符与汉字
    注意:
    (1) 空白字符仅在字符串常量中有意义,在其他地方出现时,只起间隔作用,编译器会自动忽略,仅增加可读性.
    (2) 字符型数据都被放在’ ’ 内部,如’home’,‘张三’,‘123456’,'123_&&%*'都是字符型数据,每个字符型数据都有长度,长度是字符个数(汉字每个字长度为2)

  • 数字型数据:可以是0-9数字,可以正负符号与小数点,也可以浮点形式的科学计数法。如100,23.988,-123,3.46E+03
    注意:
    (1) 对于数字若没有界定符’'则是数字型数据,有界定符如’1222’则是字符型数据
    (2) 在具体的数据库中,数字型数据往往被分为整数型,浮点型,货币型等数据。

  • 日期时间数据:如2018-1-1 12:40:32 2018年8月1日 01/JAN/2018等形式

  • 二进制数据:用于保存图形图像,动画视频及其他类型文件,如sql server提供的image数据类型,mysql中的blob数据类型等等

  • 自定义数据类型:create type(但不是所有数据库都支持)

  1. 具体数据库中使用的数据类型
    (1)Mysql的数据类型
    字符类型:
    char(M):保存定长的字符串,M表示最大长度范围1-255,当输入的字符串小于M时,在数据库系统中使用空格补齐,但在取出时将末尾空格去掉
    varchar(M):保存变长的字符串
    blob:存储二进制文本数据,不超过65535个字节
    tinyblob:保存二进制文本数据,不超过255个字节
    mediumblob:保存二进制文本数据,不超过16777215个字节
    longblob:不超过4294967295字节
    text:保存长文本数据。不超过65535个字节
    tinytext:保存长文本数据,不超过255个字节
    mediumtext:保存文本数据,不超过16777215个字节
    longtext:保存文本数据,不超过4294967295字节

    (2) 数值类型:
    int或integer:占用四个字节,存放-2147483648~2147483647之间的正负整数
    tinyint:占用一个字节,存放-128-127之间的正负整数
    tinyint unsigned:0~255
    float:占用四个字节
    double:占用八个字节
    numeric(M,D):M是整个数字的宽度(包括小数点及小数点左右的位数,不包括正负
                              号)D是小数点右边的位数,这是一种由M和D决定的数据类型。

    (3) 日期与时间类型
    date类型:占用三个字节空间,存储日期类型。
                      输入格式YYYY-MM-DD,如2023-3-2
    datetime类型:占用八个字节空间,存储日期和时间类型。
                             输入格式YYYY-MM-DD HH:MM:SS
    time类型:占用三个字节,存储时间类型。
                      输入格式HH:MM:SS
    year类型:占用一个字节,存储年份数据。
                      输入格式YYYY
    timestamp类型:占用八个字节,
                                输入格式YYYY-MM-DD HH:MM:SS

(2)Sqlite3的数据类型

  • NULL 值是一个 NULL 值。
  • INTEGER 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节- 中。
  • REAL 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
  • TEXT 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
  • BLOB 值是一个 blob 数据,完全根据它的输入存储。
    其中时间类型被存储为以下三种格式
    TEXT              格式为 “YYYY-MM-DD HH:MM:SS.SSS” 的日期。
    REAL              从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。
    INTEGER       从 1970-01-01 00:00:00 UTC 算起的秒数。
  1. 数据表基础
    一个数据表由表结构和其内的数据组成
  • 表结构主要为表名,字段名,字段的数据类型,字段的大小,另外也有如字段约束,表约束等(可选项)
  • 其内的数据即记录,要求每个字段中的数据必须是相同的数据类型
  1. 表的逻辑设计
    E-R模型图完成逻辑设计,是关系模式设计合理,减少冗余,提高查询效率
    任务:确定数据依赖,消除冗余关系,确定范式级别等
    (暂时用不到,后续补充…)

  2. 表的索引
    大型数据库最主要的对象,用途减少定位和查询数据所需的IO操作,加快数据库查询速度,但一般只有大型数据库管理者才会使用索引,小型数据库用途不大。
    举个例子:索引就相当书的页码,一个字一个字的查某行必然不如直接索引到某一页再查速度快。
    (暂时用不到,后续补充…)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库SQL--数据表与索引(二) 的相关文章

  • 如何将彼此“接近”的纬度/经度点分组?

    我有一个用户提交的纬度 经度点的数据库 并且正在尝试将 接近 点分组在一起 接近 是相对的 但目前看来约为 500 英尺 起初 我似乎只能按前 3 个小数位具有相同纬度 经度的行进行分组 大约是一个 300x300 的盒子 了解当您远离赤道
  • 唯一约束与唯一索引?

    之间有区别吗 CREATE TABLE p product no integer name text UNIQUE price numeric and CREATE TABLE p product no integer name text
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • 合并sql中的列

    我正在使用 SQL Server 2017 有一个存储过程 其中我有一个带有连接的简单选择 例如 SELECT p legacyKey AS JobNumber p Name AS JobName G Label AS DesignStat
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • RANK() OVER PARTITION 并重置 RANK

    如何获得在分区更改时重新启动的 RANK 我有这张表 ID Date Value 1 2015 01 01 1 2 2015 01 02 1
  • SQL 约束最小值/最大值?

    有没有办法为数字字段设置 SQL 约束 最小值应为 1234 最大值应为 4523 SQL Server 语法为the check约束 http technet microsoft com en us library ms179491 as
  • MySQL LIKE %string% 不够宽容。我还有什么可以用的吗?

    我有一位客户询问他们的搜索是否可以搜索公司名称 这些名称可以根据用户输入以多种格式进行搜索 例如数据库中存储的公司是 A J R Kelly Ltd 如果用户搜索 一个 J R Kelly 被发现 使用
  • 通过 SQLAlchemy 获取随机行

    如何使用 SQLAlchemy 从表中选择一个或多个随机行 这在很大程度上是一个特定于数据库的问题 我知道 PostgreSQL SQLite MySQL 和 Oracle 具有通过随机函数排序的能力 因此您可以在 SQLAlchemy 中
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 以编程方式插入行(父行和子行)

    我正在使用 Spring 和 JDBCTemplate 该场景是 CUSTOMER 表和 ORDERS 表的父子关系 我想做一个插入 例如 1 个客户和 5 个订单 但我不确定如何以编程方式在 CUSTOMER 表中插入一行 如何获取 Or
  • postgresql:插入...(选择*...)

    我不确定它是否是标准 SQL INSERT INTO tblA SELECT id time FROM tblB WHERE time gt 1000 我正在寻找的是 如果 tblA 和 tblB 位于不同的数据库服务器中怎么办 Postg
  • 获取在任何日期创建的表的列表?

    我遇到了这样的情况 我想查找我在 2012 年 9 月 14 日 2012 年 9 月 14 日 在 sql server 上创建的表 是否有任何查询会列出在此日期创建的这些表 SELECT FROM sys tables WHERE cr
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • Oracle:按月分区表

    我的解决方案 德语几个月 PARTITION BY LIST to char GEBURTSDATUM Month PARTITION p1 VALUES JANUAR PARTITION p2 VALUES Februar PARTITI
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013

随机推荐

  • 【日常】圣诞节、颜色⛄

    2022年圣诞节到来啦 xff0c 很高兴这次我们又能一起度过 关于圣诞节 x1f384 xff0c 大家想到什么颜色 xff1f x1f98c x1f381 x1f385 x1f525 demo online https codepen
  • 【笔记】openwrt - full cone NAT(全锥NAT)、解决“arp_cache: neighbor table overflow!”

    最近安装了比特彗星 xff08 bitcomet xff09 后 xff0c 老是收到警告说日志的接收超过每秒上限了 一看日志 xff0c 好家伙 xff0c 一堆的kern info kernel 194004 157620 neighb
  • 【记录】ChatGPT使用记录

    文章目录 2023年02月08日数学哲学Java其他 2023年02月09日ChatGPT网络 2023年02月10日算法组网 2023年02月11日ChatGPT xff08 优化目标 xff09 DOS 2023年02月15日影评 xf
  • 简历模板百度网盘自取

    链接 https pan baidu com s 1ptO hJs69ZA8kwdjRUwc7A 提取码 sibc 复制这段内容后打开百度网盘手机App xff0c 操作更方便哦 来自HHppGo的分享
  • 【工具】笔记软件测评(简单)

    介绍 笔记软件测评 印象笔记 开源 markdown xff08 不好用 xff09 本地存储 臭名昭著 xff0c 被资本搞烂的理想 notion 开源 本地存储 数据导出 xff1a PDF HTML Markdown amp CSV
  • 【工具】logseq 使用分享

    Github https github com logseq logseq 我用 logseq 记录的学习笔记 xff1a 战争历史 https lawsssscat github io logseq worldwar 三月八日国际劳动妇女
  • 谈一谈搜索引擎是如何跟踪你、出卖你的

    文章目录 跟踪结果点击跟踪关键词跟踪 other 跟踪 结果点击跟踪 以b网为例 xff0c 当我们搜索关键词 haha 后 xff0c 搜索结果链接是这样子的 xff1a https www baidu com link url 61 X
  • 整理alacritty使用笔记

    github xff1a https github com alacritty alacritty features xff1a https github com alacritty alacritty blob master docs f
  • 整理windows terminal使用笔记

    github xff1a https github com microsoft terminal 之前这篇文章写了windows中powershell的美化 xff0c 过程中安装了windows terminal 这里记录windows
  • 区分/区别:su、su -、sudo、sudo su -

    su和su 的区别 su 不设置环境变量su 设置环境变量 su 和sudo su 的区别 su 输入root用户密码sudo su 输入当前用户密码 xff08 前提 xff1a 当前用户在 etc sudors或 etc sudors
  • 整理ps使用笔记

    尽管使用ps只需要记住常用命令 xff1a ps aux ps ef 并且理解输出的列含义即可 但不理解命令的含义 xff0c 用起来总有种空虚感 下面研究一下 文章目录 介绍BSD默认simpleaxT r listoutput 总结 介
  • SSO、CAS、OAuth、OIDC

    参考 简单了解概念 xff1a https www bilibili com video BV1XG411w7DN 简单了解操作 xff1a https www bilibili com video BV1334y11739 openid
  • 整理现有的wiki私服项目

    五一技术创作马拉松 https bbs csdn net topics 614845804 https www csdn net qc 文章目录 核心功能现有项目wikijsBookStackmediawikiTiddlyWikigollu
  • 蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(二)——LCD

    02 LCD屏 蓝桥杯正式比赛时会给参赛选手一个数据包 xff0c 里面会有LCD屏相关配置文件和库函数 xff0c 所以这里的例程相当于只是一个代码移植 具体LCD屏的学习可以参考火哥的视频 我们打开之前的工程文件以及 ioc文件 xff
  • Vscode如何设置代码保存后自动格式化

    方法一 xff1a 1 打开vscode xff0c 点击设置 2 搜索框输入格式化 xff0c 如图勾选这三个选项 方法二 xff1a 1 打开设置 xff0c 搜索框不要输入东西 xff0c 点击如图标识 2 点击后 xff0c 会打开
  • 解决桌面右键文件夹卡死的问题

    新买的电脑莫名其妙的右键文件夹就会卡死 xff0c 弄了好几天 xff0c 终于弄好了 xff0c 记录一下 原因大概率是因为右键选项中的一些第三方软件功能异常造成的 xff08 极大概率是百度云或者QQ导致 xff09 xff0c 使用S
  • wsl2与vscode的安装

    网页搜索wsl xff0c 可以看到微软的wsl官方文档 1 安装 开始菜单搜索功能 xff0c 找到启用或关闭Windows功能 勾选适用于linux的windows子系统 xff0c 和虚拟机平台 确定 xff0c 重启 打开微软商店
  • wsl2常用工具的安装及gitlab上搭建仓库

    1 安装wsl2 安装vscode 2 安装相应工具 apt install cmake apt install make apt install g 43 43 3 编写一个函数hello c 想要编译需要创建一个CMakeLists t
  • wsl2里java离线安装方法

    链接 xff1a https pan baidu com s 1azeWBSkaFbPXyfZX 5lAjA 提取码 xff1a 0312 1 把离线安装包放在任意路径下 例如 xff1a usr java下 2 解压tar xzvf op
  • 数据库SQL--数据表与索引(二)

    一 数据表 xff08 xff09 数据表是数据库中最基本的用于存储数据的对象 xff0c 可以认为数据表是以行和列组成的二维表格 xff0c 通常把行称为记录 xff0c 列称为字段 SQL中的常用数据类型 字符型数据 xff1a 大小写