zoukankan      html  css  js  c++  java
  • NoteOfMySQL-02-数据库语句基础

    一、数据类型

      MySQL支持多种数据类型,主要有数值类型、日期时间类型、字符串类型、二进制类型。

    数据类型 明细
    数值类型 tinyINT、smallINT、mediumINT、INT、bigINT、FLOAT、DOUBLE
    日期时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP
    字符串类型 CHAR、VARCHAR、binary、VARbinary、TEXT、ENUM、SET
    二进制类型 BIT、binary、VARbinary、tinyBLOB、BLOB、mediumBLOB、longBLOB

    (一)数值类型

    1. 整数类型

      MySQL支持在类型关键字后面的括号内指定整数值的显示宽度,可使用INT(M)进行设置。如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数据依然可以插入。

    整数类型

    2. 浮点数类型

      浮点类型可以使用(M, D)来表示。其中M代表精度,即总位数;D代表标度,即小数的位数。

    浮点数类型

    3. 定点数类型

      定点数类型可以使用(M, D)来表示。其中M代表精度,即总位数,默认值为10;D代表标度,即小数的位数,默认值为0。

      定点数类型实际上是以字符串存储的,其有效取值范围由M和D的值决定。存储空间也不是固定的,而是由M决定的,占用M+2个字节。

    定点数类型

    (二)日期时间类型

    日期时间类型

    1.  DATE类型

      仅存储日期而不存储时间,默认格式为‘YYYY-MM-DD’。

      可使用current_date()或now()插入当年计算机系统的日期。

    2. TIME类型

      记录时间,默认格式为'HH:MM:SS'。

    3. YEAR类型

      使用单字节表示年份。

    4. DATETIME类型

      DATETIME默认格式为‘YYYY-MM-DD HH:MM:SS’,包含日期和时间信息,存储占用8字节。

      在给DATET/ME类型的字段赋值时,可以使用字符串类型或值类型的数据,只需要符合DATETIME的日期格式即可。

      当DATETIME存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关。

    5. TIMESTAMP类型

      TIMESTAMP默认格式为‘YYYY-MM-DD HH:MM:SS’,显示宽度固定为19个字符,包含日期和时间信息,存储占用4字节。

      当TIMESTAMP存储日期数据时,其值以UTC(世界标准时间)格式保存,存储时对当前时区进行转换,检索是再转换回当前时区。所以,当进行查询时,根据读者所在时区不同,其显示的日期时间不同。

    (三)字符串类型

    字符串类型1
    字符串类型2

    1.  CHAR和VARCHAR类型

      CHAR(M) 为固定长度字符串,保存时在右侧填充空格以达到指定长度,M的取值范围是0~255。当检索时,尾部的空格将被删掉。

      VARCHAR(M) 为变长字符串,M的取值范围是0~65535。其占用空间为字符串长度+1字节以记录字符串长度,其实际存储的字符串为原字符串+一个字符串结束字符。在保存和检索时,尾部的空格仍保留。

    2. TEXT类型

      TEXT 字段保存非二进制字符串,在保存和查询值时,不删除尾部空格。TEXT类型分为4种:tinytext、text、mediumtext、longtext。

    3. ENUM类型

       ENUM 是一个字符串对象,其值为表创建时在字段规定中枚举的一列值,最多为65535个。
      语法格式:字段 ENUM ('值1', '值2', '值3'...)

       字段取值时,只能在指定的枚举列表中取,而且一次只能取一个值。如果创建的成员中有空格,其尾部的空格将自动被删除。

       ENUM值依照索引顺序排列,并且空字符串排在非空字符串之前,NULL值排在其他所有枚举值之前。

    4. SET类型

      SET 类型是一个字符串对象,可以有零个或多个值,最多为64个。

      语法格式:SET('值1', '值2', '值3'...)

      字段取值时,只能在指定的枚举列表中取,一次可能取多个值。如果创建的成员中有空格,其尾部的空格将自动被删除。

      若插入SET字段有重复,则MySQL自动将其删除,且按照定义顺序显示。

    (四)复合类型

    ENUM --- 单选按钮
    SET  --- 复选框

    (五)二进制类型

      字符串类型的数据按字符为单位进行存储,因此存在多种字符集、多种字符序;除了bit数据类型按位为单位进行存储;其他二进制类型的数据按字节为单位进行存储,仅存在二进制字符集binary。

      TEXT和BLOB都可以粗野拿出长字符串,TEXT主要存储文本字符串(如新闻内容、博客日志等),BLOB主要存储二进制数据(如图片、音频、视频等)。

    BLOB类型 可存储大小
    TinyBlob 255B
    Blob 65KB
    MediumBlob 16MB
    LongBlob 4GB

    二、运算符

    (一)算术运算符

    算术运算符

    (二)比较运算符

      MySQL中可以使用下面比较运算符比较数字、字符串、表达式,结果为真时返回1,为假时返回0,不确定时返回NULL。

    1. 比较规则

    • 数字作为浮点数比较,字符串以不区分大小写进行比较。
    • 比较的参数中,若存在NULL,则返回NULL。
    • 两个数字比较,按照整数进行比较。
    • 两个字符串进行比较,按照字符串形式进行比较。
    • 一个字符串和一个数字进行比较,则将字符串转换为数字后进行比较。

    2. REGEXP运算符匹配字符串

    语法格式:expr REGEXP 匹配条件
    返回类型:满足匹配返回1;不满足返回0;若expr或匹配条件中有任一为NULL,则返回NULL。

    REGEXP运算符匹配字符串

    (三)逻辑运算符

      逻辑运算符的运算结果为TRUE(1)、FALSE(0)、NULL。

    逻辑运算符

    1. NOT、!

    • !0 = 1
    • !1 = 0
    • !NULL = NULL

    2. AND、&&

    • 1&&1 = 1
    • [1、0]&&0 = 0
    • *&&NULL = NULL

    其中的*可为0或NULL。

    3. OR、||

    • [1、0]||[0、1] = 1
    • 0||0 = 0
    • 1||NULL = 1
    • *||NULL = NULL

    其中的*可为0或NULL。

    4. XOR

    • 0 XOR 1 = 1
    • * XOR NULL = NULL

    其中的*可为1或0或NULL。

    (四)位运算符

      位运算符是对二进制数字进行运算的。

    1. 按位或|

    • 0|0 = 0
    • else = 1

    2. 按位与&

    • 1|1 = 1
    • else = 0

    3. 按位异或^

    • 1|0 = 1
    • else = 0

    4. 按位左移<<

    左边高位数值被丢弃,右边补0。a<<n 相当于a*(2^n)。

    5. 按位右移>>

    右边低位数值被丢弃,右边补0。a<<n 相当于a/(2^n)。

    6. 按位取反~

    • ~1 = 0
    • ~0 = 1
  • 相关阅读:
    递归
    书评:《C程序设计语言》
    下一代互联网,今日揭开面纱:IPv6真的要来了
    庆祝Alan Mathison Turing(艾伦·图灵)诞辰100周年!
    svn常用命令行和批处理
    ORACLE 9i数据导入到ORACLE 10G中文出现的乱码问题
    Oracle 11G 的客户端,不再支持连接到ORACLE 8I
    DB2 一个汉字的Byte数,太操蛋了
    关于Windows 7 64位下Visual Studio 2010 开发的Asp.net程序连接Oracle 的出现的问题
    Web Frame 跨域调用Session 丢失问题
  • 原文地址:https://www.cnblogs.com/bpf-1024/p/14052122.html
Copyright © 2011-2022 走看看