• Mysql


    Mysql - 二


    参考自 Mysql经典教程

    SQL语言

    MySQL使用的SQL语言基本上符合SQL92的标准,但是既有扩展,又有未实现地方。

    1)表、列和数据类型

    • 表是数据在一个MySQL数据库中的存储机制,它包含一组固定的列
    • 表中的列描述该表所追踪的实体的属性,每个列都有一个名字及各自的特性
    • 列包含:数据类型、长度
    • 关系数据模型中,记录就是行是没有顺序的

    2)函数

    • 函数是存储在数据库中的代码块
    • 差别在于函数可以把值返回调用程序

    3)SQL的语句

    • SQL是一种典型的非过程化程序设计语言
    • 特点:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,及如何执行这些操作,未被指定
    • 非过程化优点:简单易学
    • 过程化语言:平常熟悉的各种高级程序设计语言,使用灵活,数据操纵能力非常强大

    MySQL数据处理

    • 数字类型
    • 日期和时间类型
    • 字符串(字符)类型

    1)MySQL的数据

    1.字符串值

    • 双引号或者单引号
    • 可以使用转义序列用来表示特殊字符
    • 转义序列以 开始
    • 注意 NUL 字节与 NULL值不同;NUL 为一个零值字节,而 NULL 代表没有值
    序列 涵义
    ASCII 0(NUL)字符
    新行符
    回车符(Windows中使用 作为新行标志)
    定位符
     退格符
    ' 单引号
    " 双引号
    反斜杠
    % 百分号%
    _ 下划线_

    2.数字值

    • 支持说明为整数或浮点数
    • 支持科学计数法表示,整数或浮点数后跟“e”或"E"、符号(+或-)和一个整数指数
    • 数值前加 - 表示负数
    • 如,1221 0 -32 29.3 -32.4e+10 148.

    3.十六进制值

    • 支持十六进制值
    • 由 0x 开始跟十六进制数值,数值不区分大小写
    • 前缀只能是0x , 不能是 0X
    • 在数字上下文他表示一个64位精度整数
    • 在字符串上下文他表示类似于一个二进制字符串,对每一对十六进制数字变换为一个字符

    4.日期和时间值

    • 类似于 1999-06-17 或 12:30:43
    • 支持日期/时间组合,如 1999-06-17 12:30:43
    • 按年-月-日顺序表示日期

    5.NULL值

    • 适用于各种列类型
    • 表示 “没有值”、“无数据”
    • 不同于数字类型的0 或字符串类型的空字符串

    2)列类型概述

    • 每个表都是由一个或多个列构成
    • CREATE TABLE 创建表
    • 每列指定类型,与数据类型对应,但是更具体
    • 描述列包含的值的种类以及范围,不能包含对应的数据类型所允许的所有值
    • 例如,CHAR(16)规定了存储的字符串值必须是16位宽度

    列类型的特性:

    • 可存放类型的值
    • 值所占空间多少,及该值是否定长或可变长
    • 该类型的值怎样比较和存储
    • 该类型是否允许 NULL 值
    • 该类型是否可以索引

    创建表

    CREATE TABLE teacher
    (
    	id TINYINT UNSIGNED NOT NULL,
    	name CHAR(16) NOT NULL,
    	tele NUMERIC(8),
    	sex ENUM("F", "M") DEFAULT "M"
    )
    

    col_name col_type [col_attributes][general_attributes]

    • col_name 列名字
    • col_type 列类型
    • col_attributes 专用属性,只应用于制定列,置于列类型后和列通用属性前
    • general_attributes 通用属性,可用于少数列的任意列,如 NULL、NOT NULL、和 DEFAULT

    数字类型

    类型名 涵义
    TINYINT 很小的整数
    SMALLINT 小整数
    MEDIUMINT 中等整数
    INT、INTEGER 正常整数
    BIGINT 大整数
    FLOAT 小(单精度)浮点数
    DOUBLE 正常(双精度)浮点数
    DOUBLE PRECISION
    REAL
    DECIMAL 未压缩(unpack)的浮点数字,未压缩指被作为字符串存储
    NUMERIC

    字符串类型

    • 串类型不仅可存储字符串,实际任何二进制数据都可存储,如图像、音频、视频
    类型名 涵义
    CHAR 定长字符串
    VARCHAR 变长字符串
    TINYBLOB 最大长度为255(2^8 -1) 个字符的BLOB
    TINYTEXT 最大长度为255(2^8 -1) 个字符的TEXT
    BLOB 最大长度为65535(2^16 -1) 个字符的BLOB
    TEXT 最大长度为65535(2^16 -1) 个字符的TEXT
    MEDIUMBLOB 最大长度为65535(2^24 -1) 个字符的BLOB
    MEDIUMTEXT 最大长度为65535(2^24 -1) 个字符的TEXT
    LONGBLOB 最大长度为65535(2^32 -1) 个字符的BLOB
    LONGTEXT 最大长度为65535(2^32 -1) 个字符的TEXT
    ENUM('value1','value2',...) 枚举:列只能赋值为某个枚举成员或NULL
    SET('value1','value2',...) 集合:列可以赋值为多个集合成员或NULL

    日期和时间类型

    • 允许存储某个 不严格地合法 的日期值,如1999-11-31
    类型名 涵义
    DATE 日期,以YYYY-MM-DD格式显示
    TIME 时间,以HH:MM:SS显示
    DATETIME 日期时间组合,以YYYY-MM-DD HH:MM:SS 格式显示
    TIMESTAMP 时间戳,以YYYMMDDHHMMSS格式显示

    3)数字列类型

    1.整型

    可用UNSIGNED禁用负数值

    • TINYINT - 1字节
    • SMALLINT - 2字节
    • MEDIUMINT - 3字节
    • INT - 4字节
    • BIGINT - 8字节

    2.浮点型

    • FLOAT - 4字节
    • DOUBLE - 8字节
    • DECIMAL - M字节,DECIMAL(M[,D]) 比较复杂待研究??????

    4)日期和时间类型

    • DATA - 3字节(1000-01-01 ~ 9999-12-31)
    • TIME - 3字节
    • DATATIME - 8字节
    • TIMESTAMP[(M)] - 4字节(19700101000000 ~ 2037年某时刻)
    • YEAR[(M)] - 1字节(1901到2155)

    1.Y2K问题和日期类型

    • 本身Y2K安全
    • 2位年份因为世纪未知导致二义性
    • 范围00-69的年制变换为 2000-2069
    • 范围70-99的年值变换为 1970-1999

    2.TIMESTAMP类型

    • 自动用当前的日期和时间标记INSERT 或 UPDATE操作
    • 列没有明确在一个INSERT 或 LOAD DATAINFILE语句中指定,自动更新
    • 列没有明确在一个UPDATE语句中指定且一些另外的列改变值,自动更新
    • 明确的设定 TIMESTAMP 列为NULL

    3.TIME类型

    • 任何分隔符都可作为时间分隔符
    • 无分隔符也可被解析,HHMMSS格式数字

    4.YEAR类型

    • YYYY格式表示year值,1901 ~ 2155

    5)字符串类型

    • CHAR(M) - 定长字符串,空格填满右边到指定的长度, M字节长度
    • 取值大的串类型可以存储近4GM的数据
    • 受客户端/服务器通讯一些的最大块尺寸限制,列值的最大限额为24MB
    • 比较时忽略大小写
    • 同一个表中不能混用 CHAR 和 VARCHAR 这两种类型,否则会将CHAR转为VARCHAR
    • BLOB和TEXT列不能有DEFAULT值
    • BOLB和TEXT类型可以存储非常多的数据
  • 相关阅读:
    python--向钉钉群发送消息(亲测可用)
    python--注册钉钉回调事件(亲测可用)
    Gradle
    SpringBoot 中thymeleaf模板引擎的使用
    SpringBoot对静态资源的映射规则
    SpringBoot的日志使用
    rsync实现文件同步
    python学习: 优秀Python学习资源收集汇总--转
    Python高级特性: 12步轻松搞定Python装饰器
    Python常见问题
  • 原文地址:https://www.cnblogs.com/cg-Yun/p/5686776.html
Copyright © 2020-2023  润新知