☞ 语法
# 创建名为 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;
☞ 示例
☞ 语法
# 修改名为 db_name 的数据库的字符集为 char_name
alter database db_name charset char_name;
# 不建议修改数据库名称,若必须修改名称建议创建新的数据库然后将表复制过去。
☞ 示例
语法
# 删除名为 db_name 的数据库
drop database db_name;
# 若 db_name 存在则删除
drop database if exists db_name;
☞ 示例
☞ 语法
# 创建名为 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;
☞ 示例
☞ 语法
# 将 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;
☞ 示例
☞ 语法
# 删除 tb_table 表中名为 col_name 的列
alter table tb_name drop col_name;
# 删除名为 tb_name 的表
drop table tb_name;
☞ 示例
MySQL 常有的数据类型如下
整数类型:bit
、bool
、tinyint
、smallint
、mediumint
、int
、bigint
浮点类型:float
、double
、decimal
字符串类型:char
、varchar
、tinytext
、text
、mediumtext
、longtext
、tinyblob
、blob
、mediumblob
、longblob
日期类型:Date
、DateTime
、TimeStamp
、Time
、Year
数据类型 | 含义(有符号数) |
---|---|
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 才有效。
☞ 示例
为什么只使用了 zerofill 也会补 0,我们查看建表语句会发现,使用了 zerofill 会自动将无符号数提升为有符号数,等同于使用了 unsigned zerofill 。
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<m |
数据类型 | 说明 |
---|---|
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 个字节。
数据类型 | 说明 |
---|---|
date | 日期 2020-06-29 |
time | 时间 12:12:12 |
datetime | 日期时间 2020-06-09 12:12:12 |
timestamp | 时间戳 |
☞ 注意 ① 若定义一个字段为 timestamp,该字段存放的时间戳会随表中其他字段修改的时候自动刷新。 ② 记录时间的建议使用 bigint 类型,将时间转换为时间戳,如将时间转换为毫秒进行存储,方便使用索引。