MySQL DDL 操作

MySQL DDL 操作_第1张图片

1.1 数据库操作

1.1.1 库创建相关操作

语法

# 创建名为 db_name 的数据库
create database db_name;

# 创建并设置字符集,可简写 charset
create database db_name character set char_name;

# db_name 数据库不存在时创建名为 db_name 的数据库
create database if not exists db_name;

# 使用名为 db_name 的数据库
use db_name;

# 查看正在使用的数据库
select database();

# 查询指定数据库
show create database db_name;

示例
MySQL DDL 操作_第2张图片
MySQL DDL 操作_第3张图片
MySQL DDL 操作_第4张图片



1.1.2 库修改相关操作

语法

# 修改名为 db_name 的数据库的字符集为 char_name
alter database db_name charset char_name;

# 不建议修改数据库名称,若必须修改名称建议创建新的数据库然后将表复制过去。

示例
MySQL DDL 操作_第5张图片


1.1.3 库删除相关操作

语法

# 删除名为 db_name 的数据库
drop database db_name;

# 若 db_name 存在则删除
drop database if exists db_name;

示例
MySQL DDL 操作_第6张图片



1.2 表操作

1.2.1 表创建相关操作

语法

# 创建名为 tb_name 的表,最后一个字段后不加 , 
create table tb_name(
  	 col_name type,
     col_name type,
     ···
     col_name type
);

# 查询当前使用的数据库中所有表
show tables;

# 查询名为 tb_name 的表结构
desc tb_name;

# 查询名为 tb_name 表中所有数据
select * from tb_name;

# 查询名为 tb_name 表的建表语句
show create table tb_name;

示例
MySQL DDL 操作_第7张图片


1.2.2 表修改相关操作

语法

# 将 old_tb_name 表名修改为 new_tb_name
alter table old_tb_name rename to new_tb_name;

# 给 tb_table 表怎加一列名为 col_name 类型为 type 的列
alter table tb_name add col_name type;

# 修改 tb_name 表 old_col_name 列列名和数据类型
alter table tb_name change old_col_name new_col_name type;

# 修改 tb_name 表 col_name 列数据类型
alter table tb_name modify col_name type;

示例
MySQL DDL 操作_第8张图片
MySQL DDL 操作_第9张图片
MySQL DDL 操作_第10张图片


1.2.3 表删除相关操作

语法

# 删除 tb_table 表中名为 col_name 的列
alter table tb_name drop col_name;

# 删除名为 tb_name 的表
drop table tb_name;

示例
MySQL DDL 操作_第11张图片
MySQL DDL 操作_第12张图片



1.3 数据类型

1.3.1 概述

MySQL 常有的数据类型如下
整数类型:bitbooltinyintsmallintmediumintintbigint
浮点类型:floatdoubledecimal
字符串类型:charvarchartinytexttextmediumtextlongtexttinyblobblobmediumbloblongblob
日期类型:DateDateTimeTimeStampTimeYear


1.3.2 整数类型

数据类型 含义(有符号数)
tinyint(n) 1个字节 范围 [-27 ~ 27 - 1]
smallint(n) 2个字节 范围 [-215 ~ 215 - 1]
mediumint(n) 3个字节 范围 [-223 ~ 223 - 1]
int(n) 4个字节 范围 [-231 ~ 231 - 1]
bigint(n) 8个字节 范围 [-263 ~ 263 - 1]

  取值范围如果加了unsigned,则变为无符号数,最小值为 0,最大值阶次加 1。例如:tinyint unsigned 取值范围为:[0 ~ 28 - 1]。无论括号中 n 等于多少,int 永远占 4 个字节 n 表示的是显示宽度,不足的用 0 补足,超过的无视长度而直接显示整个数字,但需要整型设置了 unsigned zerofill 才有效。

示例
MySQL DDL 操作_第13张图片
  为什么只使用了 zerofill 也会补 0,我们查看建表语句会发现,使用了 zerofill 会自动将无符号数提升为有符号数,等同于使用了 unsigned zerofill 。
MySQL DDL 操作_第14张图片


1.3.3 浮点类型

  float 数值类型用于表示单精度浮点数值,而 double 数值类型用于表示双精度浮点数值,float 和 double 都是浮点型,而 decimal 是定点型。decimal 采用的是四舍五入,float 和 double 采用的是四舍六入五成双(就是 5 以下舍弃 5 以上进位,如果需要处理数字为 5 的时候,需要看 5 后面是否还有不为 0 的任何数字,如果有,则直接进位,如果没有,需要看 5 前面的数字,若是奇数则进位,若是偶数则舍掉),使用浮点类型时建议选择 decimal。

数据类型 说明
float(m,n) 单精度浮点型 8位精度(4字节) m 总个数,n小数位
double(m,n) 双精度浮点型 16位精度(8字节) m 总个数,n小数位
decimal(m,n) 定点类型 总个数 m < 65,小数位 n < 30 且 n

1.3.4 字符串类型

数据类型 说明
char(n) 固定长度,最多 28 - 1 个字符
varchar(n) 固定长度,最多 216 - 1 个字符
tinytext 可变长度,最多 28 - 1 个字符
text 可变长度,最多 216 - 1 个字符
mediumtext 可变长度,最多 224 - 1 个字符
longtext 可变长度,最多 232 - 1 个字符
tinyblob 二进制数据,仅255个字符
blob 二进制数据,最大限制到65K字节
mediumblob 二进制数据,限制到16M字节
longblob: 二进制数据,可达4GB

注意
 ① char(n) 固定长度,char 不管是存入几个字符,都将占用 4 个字节,故 char(n) 若存入字符数小于 n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格。
 ② varchar 是存入的实际字符数 +1 个字节(n <= 255)或 2 个字节(n > 255)。
 ③ varchar可指定长度,text 不能指定长度,也不能有默认值。text 是实际字符数 +2 个字节。


1.3.5 日期类型

数据类型 说明
date 日期 2020-06-29
time 时间 12:12:12
datetime 日期时间 2020-06-09 12:12:12
timestamp 时间戳

注意
 ① 若定义一个字段为 timestamp,该字段存放的时间戳会随表中其他字段修改的时候自动刷新。
 ② 记录时间的建议使用 bigint 类型,将时间转换为时间戳,如将时间转换为毫秒进行存储,方便使用索引。




关注公众号一起学习 Java 开发,跟大家分享我的学习成长过程

在这里插入图片描述

你可能感兴趣的:(MySQL)