Mysql - 二

Mysql - 二


参考自 Mysql经典教程

SQL语言

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

1)表、列和数据类型

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

2)函数

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

3)SQL的语句

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

MySQL数据处理

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

1)MySQL的数据

1.字符串值
  • 双引号或者单引号
  • 可以使用转义序列用来表示特殊字符
  • 转义序列以  开始
  • 注意 NUL 字节与 NULL值不同;NUL 为一个零值字节,而 NULL 代表没有值
序列涵义
\0ASCII 0(NUL)字符
\n新行符
\r回车符(Windows中使用 \r\n 作为新行标志)
\t定位符
\b退格符
'单引号
"双引号
\反斜杠\
%百分号%
_下划线_
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类型可以存储非常多的数据

转载于:https://www.cnblogs.com/cg-Yun/p/5686776.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值