数据类型

    1003
    最后修改于

    数值类型#

    在 SQL 2011 中,
    单 BIT 类型
    仅存储一位,1/0
    整数类型
    可以按照字节长度 1、2、4、8 分为不同的子类型。
    定点类型
    DECIMAL/NUMERIC,按照精度和小数位数决定存储格式。
    如 DECIMAL (10,2),意味着,整个数占据 10 进制 10 位,其中小数部分占据 10 进制 2 位,12312122.12 。适合使用金钱相关存储
    浮点类型
    遵循 IEEE 754 标准的存储方式,而精度部分可选。
    默认 8bit 存储整数部分,剩余精度部分存储小数部分。
    精度不同,存储大小不同。
    当 X<=24 时,存储 4 字节。精度大于 24 时存储 8 字节。最大精度 53 bit。
    按照常用类型 有 FLOAT 和 DOUBLE,分别为 4 字节 和 8 字节
    FLOAT (24) 等效于 REAL
    FLOAT (53) 等效于 DOUBLE

    MYSQL
    整数类型TINYINT (1B), SMALLINT (2B), MEDIUMINT (3B), INT (4B), INTEGER (4B), BIGINT (8B)
    定点类型DECIMAL,NUMERIC
    浮点类型FLOAT,DOUBLE 遵守 IEEE754
    单 BITBIT
    POSTGRES
    整数类型SMALLINT(2B), INTEGER(4B), BIGINT(8B), SMALLSERIAL(2B), SERIAL(4B), BIGSERIAL(8B)
    定点类型DECIMAL, NUMERIC
    浮点类型REAL, DOUBLE PRECISION
    单 BIT

    SQLite 是动态类型的,SQLite 的实际存储类型只有五种,
    NULL,INTEGER(0-8B),REAL(8B IEEE754), TEXT, BLOB。
    但是可声明为更为具体的类型。

    SQLite
    整数类型INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT,UNSIGNED BIG INT, INT2, INT8
    字符类型CHARACTER(20), VARCHAR(255), VARYING CHARACTER(255), NCHAR(55), NATIVE CHARACTER(70), NVARCHAR(100), TEXT, CLOB
    浮点类型REAL, DOUBLE, DOUBLE PRECISION, FLOAT
    定点类型NUMERIC, DECIMAL(10,5), BOOLEAN, DATE, DATETIME

    字符串类型#

    CHAR 定长字符串
    VARCHAR 变长字符串
    TEXT 长字符串

    MYSQL 中给出的字符串类型
    CHARVARCHARBINARYVARBINARYBLOBTEXTENUM, and SET.

    POSTGRES 中给出的字符串类型,与标准 SQL 一致
    CHAR 定长字符串
    VARCHAR 变长字符串
    TEXT 长字符串

    日期类型#

    MYSQL:
    DateTime ,Date,Timestamp 存储为 UTC 时区,返回结果时会自动从 UTC 转换为当前时区,默认情况下,每个连接的时区采用服务器指定的时区。也可以为每个连接采用不同的时区。

    POSTGRES:

    名称存储大小描述精度
    timestamp [ (p) ] [ without time zone ]8B不带时区的日期和时间,也就是标准 UTC1ms
    timestamp [ (p) ] [ with time zone ]8B带时区的日期和时间1ms
    date4B日期1day
    time [ (p) ] [ without time zone ]8B不带时区的时间(UTC)1ms
    time [ (p) ] [ with time zone ]12B带时区的时间1ms
    interval [ fields ] [ (p) ]16B时间间隔1ms

    SQLite 中并未提供用于存储的日期 / 时间类型。
    可以直接用 Text,REAL,INTEGER 存储日期和时间,对于声明为 DATE,DATETIME 类型的 Column,会转为 Numeric 存储。

    SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

    • TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM.SSS").
    • REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
    • INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.

    Applications can choose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

    标准查询

    聚合函数,多行被聚合为单行
    窗口函数,多行仍是多行

    SELECT salary, sum(salary) OVER (ORDER BY salary) FROM empsalary;
    

    视图

    外键
    reference
    引用完整性

    事务

    BEGIN;
    -- do something
    COMMIT;
    

    事务保存点,可以有选择的回滚到事务保存点。

    继承机制 ONLY

    • 🥳0
    • 👍0
    • 💩0
    • 🤩0
    总浏览量 4,287