MySQL——数据类型和表的操作

目录

一、常用数据类型分类

二、数据值类型

三、字符串类型

四、日期类型

五、表的操作

[5.1 查看所有表](#5.1 查看所有表)

[5.2 创建表](#5.2 创建表)

[5.3 查看表结构](#5.3 查看表结构)

[5.4 修改表](#5.4 修改表)

[5.5 删除表](#5.5 删除表)


一、常用数据类型分类

与其他编程语言类似,SQL中也规定了用于描述属性的数据类型。常用的数据类型有以下几类:

  • 数据值类型
  • 字符串类型
  • 二进制类型
  • 日期类型

二、数据值类型

|--------------------------|-------|---------------------------------------------------------------------------------------------------------------------|
| 类型 | 大小 | 说明 |
| BIT[(M)] | 默认bit | M表示每个值的位数,取值范围为1~64。如果省略M,则默认为1 |
| TINYINT[(M)] | 1byte | 取值范围-2^7~2^7-1,无符号取值范围2^8-1 |
| BOOL | 1byte | TINYINT(1)的同义词。值为零被认为是假,非零值被认为是true |
| SMALLINT[(M)] | 2byte | 取值范围 -2^15 ~ 2^15-1 ,⽆符号取值范围 2^16-1 |
| MEDIUMINT[(M)] | 3byte | 取值范围 -2^23 ~ 2^23-1 ,⽆符号取值范围 2^24-1 |
| INT[(M)] | 4byte | 取值范围 -2^31 ~ 2^31-1 ,⽆符号取值范围 2^32-1 |
| INTEGER[(M)] | 4byte | INT[(M)]的同义词 |
| BIGINT[(M)] | 8byte | 取值范围 -2^63 ~ 2^63-1 ,⽆符号取值范围 2^64-1 |
| FLOAT[(M,D)] | 4byte | 单精度浮点型,M是总位数,D是⼩数点后⾯的位数,⼤约可以精确到⼩数点后7位 |
| DOUBLE[(M,D)] | 8byte | 双精度浮点型,M是总位数,D是⼩数点后⾯的位数,⼤约可以精确到⼩数点后15位。 |
| DECIMAL[(M[,D])] | 动态 | 不存在精度损失,M是总位数,D是⼩数点后的位数。DECIMAL的最⼤位数(M)为65,最⼤⼩数位数(D)为30。如果省略M,则默认为10,如果省略D,则默认为0。M中不计算⼩数点和负数的-号,如果D为0,则值没有⼩数点和⼩数部分。 |

三、字符串类型

|------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 类型 | 说明 |
| CHAR[(M)] | 固定⻓度字符串, M 表⽰⻓度,以字符为单位,取值范围 0 ~ 255 , M 省略则⻓度为 1 |
| VARCHAR(M) | 可变⻓度字符串, M 表⽰字符最⼤⻓度,的范围 0 ~ 65535 ,有效字符个数取决于实际字符数和使⽤的字符集 |
| TINYTEXT | ⼩⽂本类型,最⼤⻓度为 255 (2^8-1)个字符,有效字符个数取决于使⽤的字符 集 |
| TEXT[(M)] | ⽂本类型,最⼤⻓度为 65535 (2^16-1)个字符,有效字符个数取决于使⽤的字符集 |
| MEDIUMTEXT | 中⽂本类型,最⼤⻓度为 16,777,215 (2^24-1)个字符,有效字符个数取决于使 ⽤的字符集 |
| LONGTEXT | ⼤⽂本类型,最⼤⻓度为 4,294,967,295 即 4GB (2^32-1)个字符,有效字符 个数取决于使⽤的字符集 |
| BINARY[(M)] | 固定⻓度⼆进制字节,于CHAR类似,但存储的是⼆进制字节⽽不是字符串。 M 表 ⽰⻓度,以字节为单位,取值范围 0 ~ 255 ,M 省略则⻓度为 1 |
| VARBINARY(M) | 可变⻓度⼆进制字节,于VARCHAR类似,但存储的是⼆进制字节⽽不是字符串。 M 表⽰⻓度,以字节为单位 |
| TINYBLOB | ⼩⼆进制字节类型,最⼤⻓度为 255 (2^8-1)个字节 |
| BLOB[(M)] | ⼆进制字节类型,最⼤⻓度为 65535 (2^16-1)个字节 |
| MEDIUMBLOB | 中⼆进制字节类型,最⼤⻓度为 16,777,215 (2^24-1)个字节 |
| LONGBLOB | ⼤⼆进制字节类型,最⼤⻓度为 4,294,967,295 即 4GB (2^8-1)个字节 |
| ENUM('value1','valu e2',...) | • 枚举 • 从值列表 中选⼀个值 • 最多可以有 65,535 个不同的元素 • 单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字符⻓度, w 是字符集中字符所需的最⼤字节数 • ENUM的值在内部表⽰为整数'value1','value2' 或 ''(空字符串) 和 NULL |
| SET('value1','value 2',...) | • 集合 • 从值列表 'value1','value2' 中选零个或多个值 • 最多64个元素 • 单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字符⻓度, w 是字符集中字符所需的最⼤字节数 • SET值在内部表⽰为整数 |

四、日期类型

|-----------------------|--------|--------------------------------------------------------------------------------------------------------------------------------------------------|----------------------|
| 类型 | 大小 | 说明 | 0值 |
| TIMESTAMP[(fsp)] | 4bytes | • 时间戳类型 • ⽀持范围 1970-01-01 00:00:01.000000 ~ 20388-01-19 03:14:07.499999 • 0值为 0000-00-00 00:00:00 | 0000-00- 0000:00:00 |
| DATETIME[(fsp)] | 8bytes | • ⽇期类型和时间类型的组合 •⽀持范围 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999 • 显⽰格式为 YYYY-MM-DD hh:mm:ss[.fraction] • 0值为 0000-00-00 00:00:00 | 0000-00- 00 00:00:00 |
| DATE | 3bytes | • ⽇期类型 • ⽀持范围 1000-01-01 ~ 9999-12-31 • 显⽰格式为 YYYY-MM-DD • 0值为 0000-00-00 | |
| TIME[(fsp)] | 3bytes | • 时间类型 • ⽀持范围 -838:59:59.000000 ~ 838:59:59.000000 • 显⽰格式为 hh:mm:ss[.fraction] • 0值为 00:00:00 | 00:00:00 |
| YEAR[(4)] | 1byte | • 4位格式的年份 • ⽀持范围 1901 ~ 2155 • 显⽰格式为 YYYY • 0值为 0 | 0 |

• fsp 为可选设置,⽤来指定⼩数秒精度,范围从0到6,值为0表⽰没有⼩数部分,如果省略,默认

精度为0

• CURRENT_DATE和 CURRENT_DATE() 是 CURDATE() 的同义词⽤于获取当前⽇期

• CURRENT_TIME和CURRENT_TIME([fsp]) 是CURTIME() 的同义词⽤于获取当前时间

• CURRENT_TIMESTAMP和CURRENT_TIMESTAMP([fsp]) 是 NOW() 的同义词⽤于获取当前⽇期和时间

五、表的操作

5.1 查看所有表

show tables;

5.2 创建表

CREATE [TEMPORARY]TABLE [IF NOT EXISTS] tbl_name

field datatype [约束] [comment '注解内容']

, field datatype \[约束\] \[comment '注解内容'\]\] ... ) \[engine 存储引擎\] \[**character set** 字符集\] \[**collate** 排序规则\];

  • TEMPORARY:表⽰创建的是⼀个临时表
  • field:列名
  • datatype:数据类型
  • comment:对列的描述或说明
  • engine:存储引擎,不指定则使⽤默认存储引擎
  • character set:字符集,不指定则使⽤默认字符集
  • collate:排序规则,不指定则使⽤默认排序规则

创建了一个user表,含四个列,id,name,password,birthday

5.3 查看表结构

desc 表名

  • Field:表中的列名
  • Type:列的数据类型
  • Null:该列的值是否允许为Null
  • Key:该列的索引类型
  • Default:该列的默认值
  • Extra:扩展信息

5.4 修改表

ALTER TABLE tbl_name [alter_option [, alter_option] ...];

alter_option: {

table_options

| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]

| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

| DROP [COLUMN] col_name

| RENAME COLUMN old_col_name TO new_col_name

| RENAME [TO | AS] new_tbl_name

  • tbl_name:要修改的表名
  • ADD:向表中添加列
  • MODIFY:修改表中现有的列
  • DROP:删除表中现有的列
  • RENAME COLUMN:重命名表中现有的列
  • RENAME [TO | AS] new_tbl_name:重命名当前的表

向users表中添加一列assets

修改asses列的长度

重命名assets列为avatar列

删除avatar列

重命名users表为employee

5.5 删除表

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

  • TEMPORARY:表⽰临时表
  • tbl_name:将要删除的表名

删除employee表

  • 删除表是⼀个危险操作,执⾏删除语句时⼀定要谨慎
  • 删除表成功后,磁盘上对应的数据⽂件也会被删除
  • ⼀次可以删除多个表,表与表之间⽤逗号隔开
相关推荐
FJW0208141 分钟前
关系型数据库大王Mysql——DML语句操作示例
数据库·mysql
禁默11 分钟前
基于金仓KFS工具,破解多数据并存,浙人医改造实战医疗信创
数据库·人工智能·金仓数据库
pen-ai28 分钟前
【数据工程】15. Stream Query Processing
数据库
舰长11543 分钟前
ubuntu24安装mysql遇到的坑----解决Mysql报错缺少libaio.so.1
linux·mysql·ubuntu
it码喽1 小时前
Redis存储经纬度信息
数据库
星光一影1 小时前
快递比价寄件系统技术解析:基于PHP+Vue+小程序的高效聚合配送解决方案
vue.js·mysql·小程序·php
小马哥编程1 小时前
【软件架构】数据库系统与缓存设计:五种缓存一致性方案
数据库·缓存
DemonAvenger2 小时前
Redis持久化策略对比:RDB与AOF的最佳实践与场景选择
数据库·redis·性能优化
新手小白*2 小时前
Redis Sentinel哨兵集群
数据库·redis·sentinel
一 乐2 小时前
商城推荐系统|基于SprinBoot+vue的商城推荐系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·商城推荐系统