前言:

本文内容:列的数据类型详解、数据库的字段属性、创建数据库表

推荐免费MySQL基础讲解视频:【狂神说Java】MySQL最新教程通俗易懂_哔哩哔哩_bilibili

列的数据类型详解

数值

  • tinyint 1个字节(很分小的数据)
  • smallint 2个字节(较小的数据)
  • int 4个字节(标准整数)
  • bigint 8个字节
  • float 4个字节(浮点数)
  • double 8个字节(浮点数)
  • decimal 字符串形式浮点(金融计算使用)

字符串

  • char 字符串固定大小 0-255
  • varchar 可变字符串 0-65535
  • tinytext 微型文本 2^8-1
  • text 文本串 2^16-1

时间日期

  • date 日期类型 YYYY-MM-DD
  • time 时间类型 HH:mm:ss
  • datetime 日期时间类型 YYYY-MM-DD HH:mm:ss
  • timestramp 时间戳 1970.1.1到现在的毫秒数
  • year 年份

null

  • 没有值,位置
  • 尽量不要使用null进行运算,结果为null

数据库的字段属性

Unsigned

  • 无符号的整数
  • 改列不能声明为负数

zerofill

  • 0填充的
  • 不足的位数使用0来填充 int(3) 5(005)

自增长(AUTO_INCREMENT)

  • 自动在上一条记录的基础上+1
  • 通常用来设计唯一的主键~index,必须是整数类型
  • 可以自定义设计主键自增的起始值和步长

非空(null,not null)

  • 设置为not null后,不给它赋值就会报错
  • null,如果不填值,默认为null

默认

  • 设置默认的值
  • 赋值的时候不给值,则会使用默认值

主键(PRIMARY KEY)

  • 每个表只能定义一个主键。
  • 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。
  • 一个字段名只能在联合主键字段表中出现一

拓展

1
2
3
4
5
6
7
/*
id 主键
'version' 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
*/

创建数据库表

创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
注意:
auto_increment 自增长
字段名用英文尽量用''括起来
所有的语句后加, 最后一个不加
primary key 主键 每个表只有一个

*/
create table if not exists `student`(
`id` int(4) not null auto_increment comment '学号',
`name` varchar(20) not null default '佚名' comment '姓名',
`pwd` varchar(20) not null default '123456' comment '密码',
`sex` varchar(2) not null default '男' comment '性别',
`birthday` datetime default null comment '出生年月',
`address` varchar(100) default null comment '地址',
`email` varchar(50) default null comment '邮箱',
primary key(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 查询
SELECT * FROM STUDENT

格式

1
2
3
4
5
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名` 列类型[属性][索引][注释],
`字段名` 列类型[属性][索引][注释],
`字段名` 列类型[属性][索引][注释]
)[表类型][字符集设置][注释]

常用命令

1
2
3
show create database student; --查看出啊关键数据库语句
show create table student; --查看student数据表的定义
desc student; --显示表的结构